Локализация с HTML-ТЭГАМИ

Я хотел к localizate некоторые тексты в своей Платформе Зенда applicaiton. Существуют некоторые тексты как:

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

Если нет никакого HTML в нем, это просто к localizate, но с HTML в нем, как я должен приложить все усилия?

5
задан Gordon 4 May 2010 в 10:27
поделиться

3 ответа

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

printf (_ ("Здравствуйте, я% sa образец% s, всех вас приветствую!" ), '', "");

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

4
ответ дан 14 December 2019 в 08:45
поделиться

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


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

1
ответ дан 14 December 2019 в 08:45
поделиться

Вы должны локализовать любую строку, которая находится в пользовательском интерфейсе. В данной ситуации у вас есть комбинация элементов UI/control. Это означает, что содержимое атрибута 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 );

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

2
ответ дан 14 December 2019 в 08:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: