― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

返信する
ユーザー名:
件名:
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: ON
BBCode を無効にする
フォントサイズ:
フォントカラー
スマイリーを無効にする
URL を自動的にパースしない
ユーザエージェントを表示する
認証コード
KCaptcha by Nikita_Sp
   

トピックのレビュー - ローカライズで PluralForm が正常に動作しない
作成者 メッセージ
  記事の件名:  Re: ローカライズで PluralForm が正常に動作しない  引用付きで返信する
補足です。
fcp さんが書きました:
僕は
コード:
# LOCALIZATION NOTE (pluralRule): Usually just copying from
# chrome://global/locale/intl.properties of your language should be enough.
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
pluralRule            = 1
と書いています (上のは en-US ロケールの場合です)。
意味が伝わらないかもと危惧していましたが、 BabelZilla ではみんな意味を理解してくれたみたいで、 pluralRule の値を自分で修正する必要はありませんでした。
と書いた途端に修正する必要のありそうなケースに出会いました。しくしく。
本来 pluralRule=0 とするべき言語の一つで、 =1 のまま単数形と複数形に同じことを書いてきた人がいました。このままでも動作に支障はないはずですが、気持ちが悪いので、直してもらうよう翻訳者に頼むつもりです。
投稿記事 Posted: 2009年12月15日(火) 03:42
  記事の件名:  Re: ローカライズで PluralForm が正常に動作しない  引用付きで返信する
masahal さんが書きました:
うーん、ローカライズのことまで考えると、書式がわかりにくいという問題もあるし、 PuralForm はやっぱり使わないほうが無難かなあ……。
PluralForm が好みでないということでしたら、好みに口を出すつもりはありませんが、 PluralForm を使わなければどうするつもりなのでしょう。日本語と英語だけならともかく、多数の言語に対応しようとすると、 PluralForm を使わない方法は僕には思いつきません。

(複数形を正しくするのは諦める、というのは選択肢の一つだと思います。複数形が正しくなくてもソフトウェアは一応使えますし、どうせ複数形だけ正しくしたところで、言語を知らなければ完璧なローカライズなんてできませんし……。僕は BabelZilla でロシア語の翻訳者から「ロシア語の日付の格が間違っている」と言われていて、うまい直し方を思いつかず、ちょっとへこんでいます。が、それは別の話。)

masahal さんが書きました:
fcp さんが書きました:
普通は、 makeGetter に渡す引数をロケールによって変えられるように、 stringbundle で読み込む properties ファイルに
コード:
pluralRule=1
のような設定を仕込んでおきます。そうすると、 JavaScript の側で言語によって場合分けをする必要がなくなり、多くのロケールに対応するのも容易になります。


あーなるほど、確かにこれなら多言語の対応も楽ですね。
ただBabellzillaで他の人にローカライズしてもらう時、何を意味してるのかわからってもらえないんじゃないかという気もします(まあそれは私の元の方法でも同じですけど)。
僕は
コード:
# LOCALIZATION NOTE (pluralRule): Usually just copying from
# chrome://global/locale/intl.properties of your language should be enough.
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
pluralRule            = 1
と書いています (上のは en-US ロケールの場合です)。
意味が伝わらないかもと危惧していましたが、 BabelZilla ではみんな意味を理解してくれたみたいで、 pluralRule の値を自分で修正する必要はありませんでした。

ところで、前の書き込みで僕は「普通は」と書きましたが、少なくとも Mozilla Developer Center の記事「Localization and Plurals」にはこんな方法載っていませんね。普通ではないかもしれません。どうやってこの方法に辿り着いたのか覚えていませんが、たぶん何かの拡張機能でやっているのを真似たんだと思います。上の Usually just copying from ... の文章は自分で書いた覚えがあります (ので英語は間違っているかもしれません)。
投稿記事 Posted: 2009年12月12日(土) 07:45
  記事の件名:  Re: ローカライズで PluralForm が正常に動作しない  引用付きで返信する
どうも、返信遅れてすいません。
fcp さんが書きました:
普通は、 makeGetter に渡す引数をロケールによって変えられるように、 stringbundle で読み込む properties ファイルに
コード:
pluralRule=1
のような設定を仕込んでおきます。そうすると、 JavaScript の側で言語によって場合分けをする必要がなくなり、多くのロケールに対応するのも容易になります。


