RORK LABEN
PLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっていますPLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっています
記事一覧/開発ツール
開発ツール/2026-07-13上級

「{n}件」で多言語が崩れる — CLDR複数形カテゴリとIntl.PluralRulesで数量表現を設計する

「1なら単数、それ以外は複数」という前提はロシア語やアラビア語で崩れます。CLDRの複数形カテゴリを地図として持ち、Intl.PluralRulesとi18nextで数量表現を正しく出すための実装を、個人開発の壁紙アプリを多言語化した経験からまとめました。

Rork547多言語化複数形Intl.PluralRulesi18next

プレミアム記事

壁紙アプリを16言語に対応させて公開した数日後、ロシア語圏の方から「お気に入りの件数の表示がどこかおかしい」という短い報告が届きました。手元の iPhone を日本語と英語で確かめても、何も問題は起きません。

原因にたどり着くまで少し時間がかかりました。私は件数の表示を n === 1 ? "1 item" : n + " items" のような書き方で組んでいたのです。英語と日本語だけを見ていると、この分岐は永遠に正しく見えます。けれどロシア語では、2件と5件で語形が変わり、しかも21件はまた1件と同じ形に戻る。三項演算子の前提そのものが、その言語には存在していませんでした。

数量表現が言語ごとにどう分岐するのかを、CLDR の複数形カテゴリという地図で捉え直します。そのうえで Intl.PluralRules と i18next で正しい形を選ぶ実装を、手を動かしながら整理していきます。個人開発で作ったアプリを世界に出すとき、静かに読者を戸惑わせるこの落とし穴を、公開前に塞いでおきたいのです。

「1なら単数、それ以外は複数」が成り立たない言語

私たちが無意識に持っている「単数か複数か」という二分法は、英語という一つの言語の都合に過ぎません。世界の言語を見渡すと、数量の語形はもっと多様です。

日本語には文法上の複数形がありません。「1件」も「3件」も語形は変わらず、n を差し込むだけで済みます。英語は1のときだけ特別で、あとは同じ。ここまでなら三項演算子で足ります。

問題はその先です。ロシア語やウクライナ語は、末尾の桁によって三つの語形を使い分けます。ポーランド語も同様に複雑で、アラビア語にいたっては0・1・2・少数・多数・その他という六つの形を持ちます。「それ以外は複数」という一本の分岐では、これらの言語を一つも正しく表示できません。

つまり数量表現のバグは、開発者が読めない言語でだけ静かに起こります。手元の端末では再現しないため、レビューでも気づけません。だからこそ、言語ごとの規則を自分の頭ではなく、標準化された地図に委ねる設計が要ります。

CLDR の複数形カテゴリを地図として持つ

その地図が CLDR(Unicode Common Locale Data Repository)の複数形カテゴリです。CLDR は各言語の数量規則を、次の六つのカテゴリのいずれかへの写像として定義しています。

カテゴリ意味この形を使う代表的な言語
one単数に相当英語・ドイツ語・スペイン語(1のとき)
other既定・それ以外日本語・中国語・韓国語(常にこれ一つ)
few少数ロシア語・ポーランド語・チェコ語
many多数ロシア語・ポーランド語・アラビア語
two双数アラビア語・スロベニア語・ウェールズ語
zeroゼロアラビア語・ラトビア語

大切なのは、これらが数値そのものではなく「その言語における語形の区分」だという点です。ロシア語で21が one に分類されるのは直感に反しますが、規則を暗記する必要はありません。地図の役割は CLDR に任せ、私たちはカテゴリ名に対応する文言だけを用意すればよい、という分担にします。

日本語のように other しか持たない言語では、翻訳者は一つの文言だけを書けば済みます。カテゴリを増やすかどうかは言語側の事情であり、コード側は同じ呼び出しで吸収するのが理想です。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
ロシア語・アラビア語・ポーランド語で三項演算子の複数形が壊れる理由をCLDRの6カテゴリで説明
Intl.PluralRulesで正しい語形を選ぶ再利用可能なヘルパーとHermes環境でのフォールバック
基数と序数を取り違えないための実装と、崩れる言語を先に潰すテストの置き方
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

開発ツール2026-08-22
一括置換は全ファイル成功しました。壊れたのは、消さなかった行のほうです
生成コードに一括置換をかけると、一致した行ではなく隣の行が壊れます。運用中のプロジェクトで実際に起きた破損と、置換の不変条件を検査する20行のガードスクリプトをまとめました。
開発ツール2026-08-21
生成ループが緑を返した後に、私が手元で回している4つの受け入れ検査
ビルドが成功しても出荷できない状態は実在します。AI がビルドを反復する構成で見落とされやすい4点を、成果物そのものを走査する検査スクリプトとして手元に置く方法をまとめました。
開発ツール2026-08-20
ベータ SDK でビルドしたアプリは、TestFlight には配れても審査には出せません
ベータ版の Xcode でビルドしたアプリは TestFlight には配布できますが、App Store の審査には提出できません。手元のビルドがどの SDK で作られたかを確認する方法と、eas.json で提出用ビルドを守る設定をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →