blob: 63f7cd7ac7947f51ba0512b5cead5c3cdb3930d6 [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/language/core/common/locale_util.h"
#include <stddef.h>
#include <algorithm>
#include <string_view>
#include "ui/base/l10n/l10n_util.h"
namespace language {
std::pair<std::string_view, std::string_view> SplitIntoMainAndTail(
std::string_view locale) {
size_t hyphen_pos =
static_cast<size_t>(std::ranges::find(locale, '-') - locale.begin());
return std::make_pair(locale.substr(0U, hyphen_pos),
locale.substr(hyphen_pos));
}
std::string_view ExtractBaseLanguage(std::string_view language_code) {
return SplitIntoMainAndTail(language_code).first;
}
bool ConvertToActualUILocale(std::string* input_locale) {
if (std::optional<std::string> resolved_locale =
l10n_util::CheckAndResolveLocale(
*input_locale,
l10n_util::CheckLocaleMode::kUseKnownLocalesList)) {
input_locale->swap(*resolved_locale);
return true;
}
return false;
}
} // namespace language