i18nキー命名規則:ドット記法、snake_case、camelCase

i18nキーの3つの主要な命名規則(ドット記法、snake_case、camelCase)を学びます。各スタイルの使い分けと、命名規則が翻訳ファイルの保守性に与える影響を理解します。

Naming Conventions

詳細な説明

i18nキー命名規則

翻訳キーに一貫した命名規則を選択することは、プロジェクトの国際化設定で最も重要な決定の一つです。主要な3つの規則はドット記法snake_casecamelCaseで、それぞれ可読性、ツールサポート、エコシステム互換性にトレードオフがあります。

ドット記法

ドット記法はピリオドでキーセグメントを区切ります:

common.buttons.submit
pages.home.hero.title
errors.validation.email_invalid

これはi18nライブラリ全体で最も広く採用されている規則です。ネストされたJSONやYAML構造に自然にマッピングされ、翻訳ファイルのナビゲーションが容易になります。react-i18nextvue-i18nnext-intli18nextはすべてドット記法をデフォルトのキーセパレーターとして使用しています。

snake_case

snake_caseはセグメント内の単語をアンダースコアで区切ります:

common_buttons_submit
pages_home_hero_title
errors_validation_email_invalid

この規則はRuby on Rails(I18n gem)、Django(gettext)、Laravelなどのバックエンドフレームワークで一般的です。階層的なセパレーターなしのフラットキー構造との相性が良好です。

camelCase

camelCaseは最初の単語を除く各単語の先頭を大文字にします:

commonButtonsSubmit
pagesHomeHeroTitle
errorsValidationEmailInvalid

camelCaseは翻訳キーとしては一般的ではありませんが、JavaScriptの規則がすべての文字列識別子に影響するプロジェクトで見られます。

どの規則を選ぶべきか?

最適な規則はエコシステムによって異なります:

  • React / Vue / Next.js / Svelte -- ネストされたJSONとドット記法
  • Ruby on Rails / Laravel -- ネストされたYAMLとsnake_case
  • Django / Flask -- PO/gettextファイルとsnake_case
  • Spring Boot / Java -- Java Propertiesファイルとドット記法
  • Angular -- チームの好みに応じてドット記法またはcamelCase

一貫性が最も重要

特定の規則よりも、プロジェクト全体で一貫して適用することが重要です。混在した規則は混乱を生み、検索・置換操作をエラーしやすくし、i18nライブラリ間の移行を複雑にします。

ユースケース

キー命名規則の選択は、新しいプロジェクトでi18nを初期設定する際の最初のステップです。フレームワーク間で移行するチーム(例:RailsからNext.jsへ)は、規則間の変換が必要になることがよくあります。i18nキージェネレーターを使えば、ドット記法、snake_case、camelCaseを即座に切り替えて、翻訳ファイルに最も読みやすいキーを確認できます。

試してみる — i18n Key Generator

フルツールを開く