/
smwwiki
/
OneScript_fork
Обзор
Документация
Войти
/
smwwiki
/
OneScript_fork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/OneScript.Language/Localization/BilingualString.cs
77 строк
2 KB
EvilBeaver
Контроль предопределенных интерфейсов при компиляции, а не при выполнении
19 янв 2024, 11:50
19 янв 2024, 11:50
9f98bdc
Код
Авторство
О чём код?
/*---------------------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v.2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. ----------------------------------------------------------*/ using System; using System.Globalization; namespace OneScript.Localization { public class BilingualString { private static readonly CultureInfo RussianCulture; static BilingualString() { try { RussianCulture = CultureInfo.GetCultureInfoByIetfLanguageTag("ru"); } catch (CultureNotFoundException) { } } public static implicit operator BilingualString(string source) { return new BilingualString(source); } public static implicit operator string(BilingualString str) { return str.ToString(); } public BilingualString(string ru, string en) { Russian = ru; English = en; } public BilingualString(string single) { Russian = single; English = string.Empty; } public string Russian { get; } public string English { get; } public override string ToString() { return Localize(Russian, English); } public bool HasName(string name, StringComparison comparison = StringComparison.CurrentCultureIgnoreCase) { return string.Equals(Russian, name, comparison) || string.Equals(English, name, comparison); } public static bool UseRussianLocale => CultureInfo.CurrentCulture.Parent.Equals(RussianCulture); public static string Localize(string russian, string english) { var currentCulture = CultureInfo.CurrentCulture; if (!Equals(currentCulture.Parent, RussianCulture)) { return string.IsNullOrEmpty(english) ? russian : english; } return russian; } } }