Переходя к созданию переводов, первым шагом является извлечение переводимых строк. Это осуществляется программой
xgettext$ <b>xgettext --keyword=_ --keyword=N_ \</b>> <b>--default-domain=echodate ch13-echodate.с</b>Опции
--keywordxgettext_()N_()gettext()gettext_noop()Вывод
xgettextmessages.ро"messages"--default-domainechodate.ро# SOME DESCRIPTIVE TITLE. /* Шаблон, нужно отредактировать */# Copyright (С) YEAR THE PACKAGE'S COPYRIGHT HOLDER# This file is distributed under the same license as the PACKAGE package.# FIRST AUTHOR <[email protected]>, YEAR.##, fuzzymsgid "" /* Подробная информация */msgstr "" /* Заполняет каждый переводчик */"Project-Id-Version: PACKAGE VERSION\n""Report-Msgid-Bugs-To: \n""POT-Creation-Date: 2003-07-14 18:46-0700\n""PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n""Last-Translator: FULL NAME <[email protected]>\n""Language-Team: LANGUAGE <[email protected]>\n""MIME-Version: 1.0\n""Content-Type: text/plain; charset=CHARSET\n""Content-Transfer-Encoding: 8bit\n"#: ch13-echodate.c:19 /* Местоположение сообщения */msgid "Enter a Date/time as YYYY/MM/DD HH:MM:SS : " /* Оригинальное сообщение */msgstr "" /* Здесь перевод */#: ch13-echodate.с:32 /* To же самое для каждого сообщения */#, с-formatmsgid "Got: %s"msgstr ""Этот первоначальный файл используется повторно для каждого перевода. Таким образом, это шаблон для переводов, и по соглашению, для отображения этого факта он должен быть переименован с расширением
.pot$ <b>mv echodate.ро echodate.pot</b>He владея свободно несколькими языками, мы решили перевести сообщения на свинский латинский. Следующим шагом является создание перевода. Это осуществляется копированием файла шаблона и добавлением к новой копии перевода:
$ <b>cp echodate.pot piglat.po</b>$ <b>vi piglat.po</b> /* Добавить переводы, используя любимый редактор */Имя по соглашению должно быть
<i>язык</i>.po<i>язык</i><i>язык_страна</i>.popt_BR.popiglat.ро# echodate translations into pig Latin# Copyright (C) 2004 Prentice-Hall# This file is distributed under the same license as the echodate package.# Arnold Robbins <[email protected]> 2004##, fuzzymsgid ""msgstr """Project-Id-Version: echodate 1.0\n""Report-Msgid-Bugs-To: [email protected]\n""POT-Creation-Date: 2003-07-14 18:46-0700\n""PO-Revision-Date: 2003-07-14 19:00+8\n""Last-Translator: Arnold Robbins <[email protected]>\n""Language-Team: Pig Latin <[email protected]>\n""MIME-Version: 1.0\n""Content-Type: text/plain; charset=ASCII\n""Content-Transfer-Encoding: 8bit\n"#: ch13-echodate.с:19msgid "Enter a Date/time as YYYY/MM/DD HH:MM:SS : "msgstr "Enteray A Ateday/imetay asay YYYY/MM/DD HH:MM:SS : "#: ch13-echodate.c:32#, c-formatmsgid "Got: %s"msgstr "Otgay: %s"Хотя можно было бы произвести линейный поиск в переносимом объектном файле, такой поиск был бы медленным. Например, в
gawkgettextmsgfmt