s

s

[20] 自然言語単語語句は、その表現または修飾する対象物のにより語形が変化することがあります。 複数の際に用いられる形、ひいてはによる語形変化のことを一般に複数形 (plural forms) といいます。

Plural-Forms: 欄 (.PO)

[19] POファイルヘッダーPlural-Forms: は、複数形の決定の式を表します。

[30] このは、非負整数の入力 n に対して C 風の演算子を使ってどの活用形を用いるかを返す形になっています。

[21] この形式では整数 (通常は非負整数) を入力とする任意の語形変化を記述できますが、 同じ語形変化でも表現方式は一意には定まりません。

[22] 例えば単複2形がある場合、0=単数、1=複数とする式と0=複数、1=単数とする式を書くことが容易に可能で、 どちらにするかでPOファイルの内容は全く異なるものになります。また、同じ意味の式は無限に作ることができます。

[23] 更に、同じ例で0=未使用、1=単数、2=複数となるような式を使うことも可能です。 理論上可能なだけでなく、実際にそのような未使用の形を持つPOファイルは存在しています (何らかの意図を持っているのか、誤りなのかは不明です)。

[24] 欄の値の末尾に ; がありますが、実際には ; が欠けた POファイルや、改行を表す \n がそのままの文字列として含まれた POファイルも存在しているようです。また、これらの構文をまったく無視したおかしな POファイルも存在しているようです。実装がこうした異常な入力をどう扱っているのかは不明です。

[1]

Plural-Forms: nplurals=2; plural=(n != 1);

[2]

Plural-Forms: nplurals=2; plural=n != 1;

[3]

Plural-Forms: nplurals=1; plural=0; 

[4]

Plural-Forms: nplurals=2; plural=(n==1?0:1);

[5]

Plural-Forms: nplurals=2; plural=n>1;

[9] Plural Forms — Localization Guide 0.9.0 documentation ( 版) http://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html

Mozilla

[15] Mozilla の実装である PluralForm は、一般的な複数形の形態 17種類に番号を与えています >>11, >>14

[29] 内部的には番号から POファイル同様の式を得て、利用する形を選択しています >>14

[8] mozilla mozilla/intl/locale/src/PluralForm.jsm ( 版) http://mxr.mozilla.org/mozilla/source/intl/locale/src/PluralForm.jsm#39

[7] Plural Forms - Arabeyes Wiki - ويكي عرب‌آيز ( 版) http://www.arabeyes.org/Plural_Forms

For Mozilla products (Firefox, Thunderbird, Sunbird, Fennec), the case where n == 0 is shifted to become the last case (due to some backward compatibility with the older plural rule).

Plural formula

This is the plural formula used for the forms above:

nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;

An exception for Mozilla products is:

nplurals=6; plural=n==0 ? 5 : n==1 ? 0 : n==2 ? 1 : n%100>=3 && n%100<=10 ? 2 : n%100>=11 ? 3 : 4;

CLDR

[25] CLDR には各ロケール複数形活用情報が含まれるファイル >>18, >>26, >>27 があります。

[28] これらのファイルは LDML >>16 により記述されています >>10LDMLにより活用形を決定する形で記述されています >>45 が、 POファイルとは違う独自の構文になっています。

[31] CLDR には小数の扱いの情報も含まれています。

[32] CLDR には数値の範囲の扱いの情報も含まれています。

[46] CLDR の式言語中の被演算子 (operand) は、 次のような意味を持ちます。 >>45

[47] c, e はいわゆる指数表記の数値を扱う時の指数を表すものです。 そのような場合の i, f, t, v, w指数表記ではなく通常の十進表記に改めたときの状態を示します。 >>45

データファイル

[34] >>33JSON ファイルには、各言語で必要な複数形の活用の情報や、 色々な POファイルで使われているの一覧が含まれています。

日本語

[37] 日本語複数形活用が大きな問題となるのは「つ」の時くらいのようです >>36

[38] ただし漢字表記は変化がなくても発音が変化することはよくあるので >>36仮名表記やローマ字表記を扱う必要があるなら、かなり複雑になりそうです。

[39] 単語としては活用しなくても、「ファイルが0個あります。」より 「ファイルがありません。」の方が自然な場面もあります。

[6] 複数形は、接尾辞」と訳すことがあります。

[12] Mozilla L10N :: トピックを表示 - [fixed]%S つ ( 版) http://forums.firehacks.org/l10n/viewtopic.php?t=2722

%Sが10以上になることを考えると「%S つ」ではまずいと思います。

改善案: %S 個 or %S 件

PluralForm.jsmで「1-9とそれ以外」のplural rule新設を主張すれば、通るでしょうか...?

メモ

[40] AngularJS: API: ngPluralize ( 版) https://docs.angularjs.org/api/ng/directive/ngPluralize

[41] Localization - Mozilla | MDN ( 版) https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/l10n#Plurals

[42] Localization Strings — MathJax 2.5 documentation ( 版) http://docs.mathjax.org/en/latest/localization-strings.html

[43] globalize/plural-generator.md at master · jquery/globalize ( 版) https://github.com/jquery/globalize/blob/master/doc/api/plural/plural-generator.md

[44] 明るく楽しい引きこもり精神安定委員会天才(※ツイートは個人の見解であり、当委員会とは関係ありません)さんはTwitterを使っています 「仮に日本語が漢字を廃止して仮名だけになった時の複数規則表を考えてみたら壮絶すぎて泣いちゃった https://t.co/CvJpgURDRs」 / Twitter, 午前9:35 · 2020年10月13日 , https://twitter.com/Wartemeinnicht/status/1315813393836601344

[48] 文字列リソース | Android デベロッパー | Android Developers, , https://developer.android.com/guide/topics/resources/string-resource