ResourceManager и не поддерживаемая платформа - PullRequest
3 голосов
/ 21 марта 2012

Я использую ResourceManager для локализации пользовательского интерфейса моего программного обеспечения WinCE 5. У меня есть несколько файлов ресурсов с текстовыми строками на разных языках

Resourse.resx
Resourse.de-DE.resx
Resourse.ru-RU.resx

Когда я хочу отобразить пользовательский интерфейс на английском, я звоню:

Resourse.Culture = new CultureInfo("en-US");
label1.Text = Resourse.LabelText;

на немецком языке:

Resourse.Culture = new CultureInfo("de-DE");
label1.Text = Resourse.LabelText;

на русском языке:

Resourse.Culture = new CultureInfo("ru-RU");
label1.Text = Resourse.LabelText;

но здесь я получаю PlatformNotSupportedException .

Я знаю, что мой WinCE не содержит русский язык, и я не могу изменить ОС для добавления этого, поэтому мой вопрос заключается в том, как я могу сказать ResourceManger , чтобы использовать Resourse.ru-RU.resx когда я установил Culture = new CultureInfo("ru-RU")?

Ответы [ 3 ]

2 голосов
/ 28 апреля 2014

Ниже приведен довольно взломанный обходной путь, но он решит проблему PlatformNotSupportedException.Я также рекомендовал бы делать это только в крайнем случае.Обратите внимание, что я проверял это только на WinCE 6.0.

Если культура, которую вы пытаетесь внедрить, не поддерживается WinCE 6.0, просто переименуйте ее в другую культуру.Например, вместо того, чтобы обозначать русскую культуру как «ru-RU» (как указано выше), вы можете переименовать ее в «eu-ES» (баскский). При условии, что используемый шрифт поддерживает набор символов кириллицы, значения должны отображаться в том виде, в котором вы их написали.

Примечание: вы ДОЛЖНЫ также переименовать файл ресурсов в соответствии с целевой культурой, которой вы являетесьзаменяющий.Если вы используете «eu-ES» вместо «ru-RU», вы должны переименовать свой «Resourse.ru-RU.resx» в «Resourse.eu-ES.resx».

Что выпотерять: Любая нативная поддержка, предоставляемая целевой культурой (в данном случае русским) (например, правильно отформатированные валюты, даты и т. д.), поскольку они теперь будут извлекаться из целевой культуры обходного пути (в данном случае баскского).Обратите внимание, что это должно быть проблемой в вашем приложении, только если вы форматируете свои строки с помощью культуры (то есть stringFormat ({некоторое CultureInfo.GetCurrentCulture}, {дополнительное форматирование}, {некоторое числовое значение})).

2 голосов
/ 14 августа 2014

Ответ, предоставленный Джонатаном, - это точная работа, которую мне пришлось сделать, чтобы мое устройство показывало упрощенный китайский. Я использовал английский "en-ZW" (Зимбабве). Это работало на 3 разных устройствах под управлением разных ОС (CE5, CE6 и WEH / WM 6.5.3)

Если базовый шрифт Tahoma не содержит всего, что вам нужно, как в моем случае, вам также необходимо поместить шрифт на устройство и внести дополнительные изменения в реестр, чтобы включить связывание шрифтов. Это не очень сложно, всего пара записей реестра.

Эта ссылка MSDN предоставляет информацию для китайских шрифтов, но она будет использоваться таким же образом для любого другого набора шрифтов. http://msdn.microsoft.com/en-us/library/ms901082.aspx

Более общие статьи MSDN о связывании шрифтов можно найти здесь: http://msdn.microsoft.com/en-us/library/ms901098.aspx

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

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

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

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

...