ドキュメント
LocaleDBのデータ、パイプライン、アーキテクチャについて知る必要があるすべて。
概要
LocaleDBは、国際的なアプリケーションを構築する開発者向けの包括的なオープンソースのローカリゼーション百科事典です。
250カ国以上
114言語
161通貨
9,415空港
主な機能
- 信頼できる情報源からの包括的なデータ(CLDR、世界銀行、mledoze、libphonenumber)
- 静的生成 - ランタイムデータベースは不要
- MITライセンスおよびコミュニティ主導
- アラビア語のRTLサポートを含む11言語
はじめに
リポジトリをクローンして、数分でロケールデータの探索を開始します。
# リポジトリをクローンする
git clone https://github.com/ozkurkculer/localedb.git
cd localedb
# 依存関係をインストールする
pnpm install
# ソースから生データをダウンロードする
pnpm update:data
# 処理してJSONファイルを生成する
pnpm build:data
# 開発サーバーを起動する
pnpm devデータパイプライン
LocaleDBは、複数の信頼できる情報源からのデータを多段階のパイプラインを通じて処理します。
外部ソース
CLDR、mledoze、世界銀行、libphonenumber、OpenFlights (MWGG)
生データをダウンロード
pnpm update:data はdata/サブディレクトリにファイルをダウンロードします
生データファイル
data/に保存されたJSON、CSV、XMLファイル
処理とマージ
pnpm build:data は優先ルールに従ってソースをマージします
生成されたJSON
個々の国、言語、通貨ファイル
静的サイト生成
Next.jsは5,868ページ以上の静的ページをビルドします
データソースの優先順位
複数のソースが同じフィールドを提供する場合、一貫した優先システムを使用します:
- •国名:CLDR > mledoze > SimpleLocalize
- •人口:世界銀行 > mledoze > SimpleLocalize
- •電話データ:libphonenumber XML(公式)
データスキーマ
国、言語、通貨のJSONファイルの包括的な構造。
国スキーマ
data/countries/{CODE}.jsonbasics名前、首都、座標、大陸、人口、面積、言語、国旗の絵文字
codesISO 3166、BCP-47、FIFA、IOC、FIPS、その他の国際コード
currencyコード、記号、位置、区切り文字、小数桁数、パターン、例
dateTime日付/時刻形式(完全、長い、中程度、短い)、週の最初の日、タイムゾーン
numberFormat小数/桁区切り記号、桁のグループ化、番号システム
phone国番号、パターン、フォーマットルール、加入者番号の長さ
addressFormatフォーマットテンプレート、郵便番号の正規表現と例
locale書字方向、測定システム、温度スケール、用紙サイズ、運転側
airportsIATA、ICAO、座標、タイムゾーンを含む空港の配列
言語スキーマ
data/languages/{code}.jsoncodeISO 639-1コード
name英語名
nativeNameネイティブ名
directionテキストの方向(ltrまたはrtl)
countries話されている国コードの配列
通貨スキーマ
data/currencies/{CODE}.jsoncodeISO 4217コード
name通貨名
symbol通貨記号
symbolPosition前または後
separators小数点および桁区切り記号
decimalDigits標準の小数点以下の桁数
patternフォーマットパターン
exampleフォーマットされた例
countriesこの通貨を使用している国コードの配列
プロジェクト構造
主要なディレクトリとその目的。
localedb/
├── data/ # 生成されたJSONファイルと生ソースデータ
│ ├── countries/ # 250 country JSON files
│ ├── languages/ # 114 language JSON files
│ ├── currencies/ # 161 currency JSON files
│ ├── _index_*.json # Lightweight indices
│ └── _meta.json # Build metadata
├── scripts/ # データパイプラインスクリプト(update-data.ts、build-data.ts)
│ ├── update-data.ts # Download raw data
│ ├── build-data.ts # Process & generate JSON
│ └── generate-changelog.ts
├── src/
│ ├── app/[locale]/ # Next.js pages (i18n)
│ ├── components/ # React components
│ ├── lib/ # Data access functions
│ ├── config/ # Site & nav config
│ └── i18n/ # Internationalization setup
└── messages/ # 11言語の翻訳ファイルスクリプトリファレンス
データ管理と開発に利用可能なコマンド。
| Command | Description |
|---|---|
pnpm update:data | すべての外部ソースから生データをダウンロード |
pnpm update:data cldr worldbank | 特定のソースのみをダウンロード |
pnpm build:data | 生データを処理してJSONファイルを生成 |
pnpm dev | 開発サーバーを起動 |
pnpm build | 本番ビルド(静的サイト生成) |
npx tsx scripts/check-i18n.ts | 欠落している翻訳キーを確認して自動入力 |
pnpm version patch | バージョンを上げ、変更履歴を自動生成 |
データの貢献
LocaleDBへの修正や改善の貢献方法。
貢献ワークフロー
- 1GitHubリポジトリをフォークし、ローカルマシンにクローンする
- 2build-data.tsでソースの優先順位を編集するか、アップストリームソースに修正を送信する
- 3messages/{lang}.jsonを編集してcheck-i18nを実行し、翻訳を追加する
- 41つのPRにつき1つの変更とし、公式ソースへのリンクを含めてプルリクエストを送信する
ガイドライン
- 1つのプルリクエストにつき1つの変更
- 常に公式ソース(CLDR、政府サイト、ISO標準)にリンクする
- pnpm build:dataを実行して、変更が正しくマージされることを確認する
- 明確で説明的なコミットメッセージ
国際化
LocaleDBは11言語をサポートしており、さらに追加する予定です。
サポートされている言語
英語、トルコ語、中国語、ヒンディー語、スペイン語、フランス語、アラビア語、ベンガル語、ポルトガル語、ロシア語、日本語
翻訳ファイル
すべての翻訳はmessages/{lang}.jsonファイルに保存されます
RTLサポート
アラビア語(ar)およびその他のRTL言語の完全な右から左へのサポート
新しい言語の追加
- 1新しいmessages/{lang}.jsonファイルを作成する
- 2messages/en.jsonからすべてのキーを翻訳する
- 3src/i18n/routing.tsにロケールコードを追加する
- 4npx tsx scripts/check-i18n.tsを実行して完全性を確認する