language_util_linux.cc 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. // Copyright (c) 2020 GitHub, Inc.
  2. // Use of this source code is governed by the MIT license that can be
  3. // found in the LICENSE file.
  4. #include "shell/common/language_util.h"
  5. #include <glib.h>
  6. #include "base/check.h"
  7. #include "base/i18n/rtl.h"
  8. namespace electron {
  9. std::vector<std::string> GetPreferredLanguages() {
  10. std::vector<std::string> preferredLanguages;
  11. // Based on
  12. // https://source.chromium.org/chromium/chromium/src/+/refs/tags/108.0.5329.0:ui/base/l10n/l10n_util.cc;l=543-554
  13. // GLib implements correct environment variable parsing with
  14. // the precedence order: LANGUAGE, LC_ALL, LC_MESSAGES and LANG.
  15. const char* const* languages = g_get_language_names();
  16. DCHECK(languages); // A valid pointer is guaranteed.
  17. DCHECK(*languages); // At least one entry, "C", is guaranteed.
  18. for (; *languages; ++languages) {
  19. if (strcmp(*languages, "C") != 0) {
  20. preferredLanguages.push_back(base::i18n::GetCanonicalLocale(*languages));
  21. }
  22. }
  23. return preferredLanguages;
  24. }
  25. } // namespace electron