投稿者 |
メッセージ |
あ
登録日: 2006年9月 25日
記事: 693
|
件名: pluralRule を 1 にしません? 投稿時間: 2009年1月17日(土) 02:15 |
|
pluralRule は、今は本来の使い方に従って 0 になっていますが、英語に合わせて 1 にしませんか?
(Localization and Plurals - MDC)
直近の目的としては、[ブックマークを削除] ボタンを単数か複数かで切り替える(このリソース をまともにする)ことなんですが、
メリットとしては- この先 en-US と sync するときに、フォーマットの変換をしなくて済む。(たとえば second;seconds みたいなのを、秒 に置き換えるのではなく、単純に 秒;秒 にすれば良い。)
- ということは、秒;秒 にしてしまうようなミスを防げる。(このようなことが、こんな単純ではありませんが今回発生してしまっていました。)
- 仮に今後また [ブックマークを削除] ボタンのような問題があったとき、すぐに対策を入れられる。
- nightly JLP で、今は pluralRule が 1 になっているところに、0 用に書かれたリソースを merge してしまっているので、正しく動作しないことがある。これを解消できる。
デメリットとしては、これまでにすでに 「秒」のようにしてきたところをすべて「秒;秒」みたいに書き換えないといけないことですが、これは一度きりです。
ということで、Fx3.1 でやるのがいいのかどうかは別にして、どこかの時点では 1 に切り替えるのがいいんじゃないでしょうか。 |
|
|
|
あ
登録日: 2006年9月 25日
記事: 693
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年1月23日(金) 17:37 |
|
あ wrote: | デメリットとしては、これまでにすでに 「秒」のようにしてきたところをすべて「秒;秒」みたいに書き換えないといけないことですが、これは一度きりです。
ということで、Fx3.1 でやるのがいいのかどうかは別にして、どこかの時点では 1 に切り替えるのがいいんじゃないでしょうか。 |
SVN では 1 に切り替えました。
チェンジセット 107
Fx3.1 はこれで行こうと思ってます。
作業漏れはないつもりでいますが、もしあったら指摘お願いします。 |
|
|
|
takeshi
ゲスト
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年1月24日(土) 03:18 |
|
Bugzillaに書きましたが、今回のはPluralFormの誤用だと思っています。
「Fx3.1 でやるのがいいのかどうかは別にして、」と書かれていたので議論が落ち着くまで待ってもらえるかと楽観視していたのですが、既に切り替えられてしまったようなのでこっちにも書きます。
まず元になったバグについて書くと、英語版で1を省略したいがために導入するPluralFormには絶対反対です。PluralFormを使わないように修正するべきです。
そして、L10Nの意義を失わせるような行為に反対です。自らL10Nの地位をおとしめる行為は避けるべきです。PluralFormの乱用を許せばL10Nの賜物であるPluralFormの意義自体がなくなりかねません。
また、(たぶん)この変更はここだけに止まりません。将来拡張機能がPluralFormを使うようになったとき、拡張機能翻訳者への説明が必要になります。1つのバグを潰すための対処としては影響が広すぎます。
Firefox 3.1についてはstring freezeだかでコードの修正が難しそうです(こうすればねじこめるよ!という方法があれば教えてください)が、trunkでは何としてでも修正させる所存です。なのでpluralRule=0のまま行けませんでしょうか?
3.1での件の問題は残りますが、そもそもこの操作が直感的でないという問題(tooltipでもあればやりやすかったかも)がありますので、ボタンラベルを変更することを提案します。
Code: | この URL をすべて(#1 個)削除 もしくは
この URL をすべて削除(#1 個) |
参考:ボツネタ
Code: | この URL に一致する #1 個を削除
この URL の #1 個を削除
この URL を持つ #1 個を削除
削除(URL が一致する #1 個) |
あ wrote: | ということは、秒;秒 にしてしまうようなミスを防げる。(このようなことが、こんな単純ではありませんが今回発生してしまっていました。) |
今回のはともかく、まっとうな利用なら「秒;秒」のように;の左と右が同じ文字列に翻訳されるはずで、翻訳者も「ん?これでいいのか?」と疑問に思うはずです。きちんとやろうとするとlotでチェックしてもらうしかないでしょうけど。
あ wrote: | nightly JLP で、今は pluralRule が 1 になっているところに、0 用に書かれたリソースを merge してしまっているので、正しく動作しないことがある。これを解消できる。 |
これは現在の状況が分かりませんでした。指定したpluralRuleが反映されないということでしょうか。 |
|
|
|
あ
登録日: 2006年9月 25日
記事: 693
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年1月24日(土) 11:27 |
|
takeshi wrote: | Bugzillaに書きましたが、今回のはPluralFormの誤用だと思っています。
「Fx3.1 でやるのがいいのかどうかは別にして、」と書かれていたので議論が落ち着くまで待ってもらえるかと楽観視していたのですが、既に切り替えられてしまったようなので |
切り替えるのであれば、beta 3 で切り替えておいて、作業ミスがないか広くテストしてもらうべきだと考えています。
beta 3 の freeze が 1/24 なので、今のうちに切り替えました。
nightly では beta よりもずっとテスターが少ない(英語版とくらべると、日本語版はさらに)はずなので beta の時点で入れるべきで、これを逃していきなり RC から、ではリスクが大きいです。
仮に後で反対意見が出て戻すことになったとしても、それは元に戻すだけなのでリスクは小さいです。
なので、個人的には pluralRule は Fx3.1 では 1 に切り替えようとは思っていますが、最終的にどうするかは未決定。
切り替える場合に備えて beta3 ではテスター向けに切り替えておきますが、切り替えないことになれば戻すこともできます。
最終的にどうするのかについては引き続き意見募集中。
特に、これからも少なくともしばらくの間は、toolkit や browser の言語リソースの同期をすることになるであろう dynamis さんの意見が聞きたいです。
takeshi wrote: | まず元になったバグについて書くと、英語版で1を省略したいがために導入するPluralFormには絶対反対です。PluralFormを使わないように修正するべきです。
そして、L10Nの意義を失わせるような行為に反対です。自らL10Nの地位をおとしめる行為は避けるべきです。PluralFormの乱用を許せばL10Nの賜物であるPluralFormの意義自体がなくなりかねません。
また、(たぶん)この変更はここだけに止まりません。将来拡張機能がPluralFormを使うようになったとき、拡張機能翻訳者への説明が必要になります。1つのバグを潰すための対処としては影響が広すぎます。 | 今回の件については、これは誤用で修正すべきだと私も考えています。
が、日本語版での pluralRule の切り替えは、今回の件のためでなくそれ以外のメリットも考えてのものです。
takeshi wrote: | ボタンラベルを変更することを提案します。
Code: | この URL をすべて(#1 個)削除 もしくは
この URL をすべて削除(#1 個) |
|
ボタンラベルの提案も引き続き募集中。
ただし、beta3 にはもう時間が限られているので、変更はそれ以降になると思います。
takeshi wrote: | Firefox 3.1についてはstring freezeだかでコードの修正が難しそうです(こうすればねじこめるよ!という方法があれば教えてください) | string freeze 中に制限されるのは、en-US の *.dtd とか *.properties の変更です。
コードの変更自体は string freeze では制限されないので、en-US の *.properties を変えずにそれをなんとか処理するようなコードであれば、string freeze の影響は受けません。
ただし、もうすぐ beta 3 のコードフリーズで、RC へと向かっていきますから、コードの修正も難しくなっていきます。
string freeze を破って *.properties の変更をねじ込むのであれば、Axel Hecht さんを説得すれば良いでしょう。承認をもらった上で変更して、その変更内容を localizer 向けに mozilla.dev.l10n でアナウンスすることになります。
takeshi wrote: | 今回のはともかく、まっとうな利用なら「秒;秒」のように;の左と右が同じ文字列に翻訳されるはずで、翻訳者も「ん?これでいいのか?」と疑問に思うはずです。 | 英語で second;seconds だったら、「日本語では複数形はないから 秒;秒 でいいよね」って思う人も多いだろうと想像しています。
takeshi wrote: | きちんとやろうとするとlotでチェックしてもらうしかないでしょうけど。 | PluralForm かどうかを機械的に区別する方法がないので、機械的なチェックは不可能だろうと考えています。
takeshi wrote: | あ wrote: | nightly JLP で、今は pluralRule が 1 になっているところに、0 用に書かれたリソースを merge してしまっているので、正しく動作しないことがある。これを解消できる。 |
これは現在の状況が分かりませんでした。指定したpluralRuleが反映されないということでしょうか。 |
本体側の言語リソースは、string freeze 中を除くといつでも追加/削除が行われます。
しかし、それに同期して日本語のリソースを同期させて翻訳追加とかは不可能なので、nightly JLP では日本語の不足分を、英語版からそのままコピーしてきてくっつけた上で JLP を生成させています。
コピーして持ってきた英語版の文字列は pluralRule=1 用の文字列なのに対して、JLP では pluralRule=0 なので、これでは正しく動作しません。
というのがこれまでの現状でした。 |
|
|
|
takeshi
ゲスト
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年1月26日(月) 04:14 |
|
やっぱりせっかくのL10Nのための仕組みをぶちこわしにしている感じがして、好きになれません。
この仕組みが使いにくい・バグが入りやすいのであればその仕組みの改善を提案すべきで、最初からそれを放棄してしまうのは、L10Nへの取り組みをシステムレベルでやっている人達に失礼ですらあると思えます。いや、各言語のL10Nの取り組みを否定しているわけではもちろんありませんが(みなさまの継続的な活動には常日頃から感謝しています)。
で、コードの改善ですが、;の数が既定のものと違う場合かつ1の場合はpluralRule#1(英語版)にfallbackするのが妥当な落としどころかと思いますがいかがでしょうか?
PluralFormのコードを見ずに書いているので、問題があったら指摘してください。
あ wrote: | 個人的には pluralRule は Fx3.1 では 1 に切り替えようとは思っていますが、最終的にどうするかは未決定。
切り替える場合に備えて beta3 ではテスター向けに切り替えておきますが、切り替えないことになれば戻すこともできます。
最終的にどうするのかについては引き続き意見募集中。 |
一度3.1でそれをやってしまうと、元に戻れなくなることを考慮しておいてください。万一3.1で拡張機能でもpluralRuleが使われるようになれば元に戻す手間は計り知れません(既に使われているのかどうかは未確認)。何度も書きますが"editBookmark.removeBookmarks.label"の微調整でしのぐべきです。
あ wrote: | takeshi wrote: | ボタンラベルを変更することを提案します。
Code: | この URL をすべて(#1 個)削除 もしくは
この URL をすべて削除(#1 個) |
|
ボタンラベルの提案も引き続き募集中。 |
こういう文面にすれば違和感が減り、pluralRuleが0のままでも大丈夫なんじゃないかという意図なんですが、だめですか?
あ wrote: | string freeze を破って *.properties の変更をねじ込むのであれば、Axel Hecht さんを説得すれば良いでしょう。承認をもらった上で変更して、その変更内容を localizer 向けに mozilla.dev.l10n でアナウンスすることになります。 |
私が最初に考えていた修正はもろに*.propertiesの変更だったので、1つのボタンラベルを修正するのにそこまでやるのもな…と考えていたのですが、PluralForm.jsm自体の修正だったらどうでしょうか。やってみる価値はあるかな…
あ wrote: | PluralForm かどうかを機械的に区別する方法がないので、機械的なチェックは不可能だろうと考えています。 |
そのようですね。すみません。"# LOCALIZATION NOTE"にplural formsの記述があるかどうかで区別できると考えていましたが、記述がないものが多いことが分かりました。せっかくなので現時点でのコメントも含めて掲載しておきます。
://mxr.mozilla.org/comm-central/source/mozilla/toolkit/locales/en-US/chrome/mozapps/downloads/downloads.properties#1
Code: | # LOCALIZATION NOTE (seconds, minutes, hours, days): Semi-colon list of plural
# forms. See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
seconds=second;seconds
minutes=minute;minutes
hours=hour;hours
days=day;days |
://mxr.mozilla.org/comm-central/source/mozilla/toolkit/locales/en-US/chrome/mozapps/downloads/downloads.properties#106
Code: | # LOCALIZATION NOTE (downloadsTitleFiles, downloadsTitlePercent): Semi-colon list of
# plural forms. See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
# #1 number of files; #2 overall download percent (only for downloadsTitlePercent)
# examples: 2% of 1 file - Downloads; 22% of 11 files - Downloads
downloadsTitleFiles=#1 file - Downloads;#1 files - Downloads
downloadsTitlePercent=#2% of #1 file - Downloads;#2% of #1 files - Downloads |
://mxr.mozilla.org/comm-central/source/mozilla/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.properties#98
Code: | # LOCALIZATION NOTE: Semi-colon list of plural forms.
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
newAddonsNotificationMsg2=%S new add-on has been installed.;%S new add-ons have been installed. |
://mxr.mozilla.org/comm-central/source/mozilla/browser/locales/en-US/chrome/browser/browser.properties#125
Code: | # LOCALIZATION NOTE (activeDownloads, pausedDownloads): Semi-colon list of plural
# forms. See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
# #1 number of downloads; #2 time left
# examples: One active download (2 minutes remaining); 11 paused downloads
activeDownloads=One active download (#2);#1 active downloads (#2)
pausedDownloads=One paused download;#1 paused downloads |
://mxr.mozilla.org/comm-central/source/mozilla/browser/locales/en-US/chrome/browser/browser.properties#138
Code: | # LOCALIZATION NOTE (editBookmark.removeBookmarks.label)
# Semi-colon list of plural forms. Replacement for #1 is
# the number of bookmarks to be removed.
editBookmark.removeBookmarks.label=Remove Bookmark;Remove Bookmarks (#1) |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-alarms.properties#46
Code: | reminderCustomUnitMinutes=#1 minute;#1 minutes
reminderCustomUnitHours=#1 hour;#1 hours
reminderCustomUnitDays=#1 day;#1 days |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar.properties#374
Code: | # LOCALIZATION NOTE (alarmWindowTitle.label): Semi-colon list of plural
# forms. See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
alarmWindowTitle.label=#1 Reminder;#1 Reminders |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-event-dialog.properties#44
Code: | dailyEveryNth=every day;every #1 days |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-event-dialog.properties#52
Code: | weeklyNthOn=every %1$S;every #2 weeks on %1$S |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-event-dialog.properties#58
Code: | weeklyEveryNth=every week;every #1 weeks |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-event-dialog.properties#80
Code: | monthlyEveryOfEvery=every %1$S of every month;every %1$S of every #2 months |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-event-dialog.properties#72
Code: | monthlyNthOfEvery=the %1$S %2$S of every month;the %1$S %2$S of every #3 months |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-event-dialog.properties#94
Code: | monthlyLastDayOfNth=the last day of the month; the last day of every #1 months |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-event-dialog.properties#87
Code: | monthlyDayOfNth=day %1$S of every month;day %1$S of every #2 months |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-event-dialog.properties#109
Code: | yearlyNthOn=every %1$S %2$S;every #3 years on %1$S %2$S |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-event-dialog.properties#128
Code: | yearlyEveryNthOfNth=every %1$S of %2$S;every 3 years on every %1$S of %2$S |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-event-dialog.properties#119
Code: | yearlyNthOnNthOf=the %1$S %2$S of every %3$S;every #4 years on the %1$S %2$S of %3$S |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-event-dialog.properties#156
Code: | repeatCountAllDay=Occurs %1$S\neffective %2$S for #3 time.;Occurs %1$S\neffective %2$S for #3 times. |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar-event-dialog.properties#144
Code: | repeatCount=Occurs %1$S\neffective %2$S for #5 time\nfrom %3$S to %4$S.;Occurs %1$S\neffective %2$S for #5 times\nfrom %3$S to %4$S. |
://mxr.mozilla.org/comm-central/source/calendar/locales/en-US/chrome/calendar/calendar.properties#500
Code: | # LOCALIZATION NOTE (dueInDays, dueInHours): Semi-colon list of plural
# forms. See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
dueInDays=#1 day;#1 days
dueInHours=#1 hour;#1 hours |
|
|
|
|
あ
登録日: 2006年9月 25日
記事: 693
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年1月26日(月) 21:48 |
|
takeshi wrote: | やっぱりせっかくのL10Nのための仕組みをぶちこわしにしている感じがして、好きになれません。 |
私も好きではありませんが、現状ではしかたのないことだと思っています。
たとえば、(もし PluralForm かどうかの自動判別ができるように仕組みが改善されたとして、) nightly JLP 用に、 PluralForm を考慮した言語リソースのマージをする実装とか、誰がやるんでしょうか。
takeshi wrote: | この仕組みが使いにくい・バグが入りやすいのであればその仕組みの改善を提案すべき |
理想的にはそうなのですが、提案するとなると、言いたいことだけ言い放って「あとは任せたよっ!」というわけには行きませんのでどうしても時間を取られます。
限られたマンパワーではそこまで手を回せないということもあります。
マンパワーが潤沢にあればそういった方向にも手を回せるかもしれません。
takeshi wrote: | 一度3.1でそれをやってしまうと、元に戻れなくなることを考慮しておいてください。万一3.1で拡張機能でもpluralRuleが使われるようになれば元に戻す手間は計り知れません |
拡張機能が、アプリケーション側の pluralRule の値に従うことを前提にしていますか?
もしそういった拡張機能があれば、それはその拡張機能のバグだと考えます。
拡張機能なら Method: makeGetter をうまく使うべきでしょう。
takeshi wrote: | で、コードの改善ですが、;の数が既定のものと違う場合かつ1の場合はpluralRule#1(英語版)にfallbackするのが妥当な落としどころかと思いますがいかがでしょうか? |
pluralRule=0 なのに、英語をそのまま訳してしまうような locale の救済になって良さそうですね。
自分もコードを見てないので、本当にこれでいいのかどうかはまだよくわかりませんが。
takeshi wrote: | あ wrote: | ボタンラベルの提案も引き続き募集中。 |
こういう文面にすれば違和感が減り、pluralRuleが0のままでも大丈夫なんじゃないかという意図なんですが、だめですか? |
これがだめかどうかということではなくて、他にも案を持っている人がいれば出してほしいな、という意図です。 |
|
|
|
dynamis
登録日: 2003年10月 05日
記事: 1744
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年1月29日(木) 20:02 |
|
思いっきり出遅れてすみません。
結論だけ先に書けば pluralRule 自体は原則通り 0 のままの方がよいと思います。
pluralRule を 1 にすれば L10N 作業自体は単純化するし、workaround も入れやすくはなりますが、この設定自体を workaroud 的に本来あるべきではない値に変更してしまうと、後々面倒なことが起きる可能性が怖いです。
拡張機能で依存するのはバグかもしれませんが、日本語だけバグになるとか嫌だし、他に何処で依存してくるか分かりませんので。
また、単に折角用意された仕組みは適切に使っておきたいし、PluralForm の jsm に対してパッチを書いて挙動を改善するのはそう難しくないと思うので。
# PluralForm のコードは単純で見ればすぐ理解できます。
現在の実装、挙動について確認ですが、PruralRule が 0 のままで ”日本語1;日本語2” と翻訳した場合、問題の秒数やブックマーク数がいくつかにかかわらず常に最初の部分文字列 "日本語1" が出力に指定されます。
したがって、PruralRule が 0 のままで "second:seconds" のように単数複数の切り替えだけでプレースホルダを含まないエンティティを "秒;秒" などとしてしまっても(ファイルサイズが余分になる以外は)実害ありません。
一方で今回のように "Remove Bookmark;Remove Bookmarks (#1)" のようにプレースホルダを含むエンティティの場合に "ブックマークを削除;複数 (#1) のブックマークを削除" としてしまった場合、常に単数形が使用されて問題になります。
これについては Localizer 側にコストが発生しますが、それは日本語に限らずどの言語でもかけているコストであるし、PruralForm が使われている可能性がある (*.properites 中の ";" を含む) エンティティの一覧を生成するのは簡単なので、リリースまでに一度それを目視確認すれば最終リリースに混入するのは回避できると思います。
ちゃんとチェックしても単数の時にまで "(1 件)" など若干目障りなものが残りますが、それくらいは許容できるかなぁと。
# 実際これまでに多くのところでそういうのを許容してきています
本来的には単数複数の区別が重要な場合については entityName, entityNameMultipel にして後者で PruralForm 使うとかエンティティ自体を区別すべきところ。
あるいは、エンティティの値側で PruralForm を切り替えるような書式を定義するか。
# "pluralRule=1;日本語1;日本語2" 的な?
Nightly ビルドでの挙動については、これはご提案の FallBack (pluralRule#0 の言語で "part1;part2" となっている場合は pluralRule#1 と見なして処理) を PluralForm.jsm 側に導入すれば PruralRule#0 言語については回避されます。
PruralRule#7 言語などは救済されないですが、FallBack を入れることによる副作用がなさそうならパッチ書いてみてもいいです。 |
|
|
|
あ
登録日: 2006年9月 25日
記事: 693
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年1月29日(木) 22:03 |
|
dynamis wrote: | 結論だけ先に書けば pluralRule 自体は原則通り 0 のままの方がよいと思います。 |
とりあえず SVN は元に戻しました。
dynamis さんがそう言うなら従いますが、
dynamis wrote: | 拡張機能で依存するのはバグかもしれませんが、日本語だけバグになるとか嫌だし、 |
日本語だけってことはありません。
他 locale をちらっと見てみたのですが、
たとえば zh-CN は 本来は pluralRule #0 のはずなのに #1 にしているとか、
MDC のドキュメントとは異なった値にしているところを見かけました。
# ついでに、そのとき見かけた pluralRule #0 なのに今回の "Remove Bookmark;Remove Bookmarks (#1)" を
# そのままの形式で訳していた、dynamis さんみたいな locale のうち 3 つ(th, zh-TW, tr) についてはバグ立てて、フリーズまでに修正されてますが
## ko は、(pluralRule #0 なのに) 今回のものに限らずほとんど英語のままの形式になっていて脱力してしまいましたが
dynamis wrote: | これについては Localizer 側にコストが発生しますが、それは日本語に限らずどの言語でもかけているコストであるし、 |
上記のように、zh-CN とか ko とかは結果的にこのコストをかけていないのですよね。
(「コストをかけていない」の意味あいが zh-CN と ko とでは全然違いますが)
dynamis wrote: | PruralForm が使われている可能性がある (*.properites 中の ";" を含む) エンティティの一覧を生成するのは簡単なので、リリースまでに一度それを目視確認すれば最終リリースに混入するのは回避できると思います。 |
これまでの経験からいうと、それは忘れてしまいます。
たとえば %2$S が入っていて %1$S が入っていないとエラーになる件、一覧を生成して目視確認しようと思えばできますがリリース版に混入してますね?
繰り返しミスする方もいけないのですが、目視チェックを忘れていた私もいけないです。 |
|
|
|
dynamis
登録日: 2003年10月 05日
記事: 1744
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年1月29日(木) 23:28 |
|
あ wrote: | とりあえず SVN は元に戻しました。
dynamis さんがそう言うなら従いますが、 |
私の意見に決定権があるわけじゃないので即時 Revert しなくともよかったのですが、
取りあえず原則通り pluralRule#0 としておいて、今回 Fx3.1 では注目&目視確認すればミスは避けられるため、見落としをなくすようにするのは年末までの課題という感じ?
あ wrote: | 日本語だけってことはありません。
他 locale をちらっと見てみたのですが、
たとえば zh-CN は 本来は pluralRule #0 のはずなのに #1 にしているとか、
MDC のドキュメントとは異なった値にしているところを見かけました。 |
あらら、そうでしたか。zh-CN とかで無視しているの意図を聞いてみたいところですね。(^^;
zh-CN はさておき、他にもあるから日本語だけってことはないにしても、例外であることには違いなく、避けておいた方が無難な workaround だというのは同じだと思います。
あ wrote: | ## ko は、(pluralRule #0 なのに) 今回のものに限らずほとんど英語のままの形式になっていて脱力してしまいましたが |
ko はなんというか、勢いでどうにか一応の形にしてる感じっぽいので…(^^;
あ wrote: | dynamis wrote: | これについては Localizer 側にコストが発生しますが、それは日本語に限らずどの言語でもかけているコストであるし、 |
上記のように、zh-CN とか ko とかは結果的にこのコストをかけていないのですよね。
(「コストをかけていない」の意味あいが zh-CN と ko とでは全然違いますが) |
pl とかだと嫌でも気づくから追加コストという意識はないんでしょうね。
そういう意味で言うと選択可能な言語の中ではけっこう無視している言語が多いと言うことなのかな?
dynamis wrote: | PruralForm が使われている可能性がある (*.properites 中の ";" を含む) エンティティの一覧を生成するのは簡単なので、リリースまでに一度それを目視確認すれば最終リリースに混入するのは回避できると思います。 |
これまでの経験からいうと、それは忘れてしまいます。
たとえば %2$S が入っていて %1$S が入っていないとエラーになる件、一覧を生成して目視確認しようと思えばできますがリリース版に混入してますね?
繰り返しミスする方もいけないのですが、目視チェックを忘れていた私もいけないです。[/quote]
%2$S の件についてはまだチェック用のスクリプト無いからですよね?
それも用意しなければなりませんが、pluralForm の方は例えば
grep "^[^#].\+=.\+;" `find . -name "*.properties"`
するだけで
Quote: | ./ja/dom/chrome/layout/css.properties:PEDeclEndEOF = スタイル宣言終わりの ';' または '}'\
./ja/dom/chrome/layout/css.properties:PEBadDeclEnd = スタイル宣言終わりの ';' であるべきところが '%1$S' になっています。
./ja/dom/chrome/layout/css.properties:PEBadDeclOrRuleEnd2 = スタイル宣言終わりの ';' または '}' であるべきところが '%1$S' になっています。
./ja/dom/chrome/layout/xul.properties:NeededToWrapXULInlineBox= %1$S 要素の XUL ボックスがインラインの子要素 %2$S を含んでいるため、すべての子はブロック中で折り返されます。このエラーは "display: -moz-inline-box" を "display: -moz-inline-box; display: inline-block" で置き換えると解決することが多いです。
./ja/extensions/irc/chrome/chatzilla.properties:cmd.alias.help = 別名 <alias-name> を、<command-list> によって指定されたコマンドのセミコロン (';') 区切りリストの別名として定義します。もし <command-list> がマイナス記号 ('-') なら、別名は削除されます。<alias-name> がない場合は、すべての別名がリスト表示されます。
./ja/extensions/irc/chrome/chatzilla.properties:cmd.cmd-mozilla-prefs.label = &brandShortName; の設定(&B)...
./ja/extensions/irc/chrome/chatzilla.properties:cmd.exit-mozilla.help = &brandShortName; を終了します。
./ja/extensions/irc/chrome/chatzilla.properties:cmd.quit-mozilla.help = &brandShortName; を終了します。
./ja/extensions/irc/chrome/chatzilla.properties:msg.bug318419.warning = ChatZilla の内部データに潜在的な異常が見つかりました。現在フォームの送信ができなくなっています (送信できそうに見えていても)。最も可能性が高い原因は Mozilla Bug 318419 <https://bugzilla.mozilla.org/show_bug.cgi?id=318419> です。これ以上問題を深刻化させないために、ホスト アプリケーション (&brandShortName;) を再起動するよう強くお勧めします。
./ja/extensions/irc/chrome/chatzilla.properties:msg.bug318419.error = ChatZilla の内部データに深刻な異常が見つかりました。現在フォームの送信ができなくなっています (送信できそうに見えていても)。最も可能性が高い原因は Mozilla Bug 318419 <https://bugzilla.mozilla.org/show_bug.cgi?id=318419> です。修正するためには、ホスト アプリケーション (&brandShortName;) を再起動する必要があります。
./ja/extensions/irc/chrome/chatzilla.properties:msg.no.dynamic.style = このバージョンの &brandShortName; は、モチーフをアプリケーション全体に適用することはできません。この機能は無効にされました。
./ja/extensions/irc/chrome/chatzilla.properties:msg.going.offline = &brandShortName; はオフライン モードに移行します。現在接続しているすべてのネットワークとチャンネルが切断されます。
./ja/extensions/irc/chrome/chatzilla.properties:pref.aliases.help = 個々のコマンドまたは連なったコマンドに、ショートカットを作成できます。それぞれのアイテムは "<name> = <command-list>" の書式とします。コマンド リストには、"/" を付けずにコマンドとパラメータを列挙して ";" で区切ります。別名は ChatZilla の起動時に、自動的にコマンドに変換されます。
./ja/extensions/irc/chrome/chatzilla.properties:pref.munger.face.help = :-) や ;-) などの一般的な顔文字を画像で表示します。
./ja/extensions/venkman/chrome/venkman.properties:msn.jsdurl.errpage = <html><head><title>エラー</title></head><body><<b>%1$S</b>> の読み込みエラーです。<br/>%2$S</body></html>
./ja/extensions/venkman/chrome/venkman.properties:msg.hello = " JavaScripit デバッガ Venkman のご利用ありがとうございます。\n先ずは FAQ <http://skillup.jp/venkman/faq/venkman-faq.html> をお読みください。その他の情報は Venkman ホームページ <http://jt.mozilla.gr.jp/projects/venkman/> からどうぞ。\n日本語版に関しては Venkman-JP <http://skillup.jp/venkman/> をご覧ください。お気づきの点など Venkman-JP サポートフォーラム <http://skillup.jp/forum/> までご連絡頂ければ幸いです。;-)"
./ja/mail/chrome/messenger/messengercompose/composeMsgs.properties:12522 = Mail: メッセージを送信しました; 応答を待っています...
./ja/mail/chrome/messenger/mime.properties:1031 = <B><FONT COLOR=042#808080042> Internal</FONT></B>
./ja/mail/chrome/messenger/mime.properties:1037 = <div style="border: medium solid ; margin: 1em auto; padding: 10px; width: 80%; background-color: infobackground; font-size: larger;"><div style="text-align: center; font-weight: bold;">メッセージのサイズが大きすぎます</div><hr/>
./ja/mail/chrome/messenger/mime.properties:1042 = <div style="border: medium solid ; margin: 1em auto; padding: 10px; width: 80%; background-color: infobackground; text-align: center; font-size: larger;"><div style="font-weight: bold;">本文がダウンロードされていません</div><hr/>
./ja/security/manager/chrome/pipnss/nsserrors.properties:SEC_ERROR_OCSP_UNKNOWN_RESPONSE_TYPE = The OCSP response cannot be fully decoded; it is of an unknown type.
./ja/suite/chrome/mailnews/compose/composeMsgs.properties:12522=Mail: Message sent; waiting for reply...
./ja/suite/chrome/mailnews/compose/composeMsgs.properties:12586=The size of the message you are trying to send exceeds a temporary size limit of the server. The message was not sent; try to reduce the message size or wait some time and try again. The server responded: %s.
./ja/suite/chrome/mailnews/compose/composeMsgs.properties:12587=The size of the message you are trying to send exceeds the global size limit (%d bytes) of the server. The message was not sent; reduce the message size and try again.
./ja/suite/chrome/mailnews/compose/composeMsgs.properties:12588=The size of the message you are trying to send exceeds the global size limit of the server. The message was not sent; reduce the message size and try again. The server responded: %s.
./ja/suite/chrome/mailnews/imapMsgs.properties:5053=Could not connect to mail server %S; the connection was refused.
./ja/suite/chrome/mailnews/messenger.properties:103=Could not connect to server %S; the connection was refused.
./ja/suite/chrome/mailnews/mime.properties:1031=<B><FONT COLOR=\042#808080\042> Internal</FONT></B>
./ja/toolkit/chrome/global/filepicker.properties:htmlFilter = *.html; *.htm; *.shtml; *.xhtml
./ja/toolkit/chrome/global/filepicker.properties:textFilter = *.txt; *.text
./ja/toolkit/chrome/global/filepicker.properties:imageFilter = *.jpg; *.jpeg; *.gif; *.png; *.bmp; *.xbm; *.ico |
というリストが得られます。
同じような出力(既知のものは除外して更にコンパクトにする)を lot で出力するターゲット (ant pluralcheck とか)を用意するのは簡単なので、それをたまに実行するだけで十分になり、%2$S のように何度もミスしてリリースに混入というのは避けられるようになると期待しています。
# %2$S のほうのチェックはちょっと面倒なので後回ししてしまってましたが、これは簡単にできるので近々用意します
楽観的すぎですかね? |
|
|
|
あ
登録日: 2006年9月 25日
記事: 693
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年1月30日(金) 00:25 |
|
dynamis wrote: | 私の意見に決定権があるわけじゃないので即時 Revert しなくともよかったのですが、 |
Revert = 決定というわけでもないので、もし気が変わったならまた変えればいいと思っているところですが(バージョン管理されているので簡単ですし)
dynamis wrote: | あ wrote: | たとえば %2$S が入っていて %1$S が入っていないとエラーになる件、一覧を生成して目視確認しようと思えばできますがリリース版に混入してますね?
繰り返しミスする方もいけないのですが、目視チェックを忘れていた私もいけないです。 |
%2$S の件についてはまだチェック用のスクリプト無いからですよね?
それも用意しなければなりませんが、pluralForm の方は例えば
grep "^[^#].\+=.\+;" `find . -name "*.properties"`
するだけで |
%2$S の方もたとえばCode: | grep "^[^#].\+=.\+%2\$S" `find . -name "*.properties"` | grep -v "%1\$S"
grep "^[^#].\+=.\+%3\$S" `find . -name "*.properties"` | grep -v "%1\$S"
grep "^[^#].\+=.\+%3\$S" `find . -name "*.properties"` | grep -v "%2\$S"
grep "^[^#].\+=.\+%4\$S" `find . -name "*.properties"` | grep -v "%1\$S"
grep "^[^#].\+=.\+%4\$S" `find . -name "*.properties"` | grep -v "%2\$S"
grep "^[^#].\+=.\+%4\$S" `find . -name "*.properties"` | grep -v "%3\$S" | この程度のコマンド+目視 で十分なので、思い出したときにはチェックしていたのですが
しばらく思い出せていなかったのがまずかったです。
# dynamis さんがたまたま久しぶりにまた同じミスをしていたので思い出してチェックしてみたら、Fx3 に既に混入していたという。 |
|
|
|
dynamis
登録日: 2003年10月 05日
記事: 1744
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年1月30日(金) 10:22 |
|
あ wrote: | Revert = 決定というわけでもないので、もし気が変わったならまた変えればいいと思っているところですが(バージョン管理されているので簡単ですし) |
なるほど。あ さんはフットワークが軽くて素晴らしい。(^^;
あ wrote: | %2$S の方もたとえばCode: | grep "^[^#].\+=.\+%2\$S" `find . -name "*.properties"` | grep -v "%1\$S"
grep "^[^#].\+=.\+%3\$S" `find . -name "*.properties"` | grep -v "%1\$S"
grep "^[^#].\+=.\+%3\$S" `find . -name "*.properties"` | grep -v "%2\$S"
grep "^[^#].\+=.\+%4\$S" `find . -name "*.properties"` | grep -v "%1\$S"
grep "^[^#].\+=.\+%4\$S" `find . -name "*.properties"` | grep -v "%2\$S"
grep "^[^#].\+=.\+%4\$S" `find . -name "*.properties"` | grep -v "%3\$S" | この程度のコマンド+目視 で十分 |
何度も全ファイルをなめるのはあまりしたくないなぁ、でも Ant には条件分岐とかしにくいからなぁ。どうしようかなぁで止まってました。
でも、これについては明らかに要修正事項ですし、そんな感じ(をもう少しファイル走査数減らしてみる)のエラーチェック入れておきます。
こちらは誤検出ほとんど無いでしょうからエラー時には syntaxerror 同様に convert ストップさせる処理にします。
あ wrote: | # dynamis さんがたまたま久しぶりにまた同じミスをしていたので思い出してチェックしてみたら、Fx3 に既に混入していたという。 |
結果を見れば明らかですが、要チェック項目という意識になってなかったです。
いつも私のミスをフォローさせてしまってすみません。m(_ _)m |
____________________ http://www.mozilla-japan.org/jp/l10n/
http://firehacks.org/blog/ |
|
|
dynamis
登録日: 2003年10月 05日
記事: 1744
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年1月30日(金) 11:16 |
|
dynamis wrote: | Nightly ビルドでの挙動については、これはご提案の FallBack (pluralRule#0 の言語で "part1;part2" となっている場合は pluralRule#1 と見なして処理) を PluralForm.jsm 側に導入すれば PruralRule#0 言語については回避されます。
PruralRule#7 言語などは救済されないですが、FallBack を入れることによる副作用がなさそうならパッチ書いてみてもいいです。 |
今頃出てきた私がどうこうする前に takeshi さんがさくっとパッチ書いてくれましたね。(^^;
導入させてもらえるなら pluralRule#0 のまま意図的に "ブックマークを削除;複数 (#1) のブックマークを削除" として FallBack させる感じですかね。 |
____________________ http://www.mozilla-japan.org/jp/l10n/
http://firehacks.org/blog/ |
|
|
あ
登録日: 2006年9月 25日
記事: 693
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年2月09日(月) 20:52 |
|
dynamis wrote: | あ wrote: | Revert = 決定というわけでもないので、もし気が変わったならまた変えればいいと思っているところですが(バージョン管理されているので簡単ですし) |
なるほど。あ さんはフットワークが軽くて素晴らしい。(^^; |
そんないい方向に捕らえますか^^;
優柔不断なのですぐに決定できないというのが実情ですが^^;
ただ今回の件に関しては、当面の間はこのような日本語リソースの sync をするのは dynamis さんのはずだし、チェックを実装するのも dynamis さんなので、その dynamis さんが pluralRule=0 が良いという考えであれば(たとえば他の人が sync するようになるとかの状況の変化が出てくるまでは)それに反対する理由はありません。
dynamis wrote: | 今頃出てきた私がどうこうする前に takeshi さんがさくっとパッチ書いてくれましたね。(^^; |
その 13 分後にいきなり却下されてるのが謎なんですが。
理由も書かれてないし。 |
|
|
|
takeshi
ゲスト
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年2月13日(金) 05:56 |
|
こっちまで手が回らなくてすみません。
あ wrote: | 拡張機能が、アプリケーション側の pluralRule の値に従うことを前提にしていますか?
もしそういった拡張機能があれば、それはその拡張機能のバグだと考えます。 | 漠然と全ロケールのpluralRuleを保持するデータベースの存在を想定していたのですが、そんなものないですね。拡張機能の翻訳版は、個々にpluralRule(のような設定値)を自分で設定するわけですか、なるほど。
すみません、前提から勘違いしていました。pluralRuleが中で閉じているのであれば、少なくとも短期的に(元に戻せる形で)変更するのに異を唱えるものではありません。
長期的に考えると、本体にパッチが必要と考えるわけですが...
あ wrote: | その 13 分後にいきなり却下されてるのが謎なんですが。
理由も書かれてないし。 | 却下された本人にも謎です。review申請もしてない段階(文章で書くよりコードのほうがはっきりすると思ったので)だったのですが。
読み違えてなければ、Axel自身もpluralRule==0については例外を作るのに賛成だったはずなんですけどねえ。
などと言いつつ多忙のせいにして今日もまた様子見です。 |
|
|
|
takeshi
ゲスト
|
件名: Re: pluralRule を 1 にしません? 投稿時間: 2009年2月16日(月) 03:13 |
|
補足です。
dynamis wrote: | あ wrote: | たとえば zh-CN は 本来は pluralRule #0 のはずなのに #1 にしているとか、
MDC のドキュメントとは異なった値にしているところを見かけました。 |
あらら、そうでしたか。zh-CN とかで無視しているの意図を聞いてみたいところですね。(^^; | zh-CNは、pluralRule #0にすべきというバグでpluralForm.jsm作者直々に指摘されています。
他言語は読めないので文字列としての比較だけしてみると、bn-INもzh-CNと同じ手法(removeBookmarksでのみ"1"を特別視して省略しているのも同じ)で、次点でhu, eu(removeBookmarksで複数の場合のみ特定の単語にkが付くところが違う)というのがあるようです。
dynamis wrote: | Nightly ビルドでの挙動については、これはご提案の FallBack (pluralRule#0 の言語で "part1;part2" となっている場合は pluralRule#1 と見なして処理) を PluralForm.jsm 側に導入すれば PruralRule#0 言語については回避されます。
PruralRule#7 言語などは救済されないですが、 | pluralRule #7のロシア語でも「1」と「それ以外(複数)」に対応する2つのクラスがあるようで、2 formsのfallback(#7の本来のフォーマットは3 formsなので)を入れることによる効果はありそうです。
あと、英語のまねをしてか"(#1)"を加えるだけの対応も見られます(th, fa, zh-CN, bn-IN)が、pluralRule #0の言語だと括弧の中がブックマークの個数だと認識されるのか、非常に疑問です。日本語で「ブックマークを削除 (2)」とか表示されても... まあ各言語の事情に深入りするのはやめにしておきます。 |
|
|
|
|