2010-01-18 8 views
1

В asp.net многоязычного сайте на английском языке Великобритании и шведской, у меня есть три rsources файлasp.net настройка культуры multiligual сайта

1. en-GB.resx 
2. sv-SE.resx 
3. Culture neutral file. 

У меня есть создать один базовый класс и все страницы наследуются от этого класса. Там я пишу следующие строки, чтобы установить UICulture и культуру

1. Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture.Name; 
2. Thread.CurrentThread.CurrentCulture = CultureInfo.CurrentCulture.Name; 

Вопрос: Предположим, мой язык браузер Swedish (SV-SE), то этот код будет работать, потому что найти CurrentUICulture and CurrentCulture values as sv-SE.

Теперь, если предположим, что язык браузера шведка (УО), только в этом случае значений будет установлен в качестве

CurrentUICulture = sv; and CurrentCulture = sv-SE 

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

Что было бы правильным подходом. Я думаю следующее решение. Пожалуйста, поправьте меня?

1. i can create extra resource file for sv also. 
2. I check value of CurrentUICulture in base class and if it is sv then replace it with sv-SE 

Пожалуйста, исправьте меня, какой из них правильный подход или есть ли другой хороший способ?

ответ

1

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

if (Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName.ToLower() != "sv") 
     ...replace with sv-SE 

EDIT Смотрите этот другой вопрос] 1 для получения дополнительной информации. В ответе на этот вопрос есть хорошая статья, связанная с ответом

+0

Думаю, нет необходимости также проверять. потому что уже у нас есть sv-SE с CultureInfo.CurrentCulture.Name; и я могу назначить это значение для обоих так: 1. Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentCulture.Name; 2. Thread.CurrentThread.CurrentCulture = CultureInfo.CurrentCulture.Name Что вы скажете? –

+0

Вы можете определенно сделать это, если вам не нужно иметь номера в одной культуре и тексте в другом. – tzup

Смежные вопросы