2017-01-26 4 views
1

私はビルドシステムとしてもautotoolsを使用しています。 私はいくつかの.poファイル(de.po、es.po、th.po)を持っており、autotoolsを使って問題なく動かすことができます。後:私のプログラムをdebianパッケージで翻訳することはできませんが、autotoolsを使用することができます

./configure, 
make 
sudo make install 

プログラムと翻訳.moファイルがインストールされます。

$ export LANG=de_DE.UTF-8 
$ ./myprogram 

及び翻訳作品:私は、ターミナルを開き、ロケール例えばを変更するには、テスト !

私は同じソースコードをdebian debパッケージとしています。 でのdebインストール中に。

#!/bin/bash 
set -e 
# check for locale dir (LIVE SYSTEMS don't have it) 
if [ -d "/usr/local/share/locale" ]; then 
    podir="/usr/lib/docklight/docklight.data/po" 
    if [ -d ${podir} ]; then 
     cd ${podir} 
     PO_LINGUAS=$(if test -r LINGUAS; then grep -v "^\#" LINGUAS; fi) 
     linguas=$PO_LINGUAS 
     for lang in $linguas; do 

      dir=/usr/local/share/locale/$lang/LC_MESSAGES; 

      # check for locale dir (LIVE SYSTEMS don't have it) 
      if [ ! -d $dir ]; then 
       continue; 
      fi 

      # check for po file 
      if [ ! -f "$lang.po" ]; then 
       continue; 
      fi 

      file=`echo $lang | sed 's,.*/,,'`.gmo \ 
      && rm -f $file && /usr/local/bin/msgfmt -o $file "$lang.po" 

      /bin/bash install-sh -d $dir; \ 
      if test -r $lang.gmo; then \ 
       /usr/bin/install -c -m 644 $lang.gmo $dir/docklight.mo; \ 
       echo "installing $lang.gmo as $dir/docklight.mo"; \ 
       else \ 
       /usr/bin/install -c -m 644 ./$lang.gmo $dir/docklight.mo; \ 
       echo "installing ./$lang.gmo as" \ 
       "$dir/docklight.mo"; \ 
      fi 

     done  
    fi 
fi 

生成された翻訳.moのファイルが正しいとのロケールフォルダにインストールされます:posinstスクリプト iはロケール先への翻訳のmoファイルを展開(docklightはプログラム名です)言語:

dir=/usr/local/share/locale/$lang/LC_MESSAGES; 

autotoolsでのビルドプロセスと同じです。 言語をテストした後:

$ export LANG=de_DE.UTF-8 
$ ./myprogram 

私のプログラムは、任意の翻訳を持っていません。 問題の原因がわかりません。 Debインストールが正しく動作します!

は、私がdebian debパッケージの作成を気にする必要があるものですか?

私が理解する限り、myprogramm.moファイルを入手すると、プログラムが翻訳されるはずです。

これに関するアイデアはありますか?

ご協力いただきありがとうございます。

答えて

0

解決策が見つかった場合: moファイルがある場所にPROGRAMNAME_LOCALEDIRパスを設定するだけです。 gettextの初期化によってmoファイルが見つかる可能性があり、すべてが翻訳されます。 作品

bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR); 
    %s\n",domain,GETTEXT_PACKAGE,PROGRAMNAME_LOCALEDIR); 
    bind_textdomain_codeset - set encoding of message trans‐lations 
    btdcodeset = bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); 

ありがとうございます。

関連する問題