| # 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_apk_locales| subset for Android based apk builds |
| # - |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 |
| |
| # Android doesn't ship all locales in order to save space (but webview does). |
| # http://crbug.com/369218 |
| android_apk_omitted_locales = [ |
| "bn", |
| "et", |
| "gu", |
| "kn", |
| "ml", |
| "mr", |
| "ms", |
| "ta", |
| "te", |
| ] |
| |
| # 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([ "android_apk_omitted_locales" ]) |
| 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 |
| |
| # Android doesn't ship all locales on KitKat in order to save space |
| # (but webview does). http://crbug.com/369218 |
| android_apk_locales = all_chrome_locales - android_bundle_only_locales - |
| android_apk_omitted_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 |
| } |