Использование внешнего XML-документа для локализации вывода XSLT - PullRequest
1 голос
/ 25 января 2012

У меня есть таблица стилей XSLT, которая преобразует данные XML в XSL-FO (который затем отображается в формате PDF с использованием Apache FOP).

Теперь мне нужно локализовать вывод на пару разных языков. Например, заголовки столбцов для таблиц, создаваемых XSLT, должны быть локализованы. Вот упрощенный фрагмент XSLT, создающего заголовок таблицы с заголовками столбцов «Дата» , «Имя» и «Что-то» :

  ...
  <fo:table>
    <fo:table-header>
      <fo:table-row>
        <fo:table-cell>
          <fo:block>Date</fo:block>
        </fo:table-cell>
        <fo:table-cell>
          <fo:block>Name</fo:block>
        </fo:table-cell>
        <fo:table-cell>
          </fo:block>Something</fo:block>
        </fo:table-cell>
      </fo:table-row>
    </fo:table-header>
    </fo:table-body>
      <xsl:apply-templates select="item"/>
    </fo:table-body>
   </fo:table>
  ...

Мы уже используем TMX файлы для интернационализации в других частях системы, так что это выглядит естественным путем. Вот упрощенный пример файла TMX с парой строк на двух языках:

<tmx version="1.4b">
  <body>
    <tu tuid="DATE">
      <tuv xml:lang="en"><seg>Date</seg></tuv>
      <tuv xml:lang="sv"><seg>Datum</seg></tuv>
    </tu>
    <tu tuid="NAME">
      <tuv xml:lang="en"><seg>Name</seg></tuv>
      <tuv xml:lang="sv"><seg>Namn</seg></tuv>
    </tu>
 </body>
</tmx>

Так что в основном я хотел бы заменить жестко закодированные заголовки столбцов в XSLT ссылками на строки в файле TMX (используя атрибуты tuid ), чтобы тот же XSLT мог выводить в разные языки.

Но я не могу найти никаких ресурсов о том, как использовать файлы TMX с XSLT. Примеры или ссылки на некоторые хорошие учебники будут с благодарностью.

1 Ответ

3 голосов
/ 29 января 2012

Текст в XSLT может быть локализован путем чтения переведенных строк из XML-документа.Числа также могут быть локализованы.

Документ XML может содержать либо один язык с одним документом XML для каждого языка, либо, альтернативно, один документ XML со всеми языками.Форматы XML в следующем примере соответствуют файлам ресурсов Microsoft .NET (.resx) (один файл на язык) или одному документу TMX (обмен памятью переводов) со всеми языками.Однако можно использовать любой формат, если XPath, используемый для чтения текста, согласован.

В обоих вариантах используется функция XPath 'document' для чтения XML с переведенными строками.Определите параметры для каждой строки, используемой в XSLT.Использование параметров вместо переменных позволяет переопределять значения при преобразовании XSLT.Используйте xsl:value-of для отображения переведенного текста.Когда преобразование обработано, передайте код языка, например, «fr», и URL-адрес к документу XML ресурса для нужного языка.

См. Мою статью " Как локализовать XSLT"для полного, функционального образца в http://www.codeproject.com/Articles/338731/LocalizeXSLT.

...