2009-05-07 18 views
1

比較的信頼できるソースから、gettextが動作するためにシステムロケールを必要としないと聞きました。しかし、私はいくつかのチュートリアルを試しましたが、locale-gen'd(archで)fi_FI.utf8を持たない限り、私はどの翻訳も表示できません。Gettextとロケール

 
[email protected]:~/programming/Projects/Cpp/web/test# LANG=fi_FI.utf8 bin/hello 
Hello world! 
This is package: web-cms 
[email protected]:~/programming/Projects/Cpp/web/test# sed -i 's/#fi_FI.UTF-8/fi_FI.UTF-8/' /etc/locale.gen && locale-gen 
Generating locales... 
    en_GB.UTF-8... done 
    en_US.UTF-8... done 
    fi_FI.UTF-8... done 
Generation complete. 
[email protected]:~/programming/Projects/Cpp/web/test# LANG=fi_FI.utf8 bin/hello 
Terve maailma 
Tämä on paketti: web-cms 

答えて

1

正しく聞こえましたか?私が知る限り、gettextが動作するためにはシステムロケールが必要です。ただし、 "hello world"を動作させるために、これらのシステムロケールのすべての翻訳をインストールする必要はありません。言語コードは「FR」であり、そしてあなたは、ディレクトリの「FR/LC_MESSAGES/.moの」ファイルはのbindtextdomainによって指されている場合

+0

そうかもしれません。通常のユーザーとしてロケールをインストールする方法はありますか? – Masse

+0

私が知っているわけではありません。あなたのLinuxディストリビューションに依存していますが、ロケールを生成するためにはrootアクセスが必要です。つまり、CMSを使用している人は、適切なロケールを生成するようにシステム管理者に依頼する必要があります。 システムロケールのこの要件は、数十の言語でウェブサイトを提供したいウェブ環境では非常に面倒です。これはおそらく、ほとんどのWebフレームワークがgettextを使わず、ICTやgettextのように機能するがそれに依存しないカスタムライブラリのようなものを使用する理由です。 –

+0

うーん...明らかにDjangoはPHPのほかに翻訳のためにgettextを使用していますが、それらは成功しているようです。 – Masse

0
setenv("LANGUAGE", languagecode); 

、それが動作するはずです。