Skip to content

翻訳ファイル構造

22.2.1. ファイル構造

翻訳ファイルは言語別、ネームスペース別に分離して管理しなければなりません。

src/locales/
├── ko/                  # 韓国語
│   ├── common.json
│   ├── pages.json
│   ├── components.json
│   └── validation.json
├── en/                  # 英語
│   └── (同一構造)
└── ja/                  # 日本語
    └── (同一構造)
  • 翻訳ファイルは src/locales/{lang}/{namespace}.json パスに配置しなければなりません。
  • 各言語ディレクトリは同一のネームスペースファイル構造を維持しなければなりません。
  • 単一ファイルにすべての翻訳を入れず、ネームスペース別に分離して保守性を確保しなければなりません。
  • JSON フォーマットを使用しなければなりません。YAML など他のフォーマットは許容されません。

22.2.2. キー命名規則

翻訳キーは一貫した命名規則に従わなければなりません。

規則説明
ドット記法階層構造をドットで区切るpages.user.title
camelCase個別の単語を区切るerrorMessagesubmitButton
意味ベースUI の位置ではなく意味を基準に命名validation.required
json
{
  "pages": {
    "user": {
      "title": "ユーザー管理",
      "empty": "登録されたユーザーがいません。"
    },
    "dashboard": {
      "title": "ダッシュボード",
      "welcome": "ようこそ、{name}さん。"
    }
  }
}
  • キー名は camelCase を使用しなければなりません。snake_case または kebab-case は使用しません。
  • キー名は該当テキストの意味を反映しなければなりません。UI の位置(leftSidebarTitle)を基準に命名しません。
  • 動的な値は中括弧({name})を使用した補間構文で処理します。
  • キーの深さは最大 4 階層まで許容します。それ以上のネストが必要な場合はネームスペースを分離しなければなりません。

22.2.3. ネームスペース

以下の標準ネームスペースを使用して翻訳キーを分類しなければなりません。

ネームスペース用途
common共通 UI 要素(ボタン、ラベル、ステータス)common.savecommon.cancel
pagesページ固有のテキストpages.login.title
components共用コンポーネント内のテキストcomponents.modal.close
validationフォームバリデーションメッセージvalidation.required
errorエラーメッセージerror.notFounderror.serverError
  • 複数のページで共通して使用するテキストは必ず common ネームスペースに定義しなければなりません。
  • 特定のページでのみ使用するテキストは pages ネームスペースに定義します。
  • プロジェクト規模に応じてネームスペースを追加できますが、標準ネームスペースの用途を変更してはなりません。

22.2.4. 複数形処理

複数形が必要なテキストは vue-i18n の複数形構文を使用して処理しなければなりません。

json
{
  "items": "項目なし | {count}件の項目 | {count}件の項目"
}
vue
<template>
  <p>{{ $t('items', { count: itemCount }, itemCount) }}</p>
</template>
  • 複数形の区切りはパイプ(|)で区切ります。順序は なし | 単数 | 複数 です。
  • 韓国語は複数形の区別がないため、単数と複数を同一に記述します。
  • 英語の翻訳ファイルでは単数({count} item)と複数({count} items)を区別して記述しなければなりません。
  • 数値 0 に対する別途の表現が必要な場合、3 つの形態をすべて定義します。
  • 複数形規則が複雑な言語(アラビア語など)を追加サポートする場合、vue-i18n の pluralRules オプションを設定しなければなりません。

TIENIPIA QUALIFIED STANDARD