Ресурсы и локализация - родительские / дочерние строки в файлах .resx?

Я создаю файл WebResources.resx с несколькими строковыми сообщениями, которые я хотел бы разделить на категории:

Registration_Status_Inactive Registration_Status_Reserved и т. Д.

Поскольку это просто XML-файл в фоновом режиме, можно ли создать отношения родитель / потомок, чтобы мне не приходилось добавлять префиксы к связанным строкам и следовать лучшей точечной нотации?

Чтобы обойти это, я могу создать класс с некоторыми свойствами, доступ к которым осуществляется через правильную точечную нотацию, то есть StatusMessages.Signup.Inactive - но это просто дополнительная работа.

Есть ли только один уровень для строкового компонента файлов .resx?

Кроме того, как вы выводите переменные сеанса как часть значения resx, например: «Ваша карта № » + HttpContext.Current.Session [«ReservedCardNum»] + « зарезервирована для вас».

Спасибо.


person ElHaix    schedule 22.09.2009    source источник


Ответы (1)


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


Для вывода переменных сеанса я бы использовал String.Format ()

Обычно вы пишете

String.Format(“"Your Card #{0}  has been reserved for you.", 
              HttpContext.Current.Session["ReservedCardNum"])

Так что вместо этого просто используйте

String.Format(stringLookedFromResouceFile, 
              HttpContext.Current.Session["ReservedCardNum"])

И вставьте «{0}» в переведенную строку, чтобы переводчики могли при необходимости изменить порядок слов.


Подумайте, как вы будете сообщать переводчикам, какие заполнители. Если переводчики используют редактор ресурсов, который показывает поле комментария, вы можете добавить комментарии типа «{0} = username»

Вам также нужно будет каким-то образом проверить, не испортили ли переводчики заполнители. Я видел, как переводчики меняли «{0}» на «(0)», поскольку они «думают, что скобки другого типа выглядят лучше» и т. Д.! или удалите одну из скобок, чтобы формат строки стал недействительным.

см. Как проверить строку формата

person Ian Ringrose    schedule 14.10.2009
comment
+1. Также при использовании редактора ресурсов используйте поле «Комментарии», чтобы задокументировать, что происходит в каждом из полей замены; контекст (например, личное имя или количество элементов) и тип данных действительно полезны для переводчиков. - person devstuff; 14.10.2009