это не очень хороший стиль преобразований.<xsl:value-of select="php:function('_','Hello')"/>
<xsl:value-of select="php:function('_','Hello')"/>
Не совсем это HTML. Правильно будет что-то типа:HTML:
echo _('Hello');
Это второй вариант (Вот только зачем lang='en' писать?). Это для тех случаев когда XSLT нужен обязательно правильный, т.е. XML совместимый. Ну да я вообще делаю вот так:отнаследоваться от XSLTProcessor и переопределить метод XSLTProcessor->importStylesheet(DOMDocument $stylesheet ) в котором пробежаться по $stylesheet (например с помощью xpath) и для всех узлов с атрибутами lang="<язык>" gettext="true" выполнить gettext() и заменить значение узла на переведённое
не правильное это решение - использование динамических XSLT- шаблонов, хотя иногда, выхода нет.Ну и в XSLT можно делать то же самое собственно. Просто перед применением эвалюэйтить.
По моему так красивее и понятнее. Ну и xml:lang это стандартный атрибут XML, почему бы его не использовать?Автор оригинала: denver
Вот только зачем lang='en' писать?
<message><loc:text>Hello</loc:text></message>
<message xml:lang="en">Hello</message>
<message xml:lang="en" gettext="true">Hello</message>

<input type="submit" value="Hello" />
решение вылетело из головы. Оно простое. Не буду сюда писать)
На самом деле всё равно что-то нужно придумать, чтобы отличать то, что надо переводить от просто метки языка (например текст статьи может быть размечен с указанием языков абзацев).Решается если юзать разметку <loc:var name="%s">...</loc:var> :-Pкак быть с подстановками во фразах (%s)
Это что такое? Например.и с множественными формами фраз?
Элегантное, XSLTшное :-PПро атрибуты не подумал. Какое решение?
Способ задавать перевод в зависимости от количества элементов. Например так:Автор оригинала: denver
Это что такое? Например.
"Plural-Forms: nplurals=4; \
plural=n == 0 ? 0 : \
n%10==1 && n%100!=11 ? 1 : \
n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 2 :
3; \n"
...
#: Комментариев нет.
msgid "Comment"
msgid_plural "Comments (%s)"
msgstr[0] "Комментариев нет."
msgstr[1] "Один комментарий."
msgstr[2] "%s коментария."
msgstr[3] "%s комментариев."
ngettext("Comment", "Comments (%s)", count($comments))
А, доперЭлегантное, XSLTшное :-P
