# Copyright 2014 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//build/config/chromeos/ui_mode.gni") # This file creates the |locales| which is the set of current # locales based on the current platform. Locales in this list are formated # based on what .pak files expect. # The |locales| variable *may* contain pseudolocales, depending on the # |enable_pseudolocales| flag. # If you specifically want to have the locales variable with or without # pseudolocales, then use |locales_with_pseudolocales| or # |locales_without_pseudolocales|. # The following additional platform specific lists are created: # - |android_bundle_locales_as_resources| locales formatted for XML output names # - |locales_as_mac_outputs| formated for mac output bundles # - |ios_packed_locales| subset for iOS # - |ios_packed_locales_as_mac_outputs| subset for iOS output # Chrome on iOS only ships with a subset of the locales supported by other # version of Chrome as the corresponding locales are not supported by the # operating system (but for simplicity, the corresponding .pak files are # still generated). ios_unsupported_locales = [ "am", "bn", "et", "fil", "gu", "kn", "lv", "ml", "mr", "sl", "sw", "ta", "te", ] # These list are defined even when not building for Android or iOS for the # sake of build/locale_tool.py. Ensure that GN doesn't complain about them # being unused. not_needed([ "ios_unsupported_locales" ]) # Superset of all locales used in Chrome with platform specific changes noted. all_chrome_locales = [ "af", "am", "ar", "as", "az", "be", "bg", "bn", "bs", "ca", "cs", "da", "de", "el", "en-GB", "en-US", "es", "es-419", # "es-MX" in iOS (Mexico vs Latin America) "es-US" on Android "et", "eu", "fa", "fi", "fil", # "tl" in .xml but "fil" in TC and .pak "fr", "fr-CA", "gl", "gu", "he", # "iw" in .xml and TC but "he" in .pak "hi", "hr", "hu", "hy", "id", # "in" in .xml but "id" in TC and .pak "is", "it", "ja", "ka", "kk", "km", "kn", "ko", "ky", "lo", "lt", "lv", "mk", "ml", "mn", "mr", "ms", "my", "nb", # "no" in TC but "nb" in .xml and .pak "ne", "nl", "or", "pa", "pl", "pt-BR", # just "pt" in iOS "pt-PT", "ro", "ru", "si", "sk", "sl", "sq", "sr", "sr-Latn", # -b+sr+Latn in .xml "sv", "sw", "ta", "te", "th", "tr", "uk", "ur", "uz", "vi", "zh-CN", "zh-HK", "zh-TW", "zu", ] # New locales added to Chrome Android bundle builds. android_bundle_only_locales = [ "af", "as", "az", "be", "bs", "eu", "fr-CA", "gl", "hy", "is", "ka", "kk", "km", "ky", "lo", "mk", "mn", "my", "ne", "or", "pa", "si", "sq", "sr-Latn", "ur", "uz", "zh-HK", "zu", ] # New locales added to ChromeOS builds. chromeos_only_locales = [ "is" ] if (is_android) { locales = all_chrome_locales # List for Android locale names in .xml exports. Note: needs to stay in sync # with |ToAndroidLocaleName| in build/android/gyp/util/resource_utils.py. # - add r: (e.g. zh-HK -> zh-rHK ) android_bundle_locales_as_resources = [] foreach(_locale, locales) { android_bundle_locales_as_resources += [ string_replace(_locale, "-", "-r") ] } # - remove en-US # - swap: (he, id, en-419, fil) -> (iw, in, es-rUS, tl) # - sr-rLatn -> -b+sr+Latn android_bundle_locales_as_resources -= [ "en-rUS", "es-r419", "fil", "he", "id", "sr-rLatn", ] android_bundle_locales_as_resources += [ "b+sr+Latn", "es-rUS", "in", "iw", "tl", ] } else if (is_chromeos_ash || is_chromeos_lacros) { # In ChromeOS we support a few more locales than standard Chrome. locales = all_chrome_locales - android_bundle_only_locales + chromeos_only_locales } else { # Change if other platforms support more locales. locales = all_chrome_locales - android_bundle_only_locales } # Chrome on iOS uses different names for "es-419" and "pt-BR" (called # respectively "es-MX" and "pt" on iOS). if (is_ios) { locales -= [ "es-419", "pt-BR", ] locales += [ "es-MX", "pt", ] } pseudolocales = [ "ar-XB", "en-XA", ] locales_without_pseudolocales = locales locales_with_pseudolocales = locales + pseudolocales declare_args() { # We want to give pseudolocales to everyone except end-users (devs & QA). enable_pseudolocales = !is_official_build } if (enable_pseudolocales) { # Note that this only packages the locales in, and doesn't add the ui to enable them. locales += pseudolocales } # Same as the locales list but in the format Mac expects for output files: # it uses underscores instead of hyphens, and "en" instead of "en-US". locales_as_mac_outputs = [] foreach(locale, locales) { if (locale == "en-US") { locales_as_mac_outputs += [ "en" ] } else { locales_as_mac_outputs += [ string_replace(locale, "-", "_") ] } } if (is_ios) { ios_packed_locales = locales - ios_unsupported_locales ios_packed_locales_as_mac_outputs = locales_as_mac_outputs - ios_unsupported_locales }