# 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",
  "es-419",
  "et",

  "fa",
  "fake-bidi",
  "fi",
  "fil",
  "fr",

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

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

  "ml",
  "mr",
  "ms",
  "nb",
  "nl",
  "pl",
  "pt-BR",
  "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",
  "es-419",

  "fake-bidi",
  "pt-BR",
  "pt-PT",
  "zh-CN",
  "zh-TW",
]
remoting_locales_with_underscores += [
  "en_GB",
  "es_419",

  "fake_bidi",
  "pt_BR",
  "pt_PT",
  "zh_CN",
  "zh_TW",
]

if (is_chromeos) {
  remoting_locales += [ "en-US" ]
  remoting_locales_with_underscores += [ "en_US" ]
}

messages_locales = remoting_locales_with_underscores
if (!is_chromeos) {
  # The messages output includes a separate one for en-US that the pak ones
  # don't have. We don't need to do this on ChromeOS since en_US is in the
  # locales list be default there.
  messages_locales += [ "en_US" ]
}

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" ])
