Я хотел к 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 в нем, как я должен приложить все усилия?
Некоторые инструменты локализации, такие как Virtaal , обрабатывают теги XML (HTML) способом , что упрощает работу переводчика. Другой вариант - упростить строку, представленную вашим локализаторам, заменив тег на переменную форматирования строки и сделав строку формата локализуемой вместо результата форматирования. Например (я в основном предполагаю ради примера и не очень хорошо знаю PHP):
printf (_ ("Здравствуйте, я% sa образец% s, всех вас приветствую!" ), '', "");
В приведенном выше заявлении локализатор увидит строку только тот, который содержит переменные форматирования % s
(потому что он заключен в функцию gettext _ ()
). Это, конечно, имеет тот недостаток, что может сбить с толку локализатора, если он не знает, чем будут заменены переменные, поэтому включите соответствующий комментарий локализации.
Для адаптеров перевода не должно иметь значения, содержит перевод HTML или нет. Если у вас есть короткие строки со встроенным HTML, просто поместите перевод вместе с HTML в исходный файл вашего языка по мере необходимости. Вам просто нужно убедиться, что вывод не экранирован, когда внутри строки есть HTML.
РЕДАКТИРОВАТЬ Как xtofl указал в комментариях, наличие HTML внутри языкового файла не является оптимальным решением, поскольку переводчики могут быть незнакомы с обработкой HTML. Хотя в этом есть доля правды, я считаю ее несущественной. HTML - это не ракетостроение, и для тех немногих случаев, когда могут появляться встроенные элементы HTML, вы можете предоставить им шпаргалку. Профессиональные переводчики должны уметь с этим справиться. Еще одна проблема может заключаться в том, что они вставляют нежелательный контент, например ссылки (если вы работаете с переводчиками сообщества, а не с профессионалами). Но так как вы все равно не упомянули ни одного переводчика, я предполагаю, что вы делаете перевод сами, и в этом случае все вышеперечисленное - yagni . Нет необходимости чрезмерно усложнять .
Вы должны локализовать любую строку, которая находится в пользовательском интерфейсе. В данной ситуации у вас есть комбинация элементов 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 );
Но, как говорит Гордон: не переусложняйте.