RORK LABEN
RORKMAX — Rork MaxはReact Nativeではなく純粋なSwiftコードを生成し、iPhone・iPad・Apple Watch・Apple TV・Vision Pro・iMessageまで見据えた真のネイティブアプリを作れますAPPLE — 2026年のRorkはAppleエコシステムのネイティブ強化が明確なテーマになっていますEXPO — 通常の生成はReact NativeとExpoが土台。作業後には本物のプロジェクト構造とコードが残り、そのまま手で育てられますFUNDING — Rorkは直近で1,500万ドルを調達し、月間743,000訪問・85%成長という新たなバイラルを得ていますPRICING — 無料で始められ、有料プランは月額25ドルから。Rork Maxは月額200ドルですCROSS — iOS・Android・Webを単一のプロンプトから生成し、フォローアップの微調整で仕上げられますRORKMAX — Rork MaxはReact Nativeではなく純粋なSwiftコードを生成し、iPhone・iPad・Apple Watch・Apple TV・Vision Pro・iMessageまで見据えた真のネイティブアプリを作れますAPPLE — 2026年のRorkはAppleエコシステムのネイティブ強化が明確なテーマになっていますEXPO — 通常の生成はReact NativeとExpoが土台。作業後には本物のプロジェクト構造とコードが残り、そのまま手で育てられますFUNDING — Rorkは直近で1,500万ドルを調達し、月間743,000訪問・85%成長という新たなバイラルを得ていますPRICING — 無料で始められ、有料プランは月額25ドルから。Rork Maxは月額200ドルですCROSS — iOS・Android・Webを単一のプロンプトから生成し、フォローアップの微調整で仕上げられます
記事一覧/開発ツール
開発ツール/2026-07-13上級

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

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

Rork505多言語化複数形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/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

開発ツール2026-07-14
AI再生成に壊されない設計 — Rork の生成コードと手書きロジックを分ける境界の引き方
Rork へ追加指示を出すたびに手書きのロジックが消える。プロンプトで守るのは対症療法です。生成コードと自分の所有コードを層で分け、再生成が届かない境界を設計で引く方法を、Zustand と service 層の実装例つきでお伝えします。
開発ツール2026-07-14
Rork が生成した fetch コードに、Zod の検証境界を1枚だけ挟む
Rork が生成したネットワークコードは、レスポンスの形を暗黙に信頼します。APIが変わると画面は静かに真っ白になります。生成UIとネットワークの間にZodのparse層を1枚だけ差し込み、壊れ方を予測可能にする実装を、実運用の数値とともに紹介します。
開発ツール2026-07-13
WebViewのpostMessageは投げたら終わり — 相関IDで要求と応答を結ぶブリッジを設計する
WebView と React Native の postMessage は片道通信で、送った処理が成功したのか分かりません。相関IDと応答を組み込んだ要求・応答型ブリッジを、動く TypeScript コードで設計します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →