Мне нужна информация о локализации. Я использую .net 2.0 с C# 2.0, который заботится о большинстве проблем, связанных с локализацией. Тем не менее, мне нужно вручную нарисовать алфавиты, соответствующие текущей культуре на экране, на одном конкретном экране.Локализация: как сопоставить информацию о культуре с именем сценария или диапазоном символов Unicode?
Это будет похоже на экран «Контакты» в Microsoft Outlook (вид адресных карточек или просмотр адресных карточек в разделе «Контакты»), поэтому ему нужен столбец с кнопками справа, по одному для каждого алфавита.
Я пытаюсь подражать этому, но я не хочу просить пользователя выбрать сценарий. Если нынешняя культура говорит, китайцы, я хочу нарисовать китайские алфавиты. Когда пользователь меняет информацию о культуре на английский (и когда он перезапускает приложение), я хочу вместо этого нарисовать английские алфавиты. Надеюсь, вы поймете, куда я иду с этим вопросом.
Я могу определить культуру текущего пользователя (Application.CurrentCulture или System.Globalization.CultureInfo.CurrentCulture предоставит информацию, связанную с культурой). У меня также есть все сценарии для создания алфавитов. Однако проблема заключается в том, что я не знаю, как сопоставить информацию о культуре с именем скрипта.
Другими словами, существует ли способ определить имя скрипта, соответствующее культуре? Или можно определить диапазон значений символов Юникода, соответствующих культуре? Любой из них позволил бы мне правильно отобразить алфавиты на кнопке.
Любые предложения или рекомендации относительно этого действительно оценены. Если в моем подходе есть что-то принципиально неправильное (или с тем, чего я пытаюсь достичь), пожалуйста, укажите это также. Спасибо за ваше время.
PS: Я знаю, что самое легкое решение - либо настроить имя сценария как часть пользовательских настроек, либо отобразить список языков для пользователя на выбор (a la Contact в Outlook 2007). Но я просто пытаюсь понять, могу ли я отображать алфавиты, соответствующие культуре, без необходимости делать что-либо.
Пожалуйста, проверьте мой ответ ниже (от 14-Nov-08) – Proto 2008-11-14 03:46:33