[20] 自然言語の単語や語句は、その表現または修飾する対象物の数により語形が変化することがあります。 複数の際に用いられる形、ひいては数による語形変化のことを一般に複数形といいます。
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ファイルも存在しているようです。実装がこうした異常な入力をどう扱っているのかは不明です。
Plural-Forms: nplurals=2; plural=(n != 1);
Plural-Forms: nplurals=2; plural=n != 1;
Plural-Forms: nplurals=1; plural=0;
Plural-Forms: nplurals=2; plural=(n==1?0:1);
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
[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
[25] CLDR には各ロケールの複数形の活用情報が含まれるファイル >>18, >>26, >>27 があります。
[28] これらのファイルは LDML >>16 により記述されています >>10。 LDML も式により活用形を決定する形で記述されています >>45 が、 POファイルとは違う独自の構文になっています。
[32] CLDR には数値の範囲の扱いの情報も含まれています。
[46] CLDR の式言語中の被演算子は、 次のような意味を持ちます。 >>45
n
: 数値の絶対値i
: n
の整数部v
: n
の可視小数桁数、末尾0を含むw
: n
の可視小数桁数、末尾0を除くf
: n
の可視小数部、末尾0を含むt
: n
の可視小数部、末尾0を除くc
: 簡潔十進指数値 (簡潔十進書式付に使う10の冪乗の指数部)e
: c
と同じ (将来再定義される可能性あり)[47]
c
, e
はいわゆる指数表記の数値を扱う時の指数を表すものです。
そのような場合の i
, f
, t
, v
, w
は指数表記ではなく通常の十進表記に改めたときの状態を示します。
>>45
[34] >>33 の JSON ファイルには、各言語で必要な複数形の活用の情報や、 色々な POファイルで使われている式の一覧が含まれています。
[37] 日本語で複数形活用が大きな問題となるのは「つ」の時くらいのようです >>36。
[38] ただし漢字表記は変化がなくても発音が変化することはよくあるので >>36、 仮名表記やローマ字表記を扱う必要があるなら、かなり複雑になりそうです。
[39] 単語としては活用しなくても、「ファイルが0個あります。」より 「ファイルがありません。」の方が自然な場面もあります。
[50] 最近は「27日」を「にじゅうなのか」と読む人もちらほら見かけ(聞きかけ?)ますね。
[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