我正在尝试在 java 项目中使用gettext来提供不同语言的翻译。
我的工作站运行 Windows 7,因此我希望能够在其上完成整个构建过程(包括密钥生成和翻译更新 - 全部来自 gradle 脚本)。
但是msgfmt工具返回错误:'Bad file descriptor'没有任何附加信息...
我无法通过 Internet 找到任何有用的信息。有人遇到了类似的问题,名叫 Daiki Ueno 的人提出了一个补丁,但我想它没有进入官方gettext版本,因为问题仍然存在......
请参阅:https ://lists.gnu.org/archive/html/bug-gnulib/2013-09/msg00049.html
脚步
在项目中创建java文件列表
dir *.java /s/b > files.txt
创建翻译目录
mkdir po
创建一个包含所有本地语言字符串的 pot 文件
xgettext -ktrc -ktr -kmarktr -ktrn:1,2 --from-code=utf-8 -o po\keys.pot -f files.txt
替换 keys.pot 文件中的 CHARSET 以更正编码名称“utf-8”
...手动步骤...
创建带有内容描述的翻译文件
type nul >> po\pl.po & copy po\pl.po +,,
echo msgid "" >> po\pl.po
echo msgstr "" >> po\pl.po
echo "Content-Type: text/plain; charset=UTF-8\n\" >> po\pl.po
将键合并到本地化 po 文件中
msgmerge -U po\pl.po po\keys.pot
创建默认 ResourceBundle 类文件 << 失败并出现错误(见下文)
set JAVAC=c:\Java\jdk1.8.0_40\bin\javac.exe
set TMPDIR=c:\temp
msgfmt --verbose -java2 -d src\main\java -r com.haso.Messages po\keys.pot
我尝试了以下gettext的实现:
- GetGnuWin32-0.6.3
- MinGW-0.18.3
- gettext-tool-windows-0.18.3
- gettext-tool-windows-0.19.4
- gettext-iconv-windows-0.19.4
第一个在 Windows 7 64bit 中崩溃
其余的msgfmt给出以下输出:
>msgfmt: c:\Java\jdk1.8.0_40\bin\javac.exe subprocess failed: Bad file descriptor
任何人都可以帮助它工作吗?