Вопрос

У меня небольшие проблемы с возможностью получать локализованные файлы ресурсов для работы на Windows Phone 7. Вот что я делаю:

  1. Создайте файл ресурсов, скажем, «strings.resx» (стройное действие: компилировать)
  2. Создайте ключ, скажите «TestKey» с величином пустой строки по умолчанию
  3. Добавьте английский файл ресурсов в той же папке со значением «какая-то английская строка»: strings.en-us.resx (стройное действие: встроенный ресурс)
  4. Добавьте японский файл ресурсов в той же папке со значением «Некоторые японские строки»: strings.ja-jp.resx (стройное действие: встроенный ресурс)

В моем PC Silverlight, WPF приложения, которые отлично работают, когда я меняю нить. CurrentThread.CurrentCulture. Но в телефоне я всегда, кажется, получаю значение, которое в файле strings.resx - пустая строка.

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

            Type t = typeof(Strings);

            _resourceManager = new ResourceManager(
                t.Namespace + "." + t.Name,
                t.Assembly);

            _resourceManager.GetString("TestKey");

Скажите мне локализованные ресурсы поддерживаются по телефону ...;> Что я делаю не так? Спасибо!

Обновлять: Спасибо Оливье для пересылки ссылки. Я тоже увидел это, но пропустил важный шаг. Я не добавил узел «Поддержки» на мой CSPROJ. Сделал все разницу - надеясь, что кто-то еще не теряет два часа, пытаясь понять это, как я.

<SupportedCultures>de-DE;es-ES;</SupportedCultures>
Это было полезно?

Решение

Я написал сообщение в блоге, который предоставляет ссылки на кучу Глабализация / локализация руководства для WP7. Eсть Windows Phone 7 в 7 тренировочных видео Это помогло мне понять основы. После этого это было просто вопрос обучения, как сделать DATABINGING:

Статья MSDN показывает, как настроить файлы и создать класс localizeStrings, но они предполагают, что вы знаете, как использовать этот класс для привязки данных. Visual Studio 2010 и Silverlight рукоятки передача данных по-разному, чем WinForms, и он становится еще более запутанным, поскольку XAML также имеет свое собственное определение ресурсов, которые отличаются, то ресурсы .NET, которые мы только что создали. Silverlight также использует термин ресурс для обозначения файлов, которые используют действие «Содержание», поскольку эти файлы попадают в файл .xap, аналогично, как файлы с действием сборки «ресурса» встроен в сборку .dll (EX: загрузка изображения из содержимого или файлов ресурсов). Я обнаружил, что вместо использования текста = "{Biding Path = ResourceFile.resourCename, Source = {StaticResource LocalizedResources}}" Syml Syntax Было легче использовать следующие шаги:

  1. Откройте свою первичную страницу XAML (обычно Mainpage.xaml) в дизайнере Visual Studio

  2. Откройте свойства для PhoneApplicationSagePage и установите DataContext, чтобы быть применением .Resources -> Локализованные строги. Примечание. Если вы уже используете объект DataContext, то вам следует интегрировать класс локатизации на этот объект, чтобы у него была поддержка локализации.

  3. После того, как настроек страницы DataContext, вы можете изменить привязку данных для любого элемента управления на странице, просто выбрав свойство (EX: Text, Checked и т. Д.), Выбор «Применить привязки данных ...» и установку пути к LocalizeResources.BTNTEXT или что-то имя желаемого значения ресурса.

Другие советы

Конечно, по телефону поддерживаются локализованные ресурсы:

Как: Создать локализованное приложение для Windows Phone

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top