あーなるほど、確かにこれなら多言語の対応も楽ですね。
ただBabellzillaで他の人にローカライズしてもらう時、何を意味してるのかわからってもらえないんじゃないかという気もします(まあそれは私の元の方法でも同じですけど)。

うーん、ローカライズのことまで考えると、書式がわかりにくいという問題もあるし、 PuralForm はやっぱり使わないほうが無難かなあ……。
投稿記事 Posted: 2009年11月30日(月) 09:12
  記事の件名:  Re: ローカライズで PluralForm が正常に動作しない  引用付きで返信する
ごめんなさい、大嘘を書いておりました。

拡張機能では PluralForm.get ではなく PluralForm.makeGetter を使うのが正しいです。でないと、 Firefox のロケールと拡張機能のロケールが一致しない場合に正しく動作しません。というのを自分で拡張機能を書いたときにさんざん調べて理解したのに、もう忘れていました。

普通は、 makeGetter に渡す引数をロケールによって変えられるように、 stringbundle で読み込む properties ファイルに
コード:
pluralRule=1
のような設定を仕込んでおきます。そうすると、 JavaScript の側で言語によって場合分けをする必要がなくなり、多くのロケールに対応するのも容易になります。
投稿記事 Posted: 2009年11月02日(月) 00:46
  記事の件名:  Re: ローカライズで PluralForm が正常に動作しない  引用付きで返信する
既に解決されているようですが、ちょっと気になったので。
masahal さんが書きました:
一応以下のようなコードで対応することにしました。

コード:
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);
たしかにこの方法なら Firefox の英語以外の版で general.useragent.locale を en-US に設定しているという極めて特殊な状況でもアドオンが英語で正しく動くようになるかと思いますが、そういう設定をする人はまずいないので、最初の方法のままで正しかったと思います。この方法でも、多くの言語に対応するのが困難だという以外に実害は思いつきませんが。

日本語でも英語でも動作するアドオンを作る場合、 Cai さんのおっしゃる
Cai さんが書きました:
どの Firefox をお使いでしょうか?
1. Firefox 日本語版 (ja, ja-JP-mac)
2. Firefox 英語版 (en-US)
3. Firefox 英語版 (en-US) に日本語リソースを追加 (ja, ja-JP-mac)
の 3 番を使うのがお勧めです。こうしておけば Locale Switcher で簡単に言語を切り替えることもできます。

本当は日本語版に en-US のリソースを追加できると簡単なのですが、今のところなぜか en-US のリソースだけというのは公開されていないのでこの方法は不可能です。 Bug 485860 のせいらしいですが、よく理解していません。
投稿記事 Posted: 2009年10月31日(土) 08:10
  記事の件名:  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);
投稿記事 Posted: 2009年10月07日(水) 20:53
  記事の件名:  Re: ローカライズで PluralForm が正常に動作しない  引用付きで返信する
masahal さんが書きました:
PluralForm は使わない方が無難ということみたいですね。

アドオンが言語リソースを持っていて、その言語に応じた plural rule を使いたいというような状況でしょうか。
もしそうでしたら、メソッド: makeGetter を見てください。
投稿記事 Posted: 2009年10月06日(火) 00:52
  記事の件名:  Re: ローカライズで PluralForm が正常に動作しない  引用付きで返信する
でもやっぱりないとちょっと不便かな……。
何か代替手段とかないでしょうか。
投稿記事 Posted: 2009年10月05日(月) 23:03
  記事の件名:  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 は使わない方が無難ということみたいですね。ありがとうございました。
投稿記事 Posted: 2009年10月05日(月) 21:10
  記事の件名:  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 形式) が使われます。
投稿記事 Posted: 2009年10月05日(月) 19:55
  記事の件名:  ローカライズで PluralForm が正常に動作しない  引用付きで返信する
ローカライズで単数形と複数形に対応するための Localization and Plurals を使おうとしたんですが、general.useragent.locale を en-US にして試したところ、単数でも複数でも単数の場合として処理されてしまいました。
以下のコードで調べたところ、規則の数が1になっていました。

コード:
Components.utils.import("resource://gre/modules/PluralForm.jsm");
var numForms = PluralForm.numForms();
      
alert(numForms);


バグかもしれませんがどうすればいいでしょう。
投稿記事 Posted: 2009年10月05日(月) 18:42

All times are UTC + 9 hours


ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean