LibLocale: Add a method to convert LanguageID to a String

This commit is contained in:
Timothy Flynn 2023-01-15 10:04:26 -05:00 committed by Linus Groh
parent b6b5ddeb3b
commit edfdade9e9
Notes: sideshowbarker 2024-07-17 07:20:57 +09:00
2 changed files with 19 additions and 10 deletions

View File

@ -906,25 +906,31 @@ DeprecatedString resolve_most_likely_territory_alias(LanguageID const& language_
return aliases[0].to_deprecated_string();
}
DeprecatedString LanguageID::to_deprecated_string() const
ErrorOr<String> LanguageID::to_string() const
{
StringBuilder builder;
auto append_segment = [&](Optional<DeprecatedString> const& segment) {
auto append_segment = [&](Optional<DeprecatedString> const& segment) -> ErrorOr<void> {
if (!segment.has_value())
return;
return {};
if (!builder.is_empty())
builder.append('-');
builder.append(*segment);
TRY(builder.try_append('-'));
TRY(builder.try_append(*segment));
return {};
};
append_segment(language);
append_segment(script);
append_segment(region);
TRY(append_segment(language));
TRY(append_segment(script));
TRY(append_segment(region));
for (auto const& variant : variants)
append_segment(variant);
TRY(append_segment(variant));
return builder.build();
return builder.to_string();
}
DeprecatedString LanguageID::to_deprecated_string() const
{
return MUST(to_string()).to_deprecated_string();
}
DeprecatedString LocaleID::to_deprecated_string() const

View File

@ -8,7 +8,9 @@
#include <AK/CharacterTypes.h>
#include <AK/DeprecatedString.h>
#include <AK/Error.h>
#include <AK/Optional.h>
#include <AK/String.h>
#include <AK/StringView.h>
#include <AK/Variant.h>
#include <AK/Vector.h>
@ -17,6 +19,7 @@
namespace Locale {
struct LanguageID {
ErrorOr<String> to_string() const;
DeprecatedString to_deprecated_string() const;
bool operator==(LanguageID const&) const = default;