0

我正在尝试在 linux 中本地化我的程序。该项目遵循gnu结构(希望如此)

$ tree -d
.
|-- autom4te.cache
|-- build-aux
|-- data
|-- help
|   `-- C
|       `-- images
|-- images
|-- m4
|-- po
`-- src

现在,我想本地化我的 package.desktop.in

$ cat data/package.desktop.in 
[Desktop Entry]
_Name=package
_GenericName=package
_X-GNOME-FullName= Editor
_Comment=Editor file
_Keywords=Editor
Exec=editor
Icon=editor
Terminal=false
Type=Application
Categories=GNOME;GTK;Utility;
StartupNotify=true
X-GNOME-UsesNotifications=true

我的帮助/Makefile.am 包含:

HELP_LINGUAS = bn_IN

现在,我尝试使用gettextas 创建 .pot 文件:

po]$ xgettext -o package.pot package.desktop.in
xgettext: warning: file `packege.desktop.in' extension `desktop' is unknown; will try C
xgettext: error while opening "package.desktop.in" for reading: No such file or directory

$ cat POTFILES.in 
data/package.desktop.in
[type: gettext/glade]data/package-menus.ui
data/org.package.gschema.xml.in

我的数据/包含:

$ tree ../data/*
../data/main-window.ui [error opening dir]
../data/Makefile [error opening dir]
../data/Makefile.am [error opening dir]
../data/Makefile.in [error opening dir]
../data/package.desktop [error opening dir]
../data/package.desktop.in [error opening dir]
../data/package.png [error opening dir]
../data/packege.svg [error opening dir]
../data/org.package.gschema.xml [error opening dir]
../data/org.package.gschema.xml.in [error opening dir]

我也尝试过 intltool,但也失败了。

我在关注这个。请帮助解决这个问题。

4

2 回答 2

0

您需要使用intltool-extractbefore xgettext,如下所示:

# prepare the *.desktop file to be used with intltool-extract
sed -r -e '/^(Name|Comment)\[/d' \
       -e 's/^(Name|Comment)/_\1/' \
       package.desktop > package.desktop.in

# you are missing this step; it creates a *.h file xgettext can parse
intltool-extract --type=gettext/ini package.desktop.in

# then you do
xgettext --keyword=N_:1 --join-existing --output messages.pot package.desktop.in.h

# combine new strings with existing translations
for POFILE in *.po; do msgmerge --update $POFILE messages.pot ; done

# and finally merge back into the desktop file
intltool-merge --desktop-style . package.desktop.in package.desktop

改编自https://github.com/gottcode/xfce4-whiskermenu-plugin/blob/master/po/update-po.sh

于 2014-05-14T00:41:17.613 回答
0

虽然我不知道 *.in 文件是什么,但 Gettext 的xgettext工具只能从有限的一组语言中提取字符串,它旨在查找特定的关键字/函数。(请注意您的错误,它将“尝试 C”)

您可以强制使用一种语言,例如,--language=java但我认为您在那里的格式会不走运。

您的文件看起来像一个语言包,而不是原始源代码,因此请尝试将其重命名为 *.properties 并进行转换

于 2013-06-19T15:05:37.100 回答