File: translation_v2_utils.cc

package info (click to toggle)
chromium 139.0.7258.127-2
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 6,122,156 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (57 lines) | stat: -rw-r--r-- 2,376 bytes parent folder | download | duplicates (3)
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