LINUX.ORG.RU

Возможно ли юзать либу gettext под Windows?


0

2

Под linux ты создаёшь всякие там .pot, .po, .mo файлы, в конце кладёшь .mo в подкаталог ./<localename>/LC_MESSAGES/, от каталога запуска приложения.

А в windows куда эти .mo нужно складывать? Та же структура каталогов <localename>/LC_MESSAGES/? Если да, то какие там бывают localename?

Спасибо.

А в windows куда эти .mo нужно складывать?

куда душа пожелает, главное указать откуда грузить.

Та же структура каталогов <localename>/LC_MESSAGES/?

да

Если да, то какие там бывают localename?

такие же

dhampire ★★★
()
Ответ на: комментарий от kiverattes

а с чего ты взял что они так называются ? такие названия у переводов только если у тебя несколько вариантов перевода. работе gettext это никак не мешает.

dhampire ★★★
()
Ответ на: комментарий от dhampire

Осуществил возложение .mo файла в текущий подкаталог Russian_Russia.cp1251\LC_MESSAGES - не хочет работать. Есть какой-нибудь strace под win?

kiverattes ★☆
() автор топика
Ответ на: комментарий от kiverattes

Russian_Russia.cp1251\LC_MESSAGES

о ужас, советую для начала почитать faq для gettext, или посмотреть проекты его использующие под виндой DC++, Geany, EiskaltDC++ и т.д.

ибо нужно s/Russian_Russia.cp1251/ru/g

dhampire ★★★
()
Ответ на: комментарий от dhampire
#include <intl/libintl.h>
....
#define GUI_LOCALE_DIR "./"
#define GUI_PACKAGE "mycoolprigram"
#define GUI_CODEPAGE "UTF-8"
.....
bindtextdomain(GUI_PACKAGE, GUI_LOCALE_DIR);
bind_textdomain_codeset(GUI_PACKAGE, GUI_CODEPAGE );
....
dhampire ★★★
()
Ответ на: комментарий от dhampire

О, заработало. Только не «ru», а «RU», с «ru» - не хочет.

kiverattes ★☆
() автор топика
Ответ на: комментарий от dhampire

А правильно я понимаю, что gettext умеет возвращать только char*? Умеет ли он работать с wchar_t? Хотя это нафиг не нужно, если использовать UTF-8.

kiverattes ★☆
() автор топика
Ответ на: комментарий от kiverattes

А правильно я понимаю, что gettext умеет возвращать только char*?

да

Умеет ли он работать с wchar_t?

нет

dhampire ★★★
()
Ответ на: комментарий от kiverattes

Language Fill in the language code of the language. This can be in one of three forms:

‘ll’, an ISO 639 two-letter language code (lowercase). See Language Codes for the list of codes. ‘ll_CC’, where ‘ll’ is an ISO 639 two-letter language code (lowercase) and ‘CC’ is an ISO 3166 two-letter country code (uppercase). The country code specification is not redundant: Some languages have dialects in different countries. For example, ‘de_AT’ is used for Austria, and ‘pt_BR’ for Brazil. The country code serves to distinguish the dialects. See Language Codes and Country Codes for the lists of codes. ‘ll_CC@variant’, where ‘ll’ is an ISO 639 two-letter language code (lowercase), ‘CC’ is an ISO 3166 two-letter country code (uppercase), and ‘variant’ is a variant designator. The variant designator (lowercase) can be a script designator, such as ‘latin’ or ‘cyrillic’.

The naming convention ‘ll_CC’ is also the way locales are named on systems based on GNU libc. But there are three important differences:

In this PO file field, but not in locale names, ‘ll_CC’ combinations denoting a language's main dialect are abbreviated as ‘ll’. For example, ‘de’ is equivalent to ‘de_DE’ (German as spoken in Germany), and ‘pt’ to ‘pt_PT’ (Portuguese as spoken in Portugal) in this context. In this PO file field, suffixes like ‘.encoding’ are not used. In this PO file field, variant designators that are not relevant to message translation, such as ‘@euro’, are not used.

So, if your locale name is ‘de_DE.UTF-8’, the language specification in PO files is just ‘de’.

цитата с мануала по gettext

dhampire ★★★
()
Ответ на: комментарий от kiverattes

Есть какой-нибудь strace под win?

Конечно есть. Process monitor, автор вроде Руссинович. Запускаешь, добавляешь в фильтр pid, либо имя процесса, apply -> CTRL+E, воспроизводишь, CTRL+E и смотришь (если надо отловить путь) то вызовы CreateFile() .

DELIRIUM ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.