# Copyright 2015 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.

webapp_locale_dir = "$root_gen_dir/remoting/webapp/_locales"

# See also remoting_locales_with_underscores below.
remoting_locales = [
  "am",
  "ar",
  "bg",

  "bn",
  "ca",
  "cs",
  "da",
  "de",
  "el",
  "en",
  "en-GB",
  "es",
  "et",

  "fa",
  "fi",
  "fil",
  "fr",

  "gu",
  "he",
  "hi",
  "hr",
  "hu",
  "id",
  "it",
  "ja",

  "kn",
  "ko",
  "lt",
  "lv",

  "ml",
  "mr",
  "ms",
  "nb",
  "nl",
  "pl",
  "pt-PT",
  "ro",
  "ru",
  "sk",
  "sl",
  "sr",
  "sv",

  "sw",
  "ta",
  "te",
  "th",
  "tr",
  "uk",
  "vi",
  "zh-CN",
  "zh-TW",
]

# Some locales have hyphens in the names but for some uses underscores are
# needed.
remoting_locales_with_underscores = remoting_locales
remoting_locales_with_underscores -= [
  "en-GB",

  "pt-PT",
  "zh-CN",
  "zh-TW",
]
remoting_locales_with_underscores += [
  "en_GB",

  "pt_PT",
  "zh_CN",
  "zh_TW",
]

if (!is_official_build) {
  remoting_locales += [ "fake-bidi" ]
  remoting_locales_with_underscores += [ "fake_bidi" ]
}

# An additional locale "en-US" is generated for ChromeOS and Chrome on iOS.
# TODO(yuweih): Our build script doesn't seem to work with en-US and Chrome
# on iOS doesn't seem to have en-US.lproj. Add is_ios back if we do need to
# work with en-US.
if (is_chromeos) {
  remoting_locales += [ "en-US" ]
  remoting_locales_with_underscores += [ "en_US" ]
}

# Locales "pt-BR" and "es-419" are named "pt" and "es-MX" respectively on iOS.
if (!is_ios) {
  remoting_locales += [
    "pt-BR",
    "es-419",
  ]
  remoting_locales_with_underscores += [
    "pt_BR",
    "es_419",
  ]
} else {
  remoting_locales += [
    "pt",
    "es-MX",
  ]
  remoting_locales_with_underscores += [
    "pt",
    "es_MX",
  ]
}

messages_locales = remoting_locales_with_underscores

remoting_android_locales = [
  "am",
  "ar",
  "bg",
  "ca",
  "cs",
  "da",
  "de",
  "el",
  "en-rGB",
  "es",
  "es-rUS",
  "fa",
  "fi",
  "fr",
  "hi",
  "hr",
  "hu",
  "in",
  "it",
  "iw",
  "ja",
  "ko",
  "lt",
  "lv",
  "nb",
  "nl",
  "pl",
  "pt-rBR",
  "pt-rPT",
  "ro",
  "ru",
  "sk",
  "sl",
  "sr",
  "sv",
  "sw",
  "th",
  "tl",
  "tr",
  "uk",
  "vi",
  "zh-rCN",
  "zh-rTW",
]

# The list of .json files generated by remoting_strings.grd.
remoting_webapp_locale_files =
    process_file_template(
        messages_locales,
        [ "remoting/webapp/_locales/{{source_name_part}}/messages.json" ])
