I18n для XSLT (или что такое gettext () и xgettext в C ++ для XSLT)?

Полный пример «привет, мир» C ++ i18n gettext () показывает стандартный способ обработки сообщений в программе на C ++ с помощью gettext (). Каталоги сообщений хранятся в файлах переносимых объектов на основе файла шаблона переносимых объектов, созданного непосредственно из исходного кода C ++ с использованием xgettext, msginit и msgfmt. Каков соответствующий метод обработки сообщений с помощью XSLT?

В частности, чтобы сделать код приветствия C ++ поддержкой i18n, нужно просто добавить два включения, вызвать некоторые функции настройки и обернуть строки в вызовы gettext ():

#include <libintl.h>
#include <locale.h>
..
    setlocale(LC_ALL, "");
    bindtextdomain("hellogt", ".");
    textdomain( "hellogt");
    std::cout << gettext("hello, world!") << std::endl;
...

Затем английский текст извлекается из исходной программы и преобразуется в шаблон переносимого объекта для использования переводчиками, которые создают файлы каталога сообщений машинных объектов для использования исполняемой программой с помощью служебных программ: xgettext, msginit и msgfmt. Наконец, при запуске программы отображается команда оболочки Linux для определения испанского языка выполнения.

Основная цель создания программы hello-world - соединить все части системы, чтобы получить практически бесполезный пример работы. Итак, как показывает пример C ++ для C ++ в среде Linux, я ищу то же самое, но вместо этого для XSLT.

  1. В примере C ++ есть набор включаемых файлов и объектных файлов, связанных с hellogt. Есть ли код для XSLT, который обеспечивает функциональность setlocale, bindtextdomain и textdomain? Как код подключается к языку среды выполнения пользователя?
  2. Есть ли код XSLT, который обеспечивает преобразование во время выполнения из английского текста с помощью файлов каталога сообщений, таких как gettext ()?
  3. Существуют ли служебные программы для извлечения текста на английском из исходного XML-файла для использования переводчиками вместе с программами для преобразования результатов в файлы каталога сообщений, пригодные для использования во время выполнения, такие как xgettext, msginit и msgfmt do?
  4. Как определяется язык среды выполнения пользователя?

Например, у меня есть приложение Javascript, Emle, которое преобразует XML с помощью XSLT в HTML. Сообщения определены в коллекции файлов XML для конкретного приложения. Они извлекаются с использованием кода XSLT для конкретного приложения. Хотя это относится к пункту 2, похоже, что метод не дает возможности воспользоваться услугами перевода, подобными тем, которые предоставляет LaunchPad . Пример файла сообщений Emle на английском языке, используемый XSLT-файл Emle


person Community    schedule 09.07.2009    source источник
comment
Вы ищете общий способ сопоставить данное сообщение, например misc-all-fireFoxOnly из исходного файла, со всеми экземплярами соответствующего целевого файла HTML для всех экземпляров misc-all-fireFoxOnly в целевом файле, используя только XSLT? Итак, вы начинаете с какого-то файла, в котором есть misc-all-fireFoxOnly, и заканчиваете HTML-файлом, который использует misc-all-fireFoxOnly без необходимости фактического сопоставления от источника к цели - правильно ли я понимаю?   -  person Erik Westermann    schedule 09.07.2009
comment
Я ищу XSLT-код для добавления в свой код вместе с вспомогательными утилитами для обработки сообщений. Я добавил больше деталей к вопросу.   -  person CW Holeman II    schedule 10.07.2009


Ответы (2)


Если приемлемы инструменты, отличные от XML, то этот инструмент Perl выполняет работу по созданию и поддержанию синхронизации набора PO-файлов gettext файла данных XML и его переводов.

http://po4a.alioth.debian.org/man/man3pm/Locale::Po4a::Xml.3pm.php

person user241170    schedule 30.12.2009
comment
Это касается части 3 вопроса, служебных программ, которые предоставляют текст для переводчиков. - person CW Holeman II; 31.12.2009

Поразмыслив, я обнаружил следующее: http://xmlguru.cz/2006/10/saxon-gettext Я еще не прочитал его полностью, чтобы узнать, отвечает ли он на ваш вопрос и как, но я предлагаю ссылку в надежде, что она поможет.

person Community    schedule 06.06.2012