Отправляет email-рассылки с помощью сервиса Sendsay

i18n

Привет всем!

Подскажите какой-нибудь документик по поводу сабжа
при написании программ, а то я что-то не могу толком
разобратся даже куда копать...
Уточняю : имеется ввиду вынесение сообщений программы
(для начала консольной) в отдельные файлы (*.mo) с последующим
ковырянием в них в зависимости от локали.

Ответить   Matvey Thu, 24 Mar 2005 23:01:50 +0200 (#339275)

 

Ответы:

В Чтв, 24 Мар 2005 в 23:01:50 +0200, Matvey написал(а):

info gettext

Ответить   by_ Fri, 25 Mar 2005 03:54:12 +0500 (#339328)

 

В Птн, 25/03/2005 в 03:54 +0500, by_ пишет:

Если писать с нуля собственную программу (а не курочить уже написанное)
- IMHO удобнее info catgets.

Ответить   Yura Kalinichenko Fri, 25 Mar 2005 08:09:33 +0200 (#339425)

 

On Fri, 25 Mar 2005 08:09:33 +0200
Yura Kalinichenko <yuk@i*****.com> wrote:

Чем?

Ответить   Matvey Sat, 26 Mar 2005 22:43:17 +0200 (#340389)

 

В Суб, 26/03/2005 в 22:43 +0200, Matvey пишет:

Грубо говоря, в случае gettext адресом текста перевода в базе
локализованных сообщений является текст оригинала из исходника. В
результате сама база как правило является неструктурированной, в ее
исходнике непросто ориентироваться, поиск сообщения в скомпилированной
базе более медленный чем в случае catgets. Однако если вы недостаточно
хорошо понимаете структуру приложения, или просто в нем уже очень много
кода, писанного без оглядки на возможную локализацию, то самый легкий и
быстрый путь локализацию прикрутить - это прочесать исходники с помощью
xgettext и затем на полуавтомате заменить все строки в текстах на вызовы
gettext с аргументами в виде этих же строк.

По методу же catgets каждой текстовой строке вручную присваивается
адрес, состоящий из номера секции и номера сообщения в этой секции в
базе данных. Соответственно, базу можно структурировать (например, в
одной секции - сообщения об ошибках, в другой - пункты меню, в третьей -
тексты формы для печати, и все это разбить в соответствии с модулями
программы). В результате в тексте базы легко ориентироваться при
разработке, поиск в скомпилированной базе более быстрый, и в случае
исправления грамматической ошибки в исходнике программы нет нужды
вносить исправления в базу сообщений. Однако использовать данный метод
при локализации уже написанного (особенно - написанного кем-то другим)
приложения - задача весьма трудоемкая, с сомнительной целесообразностью.

Ответить   Yura Kalinichenko Sun, 27 Mar 2005 12:38:10 +0300 (#340556)

 

В сообщении от 1111916290 секунд после начала Эпохи Unix Вы написали:

Есть еще один недостаток - возня с номерами этих сообщений. Да и код
вида:

printf(_(ERROR_THIS_IS_NOT_A_VALID_DATA_FILE), filename);

выглядит не самым лучшим способом. А с gettext:

printf(_("Error: This is not a valid data file: %s"), filename);

как-то читабельнее выходит...

Да и поиск в БД, у которой индекс строка, может происходить не намного
медленнее. Если, конечно, алгоритмы не тупые вида `while (strcmp(tr++, msg));'.

Ответить   Konstantin Korikov Sun, 27 Mar 2005 19:36:23 +0300 (#340702)

 

В Вск, 27/03/2005 в 19:36 +0300, Konstantin Korikov пишет:

Если код и сообщения пишешь сам и одновременно - это как раз удобно.

А так :

printf("%s: %s", error_message(3, "Error: This is not a valid data file"), filename)
?

PS. Я в общем-то сразу писал - это мое IMHO. Основанное на опыте
использования в разработке как gettext (текстовый редактор joe), так и
catgets (бухгалтерия iceB). Ваш опыт мог привести и к другим
результатам.

Ответить   Yura Kalinichenko Sun, 27 Mar 2005 21:14:42 +0300 (#340727)

 

В сообщении от 1111698110 секунд после начала Эпохи Unix Вы написали:

$ info gettext

Только зачем ковыряться в .mo-файлах?...

Ответить   Konstantin Korikov Fri, 25 Mar 2005 07:46:14 +0200 (#339424)

 

On Fri, 25 Mar 2005 07:46:14 +0200
Konstantin Korikov <lostcl***@u*****.net> wrote:

Ну вот такие дремучие представления у меня о процессе выбора
сообщений... ;)
Имелось ввиду, что ковырятся буду не я, а библиотечная функция.
Почему ковырятся? На такую мысль наводит содержимое .mo файлов, в
которых есть и английские и локализированные сообщения.

Ответить   Matvey Fri, 25 Mar 2005 08:41:52 +0200 (#339439)