Nano Hash - криптовалюты, майнинг, программирование

Как вы справляетесь с интернационализацией статического списка в asp.net mvc?

Скажем, я хочу, чтобы мое приложение было полностью интернационализировано... и пользователь должен выбирать из списка (выпадающего списка) стран в форме...

Страны (в настоящее время) не являются таблицей в моей базе данных, но я готов изменить это, хотя я не уверен, что это лучшая идея.

например, в испанской Германии это Алемания.

многие страны имеют разные названия, поэтому это должно быть на разных языках.

Как я могу это сделать? пожалуйста помоги.

редактировать для уточнения:

Имейте в виду, что это раскрывающееся меню страны не имеет НИЧЕГО общего с механизмом переключения языка... Предполагается, что наше приложение отслеживает адрес места рождения пользователей.... так что я хочу, чтобы в зависимости от текущей выбранной культуры будет показан другой список возможных стран.... чтобы повторить мой пример

  • Пользователь, родившийся в Германии и использующий приложение на английском языке, выберет Германию из выпадающего списка.

  • Пользователь, родившийся в Германии и использующий приложение на испанском языке, выберет Alemania из раскрывающегося списка.

Переключение языка работает нормально. Любой пользователь может выбрать любой язык для отображения приложения, который будет сохранен в URL-адресе.


  • Вопрос в том, почему вы хотите это сделать? Зачем вам вообще нужна эта информация? Другой вопрос: зачем заставлять пользователей выбирать страну, если ее (обычно) можно обнаружить в веб-браузере? 13.07.2011
  • Я отредактирую для уточнения 13.07.2011

Ответы:


1

Чтобы получить список стран, более или менее поддерживаемых .Net, вы можете использовать CultureInfo и RegionInfo следующим образом:

List<RegionInfo> allRegions = new List<RegionInfo>();
var specificCultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
foreach (CultureInfo culture in specificCultures)
{
    var info = new RegionInfo(culture.LCID);
    allRegions.Add(info);
}

Это даст вам все страны, некоторые из них несколько раз (потому что используются разные языки).

RegionInfo имеет несколько интересных свойств:

  • NativeName, который даст вам переведенное название страны, но, к сожалению, соответствующее указанному идентификатору локали (LCID), то есть «Polska» для Польши, «Deutschland» для Германии и так далее; некоторые будут переведены на несколько языков (это интересно, потому что США видны и как США, и как Estados Unidos)
  • DisplayName что должно быть тем, что вы ищете, но, к сожалению, это не так — Microsoft «забыла» перевести это в .Net framework (может быть, это нормально, потому что тогда это не должно быть Свойством)
  • Имя, которое, в отличие от названия, предполагает, даст вам двухбуквенный код страны.

Итак, что вы можете сделать с этой информацией? Теоретически вы можете использовать переведенные названия стран — в этом случае вы просто создадите словарь (Dictionary<int, string>) и добавите LCID с соответствующей строкой NativeName и используете его в качестве источника для вашего раскрывающегося меню.
Теоретически рожденный в стране должен быть в состоянии понять хотя бы один из его языков (по крайней мере, это происходит в большинстве случаев).

Однако на самом деле вы, вероятно, захотите иметь уникальный список стран, переведенный на любой язык, который отображается в вашем приложении в данный момент. Вы можете использовать описанный выше метод для получения списка стран и использовать, например, DisplayName (или EnglishName). Во время выполнения вы бы преобразовали его в переведенное имя, как и любую другую строку. Поскольку это должно произойти на бэкэнде, вы должны добавить еще один файл ресурсов (можно поместить в App_GlobalResources, не имеет значения) и прочитать его в своем коде программной части. Больше никакой теории, требуется пример кода:

const string RESOURCE_FILE = "Countries";
Dictionary<string, string> countryNames = new Dictionary<string, string>();

var specificCultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
foreach (CultureInfo culture in specificCultures)
{
    var info = new RegionInfo(culture.LCID);
    var name = info.EnglishName;
    var translated = GetGlobalResourceObject(RESOURCE_FILE, name).ToString();
    countryNames[name] = translated;
}

Если вы хотите прочитать имя на определенном языке (кроме CurrentUICulture), передайте объект CultureInfo в качестве третьего параметра в GetGlobalResourceObject().

13.07.2011
  • Я надеюсь, что C# вам подходит, так как вы забыли выбрать язык. Вы наверняка могли бы получить больше ответов, если бы правильно пометили вопросы... 14.07.2011
  • Я только что увидел, что это вопрос Asp.Net-MVC... Ну, я думаю, вы все равно сможете использовать это решение (возможно, с небольшими изменениями). 14.07.2011

  • 2

    Пользователь выбирает свой регион, вы сохраняете его в своем сеансе или URL-адресе, используя маршрут, содержащий код региона. Вы можете прочитать это в фильтре действий, например, здесь:

    Переключение культур ASP.Net MVC после компиляции для начальной загрузки< /а>

    Если вы выбираете метод маршрута

    Интернационализация маршрутов ASP.NET (MVC)

    но это, кажется, немного больше работы для вашего сценария, поэтому первая ссылка будет вашим лучшим выбором.

    12.07.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..