Приложение Windows 8 Metro (XAML) - Как установить язык запуска по умолчанию? - PullRequest
3 голосов
/ 21 марта 2012

Я пытаюсь установить язык запуска по умолчанию в моем приложении Windows Metro в App.xaml.cs, но не могу найти место, где это сделать.Обычно я устанавливаю это с помощью Thread.CurrentCulture в C #, но не могу найти пространство имен Thread.Что-то, чего мне здесь не хватает?

Ответы [ 7 ]

4 голосов
/ 19 июля 2012

Это прекрасно работает в Windows8 CP:

Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "de";
var resourceLoader = new ResourceLoader();
1 голос
/ 11 февраля 2014

Если это все еще по требованию, у меня есть опция здесь:

Попробуйте установить язык приложения по умолчанию в Package.appxmanifest. Откройте манифест с помощью VS и установите язык по умолчанию в соответствующем поле (пользовательский интерфейс приложения -> язык по умолчанию).

Надеюсь, это поможет.

0 голосов
/ 18 июня 2013

Откройте представление кода вашего Package.appxmanifest Изменить ресурсы на:

  <Resources>
    <Resource Language="x-generate" />
  </Resources>
0 голосов
/ 02 мая 2012

Я думаю, что вы ищете (в КП): Windows.Globalization.ApplicationPreferences.PreferredLanguage.

Обратите внимание, что ваш манифест должен перечислить все языки, которые вы фактически поддерживаете.VS установит для вас языки автоматически, если манифест в проекте содержит x-generate.

0 голосов
/ 11 апреля 2012

Может быть, установка в App.xaml.cs, как показано ниже, поможет

Windows.Globalization.ApplicationPreferences.PreferredLanguage = "no";

Где "нет" - это языковой тег BCP47 для норвежского языка.

Обновление : изменение языка приложения Metro во время выполнения

Согласно Windows 8 SDK образец «Ресурсы приложений и локализация»

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

Теперь в моем событии выбора смены языка я устанавливаю PreferredLanguage как:

Windows.Globalization.ApplicationPreferences.PreferredLanguage = "en";
this.Frame.Navigate(this.GetType());

И ключевая вещь, которую я пропустил, это код ниже в событии OnLaunched приложения:

ResourceManager.Current.DefaultContext.QualifierValues.MapChanged += async (s, m) => 
{
    if (m.Key == "Language")
    {
        // react to language change
    }
};

Я не поместил эту регистрацию события в создатель страницы или событие какой-либо страницы (как в примере SDK), потому что тогда его можно было зарегистрировать несколько раз. Тем не менее, это событие должно быть зарегистрировано где-то, чтобы изменение языка вступило в силу во время выполнения.

0 голосов
/ 11 апреля 2012

Вы можете установить культуру потоков по умолчанию, используя свойство CultureInfo.DefaultThreadCurrentCulture.

0 голосов
/ 21 марта 2012

Вы можете попробовать установить его на сборку проекта. Попробуйте щелкнуть правой кнопкой мыши проект, затем «Информация о сборке ...» и выберите свою нейтральную культуру.

...