/
smwwiki
/
OneScript_fork
Обзор
Документация
Войти
/
smwwiki
/
OneScript_fork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/OneScript.Core/Commons/Locale.cs
67 строк
3 KB
Andrey Ovsiankin
Эксперименты с переподчинением сборок
16 июл 2021, 18:52
16 июл 2021, 18:52
b512e3b
Код
Авторство
О чём код?
/*---------------------------------------------------------- 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; using System.Linq; // ReSharper disable once CheckNamespace namespace OneScript.Commons { public static class Locale { private static string _actualLocaleName; public static string SystemLanguageISOName { get => _actualLocaleName; set { _actualLocaleName = value; var ci = CultureInfo.CreateSpecificCulture(_actualLocaleName); CultureInfo.CurrentCulture = ci; SystemLocaleChanged?.Invoke(); } } public static bool UseAliasedPresentations => SystemLanguageISOName != default && SystemLanguageISOName != "ru"; public static event Action SystemLocaleChanged; /// <summary> /// /// По умолчанию, системный язык определяется настройкой локали в операционной системе. /// Также, системный языкможет быть задан в файле oscript.cfg параметром systemlanguage. /// Сама функция НСтр работает следующим образом: /// Если подстрока для системного языка присутствует, то она и возвращается, /// иначе, возвращается подстрока для английского языка (en), /// если подстрока для английского языка не задана, то возвращается первая по порядку подстрока. /// Если подстрока для системного языка присутствует, то она и возвращается, /// иначе, возвращается подстрока для английского языка(en), /// если подстрока для английского языка не задана, то возвращается первая по порядку подстрока. /// </summary> /// public static string NStr(string src, string lang = null) { var parser = new FormatParametersList(src); string str; if (lang != null) str = parser.GetParamValue(lang); else { str = parser.GetParamValue(SystemLanguageISOName); if (str == null) str = parser.GetParamValue("en"); if (str == null) str = parser.EnumerateValues().FirstOrDefault(); } return str == null ? String.Empty : str; } } }