Локализация с HTML-тегами - PullRequest
5 голосов
/ 03 мая 2010

Я хотел локализовать некоторые тексты в моем приложении Zend Framework. Есть несколько текстов, таких как:

Hello, I'm <a href="test.php" title="Title-Attribute" rel="test">a sample text</a>, greetings to all of you! :)

Если в нем нет html, его легко локализовать, но с HTML, как мне лучше это сделать?

Ответы [ 3 ]

4 голосов
/ 03 мая 2010

Некоторые инструменты локализации, такие как Virtaal , обрабатывают теги XML (HTML) , что облегчает работу переводчика. Другой вариант - упростить строку, представленную вашим локализаторам, заменив тег на переменную форматирования строки и сделав строку формата локализуемой вместо результата форматирования. Например (для примера я в основном догадываюсь и не очень хорошо знаю PHP):

printf(_("Hello, I'm %sa sample%s, greetings to all of you!"), '<a href="test.php" title="Title-Attribute" rel="test">', "</a>");

В приведенном выше утверждении строка, которую увидит локализатор, - это только та строка, которая содержит переменные форматирования %s (потому что она заключена в функцию _() gettext). Это, конечно, имеет тот недостаток, что он довольно запутан для локализатора, если он не знает, какие переменные будут заменены, поэтому включите соответствующий комментарий локализации.

2 голосов
/ 03 мая 2010

Вы должны локализовать любую строку в пользовательском интерфейсе. В этой ситуации у вас есть комбинация элементов пользовательского интерфейса / управления. Это означает, что содержимое атрибута title должно быть локализовано отдельно.

В данном случае это означает:

$guilink = "<a href='test.php' "
           ."title='".gettext("Title-Attribute")."'"
           ." rel='test'>"
           .gettext( "a sample text" )
           ."</a>";

$guistring = sprintf( 
      gettext( "Hello, I'm %s, greetings to all of you! :)" ),  $guilink );

Но, как говорит Гордон: не переусердствуйте.

1 голос
/ 03 мая 2010

Для адаптеров перевода не должно иметь значения, содержит ли перевод HTML или нет. Если вы получили короткие строки со встроенным HTML, просто поместите перевод вместе с HTML в исходный файл языка по мере необходимости. Вам просто нужно убедиться, что выход не экранирован, если в строке есть HTML.


РЕДАКТИРОВАТЬ Как указывалось в комментариях к xtofl, наличие HTML внутри языкового файла не является оптимальным решением, поскольку переводчики могут быть незнакомы с обработкой HTML. Хотя в этом есть доля правды, я нахожу это пренебрежимо малым. HTML не является ракетостроением, и для тех немногих случаев, когда могут появляться элементы HTML inline , вы можете предоставить им шпаргалку. Профессиональные переводчики должны быть в состоянии справиться с этим. Другая проблема заключается в том, что они вставляют нежелательный контент, например, ссылки (если вы работаете с сообществом переводчиков, а не профессионалов). Но так как вы все равно не упомянули переводчиков, я предполагаю, что вы делаете перевод сами, в этом случае все вышеперечисленное является ягни . Нет необходимости перебирать вещи .

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