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

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

Signup_Status_Inactive Signup_Status_Reserved и т.д ...

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

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

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

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

Спасибо.

1 Ответ

2 голосов
/ 14 октября 2009

Все ключи в файле .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} = имя пользователя»

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...