Java プロジェクトでgettextを使用して、さまざまな言語の翻訳を提供しようとしています。
私のワークステーションは Windows 7 を実行しているので、ビルド プロセス全体を実行できるようにしたいと考えています (キーの生成と翻訳の更新を含む - すべて gradle スクリプトから)。
ただし、 msgfmtツールはエラーを返します:追加情報なしで「不正なファイル記述子」 ...
インターネットで役立つ情報を見つけることができませんでした。誰かが同様の問題を抱えており、上野大樹という男がパッチを提案しましたが、問題がまだ存在するため、公式の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
create default ResourceBundle class file << エラーで失敗します (以下を参照)
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
誰でもそれを機能させるのを手伝ってもらえますか?