2010-10-14 2 views
0

Если у меня есть одиночная метка на моей странице ASP.NET (2.0), и я хочу сохранить в ней сообщение об ошибке; и если я делаю это в коде, делая несколько IF заявления, как:ASP.NET локализация многозначных сообщений

if (...) 
value = "..." 
else 
value = "......" 
etc 

как бы я локализовать это, так что я не должен писать:

if (...) 
{ 
    switch(langCase) 
    { 
     case "en-US": 
      value = "englishValue"; 
      break; 
     case "de-CH": 
      value = "german Swiss value"; 
      break; 

      ... 
    } 
} 
else 
{ 
    switch(langCase) 
    { 
     case "en-US": 
      value = "englishValueForElse"; 
      break; 
     case "de-CH": 
      value = "german Swiss value for ELSE"; 
      break; 

      ... 

    } 
} 

Если я создаю несколько ярлык управления для каждого случая if-else, мне придется скрыть все, кроме одного для текущего языка (уродливое?). То, что я хотел бы, это своего рода файл ресурсов, но с строками для каждого случая, который может произойти, и столбцы для каждого языка.

ответ

3

Чтобы сохранить ваши сообщения, вы должны использовать файл ресурсов (.resx). В ASP.NET встроены механизмы локализации с использованием ресурсов.

Чтобы добавить ресурсы в приложение, вам нужно добавить новый элемент «Ресурс», используя диалоговое окно «Добавить новый элемент».

Если ваш Resx файл называется ApplicationStrings.resx, строка ErrorLabel, содержащаяся в нем, будут доступны на веб-сайте с помощью свойства

ApplicationStrings.ErrorLabel 

(VS генерирует класс инкапсулирует файл Resx)

Вы можете поддерживать локализацию с помощью строк, создавая новые Ресурсы с адекватным наименованием:

ApplicationStrings.fr.resx будет содержать локализацию на французском языке ApplicationStrings.resx Applicat ionStrings.fr-fr.resx будет содержать локальную французскую/французскую локализацию и т. д.

ASP.NET дескриптор дескриптора, тогда, если ErrorLabel отсутствует в ApplicationStrings.fr-fr.resx (или ApplicationStrings.fr-fr. resx не существует), он будет искать его в ApplicationStrings.fr.resx, а затем в ApplicationStrings.resx.

Стоит также отметить, что ASP.NET использует текущую культуру потоков для выполнения локализации ресурсов. Поэтому вы должны убедиться, что System.Threading.Thread.CurrentThread.Culture содержит вашу культуру клиента, а не серверную.

+0

Могу ли я создать файл ресурсов с названиями сообщений, и с помощью менеджера ресурсов подключить их в нужном месте? –

+0

Да, см. Мое сообщение, это событие легче, чем это.^_^(но будьте осторожны с автогенерируемым пространством имен класса ресурсов. Это компьютер, как и другие автоматизированные поколения файлов классов, в соответствии с пространством имен проектов по умолчанию и каталогом файлов ресурсов. – Eilistraee

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