Как реорганизовать HTML разметку из моих файлов собственности?

голоса
8

Я недавно унаследовал интернационализированную и текст тяжелых Struts 1.1 веб-приложение. Многие файлы JSP выглядеть следующим образом:

<p>
    <bean:message key=alert />
</p>

и файлы свойств выглядеть следующим образом:

messages.properties
alert=Please update your <a href=/address.do>address</a> and <a href=/contact.do>contact information</a>.

с соответствующими переводами на N других языках (messages_fr.properties и т.д.).

Проблемы:

  1. СУХОЙ нарушения -меня есть N ссылки на мои действия URLStruts вместо 1, что делает URLрефакторинга действия ошибок.
  2. Смешанные проблемы - Разметка моего приложения теперь болеечем просто мои файлы JSP,делает его трудным для вебспециалиста для настройки разметки (помощью CSS,т.д.).
  3. После перевода разметка -любое время я получаю недавно переведенный текст, я должен решитьчто окружать с<a>...</a>разметкой. Легко для английского языканоменьшей степени, на незнакомых языках.

Я рассмотрел добавление заполнителей в файле сообщений, как:

alert=Please update your {0} and {1}.

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

Что я могу сделать, чтобы улучшить это?

Задан 16/08/2008 в 17:42
источник пользователем
На других языках...                            


4 ответов

голоса
2

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

Как правило, это приведет к уменьшению количества проблем. Иногда приходится идти на компромисс вашего дизайна пользовательского интерфейса для размещения локализации; Иногда вам нужно идти на компромисс вашего процесса локализации для размещения пользовательского интерфейса.

Каждый раз, когда разработчик вручную манипулирует строки после перевода является источником потенциально дорогостоящих ошибок. Резка / вставка или редактирование строки может привести характер коррупцию, неуместные строки и т.д. Дефект перевода нуждается в участии внешних сторон, чтобы исправить, которая включает в себя стоимость и занимает много времени.

Думая об этом, что-то подобное может быть менее уродливой:

<p>Please update your address and contact information.
<br />
<a href="/address.do">update address</a>
<br />
<a href="/contact.do">update contact information</a></p>

... но я не дизайнер пользовательского интерфейса.

Ответил 16/08/2008 в 22:59
источник пользователем

голоса
1

Один из подходов, который приходит на ум, что вы могли бы хранить переведенные параметры замены, то есть «адрес» и «Контактная информация» в отдельном файле свойств, по одному в каждой местности. Тогда ваш класс действий (или, возможно, некоторые вспомогательный класс) искать значение от правильного ResourceBundle для текущей локали и передавать их в теге сообщения.

Ответил 16/08/2008 в 18:40
источник пользователем

голоса
0

Сообщение теге сообщения API позволяет только 5 параметрические аргументы

Ах! Я виню мое полное незнание API Struts.

Процитирую руководство :

Некоторые из функций этой TagLib также доступны в JavaServer Pages Standard Tag Library (JSTL). Команда Struts поощряет использование стандартных тегов над определенными тегами Struts, когда это возможно.

Вы могли бы сделать это с http://java.sun.com/jsp/jstl/fmt TagLib.

<fmt:bundle basename="messages">
    <fmt:message key="alert">
        <fmt:param value='<a href="/">' />
        <fmt:param value="</a>" />
        <fmt:param value='<a href="/">' />
        <fmt:param value="</a>" />
    </fmt:message>
</fmt:bundle>

Недостатком является то, что это не является допустимым XML и дергает значения переменных включает больше, Lookups косвенного предоставления и многословие. Это не является хорошим решением.

Я не знаю, Struts, но если это что-то вроде JavaServer Faces (тот же архитектор), то есть, вероятно, поддержка для настройки управления для замены. Я бы либо заменить существующий контроль с более гибкой одного или добавить новую.

В любое время я получаю недавно переведенный текст, я должен решить , что окружать с <a>...</a>разметкой.

Там нет никакого способа , вы должны делать это , и я вижу это как неисправность в вашем процессе перевода (я инженер экс-локализации и экс-разработчик средств локализации). Эти {0}символы должны быть включены в файлах, которые отправляются на переводчик. Рекомендации по локализации должны объяснить контекст струны и смысл любых переменных.

Вы можете программно проверить расслоение собственности на возвращении. Строка конкретных регулярных выражений-х может сделать трюк. Это не вне царства возможности, что «адрес» и «Контактная информация» будут обменят порядка во время перевода.

Самое простое решение заключается в пересмотре сообщений для отображения:

<a href="/address.do">Please update your address.</a>
<a href="/contact.do">Please update your contact information.</a>

Я понимаю, что это не может быть решением во всех случаях и может иметь ваш UI дизайнер выплевывая зубы.

Ответил 16/08/2008 в 21:56
источник пользователем

голоса
0

Может быть:

#
alert=Please update your {0}address{1} and {2}contact information{3}.
Ответил 16/08/2008 в 17:55
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more