         data: project_i18n_js_file,
         bare: false
 
+      # For the browser arch add the base language file translation of the project
+      # to the bundle (if tap-i18n is enabled in the project level and the file exists)
+      if arch == "browser"
+        project_translations_dir = projectTapI18n.languages_files_dir
+
+        if project_translations_dir?
+          if not fs.existsSync project_translations_dir
+            log "Couldn't find project translations directory - no project level translations"
+          else
+            project_lang_files_dir_map = mapLangFilesDir project_translations_dir
+            if project_translations_dir?
+              if fs.existsSync project_translations_dir
+                # If the base language was translated in the project level, add it to the bundle
+                if fallback_language of project_lang_files_dir_map
+                  fallback_language_file = project_lang_files_dir_map[fallback_language]
+
+                  try
+                    lang_json = JSON.parse(fs.readFileSync(fallback_language_file))
+                  catch error
+                    throw new Meteor.Error 500, "Project fallback language file (#{fallback_language}) has an invalid JSON: `#{fallback_language_file}'",
+                      {file_path: fallback_language_file, error: error}
+
+                  if not _.isObject lang_json
+                    throw new Meteor.Error 500, "Project fallback language file (#{fallback_language}) should contain a JSON object: `#{fallback_language_file}'",
+                      {file_path: fallback_language_file}
+
+                  project_fallback_lang_translation_js_file =
+                    """
+                    // add the project translations for the fallback language
+                    TAPi18next.addResourceBundle('#{fallback_language}', '#{globals.project_translations_domain}', #{JSON.stringify lang_json});
+
+                    """
+
+                  compileStep.addJavaScript
+                    path: "project-fallback-lang-translations.js",
+                    sourcePath: compileStep.inputPath,
+                    data: project_fallback_lang_translation_js_file,
+                    bare: false
+
+  # To tell whether or not we are in a new build cycle we assume that if the
+  # same file triggered a call to that function for the same architecture we
+  # are in a new cycle
+  current_step_file = "#{compileStep._fullInputPath}::#{compileStep.arch}"
+
+  # Once per build cycle - regardless of arch
+  #
+  # If the build_files_once_log is empty or if the current_step_file is already
+  # in the log - we are in a new build cycle
+  if _.isEmpty(build_files_once_log) or (current_step_file of build_files_once_log)
+    # Init logs
+    build_files_once_log = {}
+    build_files_once_arch_log = {}
+
+    oncePerCycle()
+
+  # Once per ARCH per build cycle
+  if not (compileStep.arch of build_files_once_arch_log)
     build_files_once_arch_log[compileStep.arch] = true
+
+    oncePerCyclePerArch(compileStep.arch)
 
   # Same build cycle - log file
   build_files_once_log[current_step_file] = true


    # Make sure package has a translation file for the fallback language
    if not (fallback_language of languages_files)
      rollback()
      throw new Meteor.Error 500, "Package #{package_map.name} has no language file for the fallback language (#{fallback_language})"

    # Make sure we have the base language translations file for every dialect

      throw new Meteor.Error 500, "Failed to build unified languages files. Failed to create a file: #{lang_file_path}",
        {lang_file_path: lang_file_path, error: error}

build_files_once_log = {}
build_files_once_arch_log = {}
projectTapI18n = null
unified_languages_files = {}
buildFilesOnce = (compileStep) ->
  # Builds the unified languages files and the project configuration once
  # per build cycle

  oncePerCycle = () ->
    # Reload the project configuration
    projectTapI18n = loadProjectConf()

    # Generate and build the unified languages files only
    # if tap-i18n is enabled in the project level
    if projectTapI18n?
      unified_languages_files =
        getUnifiedLangFiles projectTapI18n.supported_languages, projectTapI18n.languages_files_dir

      addUnifiedFilesAsFsFiles unified_languages_files, projectTapI18n.build_files_path

      # If the supported languages for that project haven't been specified - all
      # the languages we have a unified language file for (and the fallback
      # language) are supported 
      projectTapI18n.supported_languages ?= _.union([fallback_language], _.keys unified_languages_files)

      projectTapI18n.unified_lang_files_map = _.object _.map(unified_languages_files, (content, lang) -> [lang, if content != "{}" then true else false])

      # Map supported language tags with respective titles in english and native
      projectTapI18n.language_names = {}
