アカウント名:
パスワード:
"File %1 is not found in directory %2." "ディレクトリ %2 の中にファイル %1 がありません。"
あまいです. 例えば日本語で
"%1番目からの%2個のパラメータが異常です."
で表現されるメッセージを英語で記述することを考えてみてください.
1番目からの1個のパラメータが異常です.→1 parameter from 1st is wrong. 5番目からの3個のパラメータが異常です.→3 parameters from 5th are wrong.
この例は実際に私がdfmだかROXだかを多国語対応しようとした時に引っかかった部分ですが, このような簡単なメッセージであってもそれなりの条件判断が行えなければまともな言葉にはならないようです. なので他のコメントに有ったように表示文字列を構成するのはプログラム側で行って, 指定は%1だけというのも有るのかと思います. あるいは端から文法なんて考えなくても済むようにキーワードだけの羅列にするとか.
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
物事のやり方は一つではない -- Perlな人
Windows のアプローチ (スコア:2, すばらしい洞察)
こいつはメッセージの本文をイベントメッセージファイル(.dll)に格納しておいて、そのファイルをイベントログ ID と共にレジストに登録します。
イベントログを登録する側は (イベントID, 引数1, 引数2...) を指定して記録する仕組みです。
自由にメッセージ文を指定できない代わりに、メッセージファイルを 入れ換えると別言語に簡単に対応できるというメリットがあります。
あと、%1, %2 とかで引数位置を指定できるので、キーワードの位置 出現位置の問題は解決していますな。
って、感じです。
コンタミは発見の母
Re:Windows のアプローチ (スコア:2, すばらしい洞察)
上のほうの議論では、カーネルレベルの話とユーザランドレベルの話を
混同して、「Windows ではできるのに以下略」とかいう話を散見しますが、
実際には方法がまったく違うので、単純な比較はできませんね。
結局のところ、syslog を捨てない限り、まともな国際化はできない、
と考えるべきでしょう。
個人的には、syslog とかそういうのはそのままおいておいて、
別のイベントログメカニズムを用意するのが筋だと思ってます。
Re:Windows のアプローチ (スコア:1)
(該当ソフトがインストールされていないとメッセージが読めない…)
# PCが転けたときの対応が非常にメンドいです。
notice : I ignore an anonymous contribution.
Re:Windows のアプローチ (スコア:1)
1984年位だったと思いますのでWindowsが生まれるずっと昔のことです。
実際にはメッセージファイルを入れ換えるのではなくOSの言語コード
を指定するだけだったと思います。
# 最近携わってないのでうる覚えです。
田舎のLinux野郎
Re:Windows のアプローチ (スコア:1)
あまいです. 例えば日本語で
"%1番目からの%2個のパラメータが異常です."
で表現されるメッセージを英語で記述することを考えてみてください.
1番目からの1個のパラメータが異常です.→1 parameter from 1st is wrong. 5番目からの3個のパラメータが異常です.→3 parameters from 5th are wrong.
この例は実際に私がdfmだかROXだかを多国語対応しようとした時に引っかかった部分ですが, このような簡単なメッセージであってもそれなりの条件判断が行えなければまともな言葉にはならないようです. なので他のコメントに有ったように表示文字列を構成するのはプログラム側で行って, 指定は%1だけというのも有るのかと思います. あるいは端から文法なんて考えなくても済むようにキーワードだけの羅列にするとか.
Re:Windows のアプローチ (スコア:0)
%1 しか登録されていないメッセージファイルをよく見かけますよ (^^;
# メッセージ内容がすべてプログラムで作成されていてげんなりしたから AC。