1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromeos/components/quick_answers/utils/translation_v2_utils.h"
#include <algorithm>
#include <array>
#include <string_view>
#include "ui/base/l10n/l10n_util.h"
namespace quick_answers {
namespace {
// Supported locales list of Translate v2 API.
//
// This list is manually pulled and crafted from
// https://cloud.google.com/translate/docs/languages.
//
// We use this hard-coded list for checking supported locales of Translate v2
// API. This list should be periodically updated if the list of the API changes.
//
// `TranslationV2Utils::IsSupported` only cares lang part of a locale. But this
// locale list can contain non-lang part as well. Our code process this list to
// do a check with lang parts.
//
// TODO(b/277757989): Add an optional automated test for translation v2 language
// list
constexpr auto kSupportedLocales = std::to_array<std::string_view>({
"af", "ak", "am", "ar", "as", "ay", "az", "be", "bg", "bho",
"bm", "bn", "bs", "ca", "ceb", "ckb", "co", "cs", "cy", "da",
"de", "doi", "dv", "ee", "el", "en", "eo", "es", "et", "eu",
"fa", "fi", "fil", "fr", "fy", "ga", "gd", "gl", "gn", "gom",
"gu", "ha", "haw", "he", "hi", "hmn", "hr", "ht", "hu", "hy",
"id", "ig", "ilo", "is", "it", "iw", "ja", "jv", "jw", "ka",
"kk", "km", "kn", "ko", "kri", "ku", "ky", "la", "lb", "lg",
"ln", "lo", "lt", "lus", "lv", "mai", "mg", "mi", "mk", "ml",
"mn", "mni-Mtei", "mr", "ms", "mt", "my", "ne", "nl", "no", "nso",
"ny", "om", "or", "pa", "pl", "ps", "pt", "qu", "ro", "ru",
"rw", "sa", "sd", "si", "sk", "sl", "sm", "sn", "so", "sq",
"sr", "st", "su", "sv", "sw", "ta", "te", "tg", "th", "ti",
"tk", "tl", "tr", "ts", "tt", "ug", "uk", "ur", "uz", "vi",
"xh", "yi", "yo", "zh-CN", "zh-TW", "zh", "zu",
});
} // namespace
// static
bool TranslationV2Utils::IsSupported(std::string_view language) {
return std::ranges::any_of(kSupportedLocales, [&](std::string_view locale) {
return language == l10n_util::GetLanguage(locale);
});
}
} // namespace quick_answers
|