MozillaZine.jp フォーラム https://forums.mozillazine.jp/ |
|
ローカライズで PluralForm が正常に動作しない https://forums.mozillazine.jp/viewtopic.php?f=26&t=9205 |
ページ 1 / 1 |
作成者: | masahal [ 2009年10月05日(月) 18:42 ] |
記事の件名: | ローカライズで PluralForm が正常に動作しない |
ローカライズで単数形と複数形に対応するための Localization and Plurals を使おうとしたんですが、general.useragent.locale を en-US にして試したところ、単数でも複数でも単数の場合として処理されてしまいました。 以下のコードで調べたところ、規則の数が1になっていました。 コード: Components.utils.import("resource://gre/modules/PluralForm.jsm");
var numForms = PluralForm.numForms(); alert(numForms); バグかもしれませんがどうすればいいでしょう。 |
作成者: | Cai [ 2009年10月05日(月) 19:55 ] |
記事の件名: | Re: ローカライズで PluralForm が正常に動作しない |
masahal さんが書きました: ローカライズで単数形と複数形に対応するための Localization and Plurals を使おうとしたんですが、general.useragent.locale を en-US にして試したところ、単数でも複数でも単数の場合として処理されてしまいました。
以下のコードで調べたところ、規則の数が1になっていました。 コード: Components.utils.import("resource://gre/modules/PluralForm.jsm"); var numForms = PluralForm.numForms(); alert(numForms); バグかもしれませんがどうすればいいでしょう。 どの Firefox をお使いでしょうか? 1. Firefox 日本語版 (ja, ja-JP-mac) 2. Firefox 英語版 (en-US) 3. Firefox 英語版 (en-US) に日本語リソースを追加 (ja, ja-JP-mac) 3. の場合には、en-US の言語リソースを持っていません。再起動しても UI が日本語のままということからも理解していただけると思います。 当然 en-US の chrome/global/intl.properties もありません。使われるのは ja, ja-JP-mac の chrome/global/intl.properties です。 そのため、日本語ロケールの設定 pluralRule = 0 (1 形式) が使われます。 |
作成者: | masahal [ 2009年10月05日(月) 21:10 ] |
記事の件名: | Re: ローカライズで PluralForm が正常に動作しない |
引用: どの Firefox をお使いでしょうか? 1. Firefox 日本語版 (ja, ja-JP-mac) 2. Firefox 英語版 (en-US) 3. Firefox 英語版 (en-US) に日本語リソースを追加 (ja, ja-JP-mac) 「1. Firefox 日本語版 (ja, ja-JP-mac)」です。 引用: 3. の場合には、en-US の言語リソースを持っていません。再起動しても UI が日本語のままということからも理解していただけると思います。
当然 en-US の chrome/global/intl.properties もありません。使われるのは ja, ja-JP-mac の chrome/global/intl.properties です。 そのため、日本語ロケールの設定 pluralRule = 0 (1 形式) が使われます。 1. の場合には、と言うことですよね。 なるほどそういうことだと元と違う言語設定にしている人の場合ちゃんと動作しないから、 PluralForm は使わない方が無難ということみたいですね。ありがとうございました。 |
作成者: | masahal [ 2009年10月05日(月) 23:03 ] |
記事の件名: | Re: ローカライズで PluralForm が正常に動作しない |
でもやっぱりないとちょっと不便かな……。 何か代替手段とかないでしょうか。 |
作成者: | あ [ 2009年10月06日(火) 00:52 ] |
記事の件名: | Re: ローカライズで PluralForm が正常に動作しない |
masahal さんが書きました: PluralForm は使わない方が無難ということみたいですね。
アドオンが言語リソースを持っていて、その言語に応じた plural rule を使いたいというような状況でしょうか。 もしそうでしたら、メソッド: makeGetter を見てください。 |
作成者: | masahal [ 2009年10月07日(水) 20:53 ] |
記事の件名: | Re: ローカライズで PluralForm が正常に動作しない |
あ さんが書きました: アドオンが言語リソースを持っていて、その言語に応じた plural rule を使いたいというような状況でしょうか。
もしそうでしたら、メソッド: makeGetter を見てください。 特定の言語にだけ対応したいなら確かにこれでできますね。 一応以下のようなコードで対応することにしました。 コード: var PluralFormGet, numForms;
//あらかじめ en-US ロケールの lang に言語名を登録しておき、それで言語を判定する。 //英語ならそれに対応した PluralForm.get 関数を取得 if(bundle.getString("lang")=="English") [PluralFormGet, numForms] = PluralForm.makeGetter(1); else PluralFormGet = PluralForm.get; var label = PluralFormGet(sampleNum, bundle.getString("sampleText")); label = label.replace("#1", sampleNum); |
作成者: | fcp [ 2009年10月31日(土) 08:10 ] |
記事の件名: | Re: ローカライズで PluralForm が正常に動作しない |
既に解決されているようですが、ちょっと気になったので。 masahal さんが書きました: 一応以下のようなコードで対応することにしました。 たしかにこの方法なら Firefox の英語以外の版で general.useragent.locale を en-US に設定しているという極めて特殊な状況でもアドオンが英語で正しく動くようになるかと思いますが、そういう設定をする人はまずいないので、最初の方法のままで正しかったと思います。この方法でも、多くの言語に対応するのが困難だという以外に実害は思いつきませんが。コード: var PluralFormGet, numForms; //あらかじめ en-US ロケールの lang に言語名を登録しておき、それで言語を判定する。 //英語ならそれに対応した PluralForm.get 関数を取得 if(bundle.getString("lang")=="English") [PluralFormGet, numForms] = PluralForm.makeGetter(1); else PluralFormGet = PluralForm.get; var label = PluralFormGet(sampleNum, bundle.getString("sampleText")); label = label.replace("#1", sampleNum); 日本語でも英語でも動作するアドオンを作る場合、 Cai さんのおっしゃる Cai さんが書きました: どの Firefox をお使いでしょうか? の 3 番を使うのがお勧めです。こうしておけば Locale Switcher で簡単に言語を切り替えることもできます。
1. Firefox 日本語版 (ja, ja-JP-mac) 2. Firefox 英語版 (en-US) 3. Firefox 英語版 (en-US) に日本語リソースを追加 (ja, ja-JP-mac) 本当は日本語版に en-US のリソースを追加できると簡単なのですが、今のところなぜか en-US のリソースだけというのは公開されていないのでこの方法は不可能です。 Bug 485860 のせいらしいですが、よく理解していません。 |
作成者: | fcp [ 2009年11月02日(月) 00:46 ] |
記事の件名: | Re: ローカライズで PluralForm が正常に動作しない |
ごめんなさい、大嘘を書いておりました。 拡張機能では PluralForm.get ではなく PluralForm.makeGetter を使うのが正しいです。でないと、 Firefox のロケールと拡張機能のロケールが一致しない場合に正しく動作しません。というのを自分で拡張機能を書いたときにさんざん調べて理解したのに、もう忘れていました。 普通は、 makeGetter に渡す引数をロケールによって変えられるように、 stringbundle で読み込む properties ファイルに コード: pluralRule=1 のような設定を仕込んでおきます。そうすると、 JavaScript の側で言語によって場合分けをする必要がなくなり、多くのロケールに対応するのも容易になります。
|
作成者: | masahal [ 2009年11月30日(月) 09:12 ] |
記事の件名: | Re: ローカライズで PluralForm が正常に動作しない |
どうも、返信遅れてすいません。 fcp さんが書きました: 普通は、 makeGetter に渡す引数をロケールによって変えられるように、 stringbundle で読み込む properties ファイルに
コード: pluralRule=1 のような設定を仕込んでおきます。そうすると、 JavaScript の側で言語によって場合分けをする必要がなくなり、多くのロケールに対応するのも容易になります。あーなるほど、確かにこれなら多言語の対応も楽ですね。 ただBabellzillaで他の人にローカライズしてもらう時、何を意味してるのかわからってもらえないんじゃないかという気もします(まあそれは私の元の方法でも同じですけど)。 うーん、ローカライズのことまで考えると、書式がわかりにくいという問題もあるし、 PuralForm はやっぱり使わないほうが無難かなあ……。 |
作成者: | fcp [ 2009年12月12日(土) 07:45 ] |
記事の件名: | Re: ローカライズで PluralForm が正常に動作しない |
masahal さんが書きました: うーん、ローカライズのことまで考えると、書式がわかりにくいという問題もあるし、 PuralForm はやっぱり使わないほうが無難かなあ……。 PluralForm が好みでないということでしたら、好みに口を出すつもりはありませんが、 PluralForm を使わなければどうするつもりなのでしょう。日本語と英語だけならともかく、多数の言語に対応しようとすると、 PluralForm を使わない方法は僕には思いつきません。(複数形を正しくするのは諦める、というのは選択肢の一つだと思います。複数形が正しくなくてもソフトウェアは一応使えますし、どうせ複数形だけ正しくしたところで、言語を知らなければ完璧なローカライズなんてできませんし……。僕は BabelZilla でロシア語の翻訳者から「ロシア語の日付の格が間違っている」と言われていて、うまい直し方を思いつかず、ちょっとへこんでいます。が、それは別の話。) masahal さんが書きました: fcp さんが書きました: 普通は、 makeGetter に渡す引数をロケールによって変えられるように、 stringbundle で読み込む properties ファイルに コード: pluralRule=1 のような設定を仕込んでおきます。そうすると、 JavaScript の側で言語によって場合分けをする必要がなくなり、多くのロケールに対応するのも容易になります。あーなるほど、確かにこれなら多言語の対応も楽ですね。 ただBabellzillaで他の人にローカライズしてもらう時、何を意味してるのかわからってもらえないんじゃないかという気もします(まあそれは私の元の方法でも同じですけど)。 コード: # LOCALIZATION NOTE (pluralRule): Usually just copying from と書いています (上のは en-US ロケールの場合です)。
# chrome://global/locale/intl.properties of your language should be enough. # See: http://developer.mozilla.org/en/docs/Localization_and_Plurals pluralRule = 1 意味が伝わらないかもと危惧していましたが、 BabelZilla ではみんな意味を理解してくれたみたいで、 pluralRule の値を自分で修正する必要はありませんでした。 ところで、前の書き込みで僕は「普通は」と書きましたが、少なくとも Mozilla Developer Center の記事「Localization and Plurals」にはこんな方法載っていませんね。普通ではないかもしれません。どうやってこの方法に辿り着いたのか覚えていませんが、たぶん何かの拡張機能でやっているのを真似たんだと思います。上の Usually just copying from ... の文章は自分で書いた覚えがあります (ので英語は間違っているかもしれません)。 |
作成者: | fcp [ 2009年12月15日(火) 03:42 ] |
記事の件名: | Re: ローカライズで PluralForm が正常に動作しない |
補足です。 fcp さんが書きました: 僕は と書いた途端に修正する必要のありそうなケースに出会いました。しくしく。
コード: # LOCALIZATION NOTE (pluralRule): Usually just copying from と書いています (上のは en-US ロケールの場合です)。# chrome://global/locale/intl.properties of your language should be enough. # See: http://developer.mozilla.org/en/docs/Localization_and_Plurals pluralRule = 1 意味が伝わらないかもと危惧していましたが、 BabelZilla ではみんな意味を理解してくれたみたいで、 pluralRule の値を自分で修正する必要はありませんでした。 本来 pluralRule=0 とするべき言語の一つで、 =1 のまま単数形と複数形に同じことを書いてきた人がいました。このままでも動作に支障はないはずですが、気持ちが悪いので、直してもらうよう翻訳者に頼むつもりです。 |
ページ 1 / 1 | All times are UTC + 9 hours |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |