CSV
Lingo.dev CLIによるCSVファイルのAI翻訳
CSVとは何ですか?
CSV(Comma-Separated Values)は、表形式のデータを保存するプレーンテキストファイル形式で、各行がデータの行を表し、各行内の値はカンマで区切られています。
例えば:
KEY,en
welcome_message,Welcome to our application
button_save,Save
error_invalid_email,Please enter a valid email address
Lingo.dev CLIとは何ですか?
Lingo.dev CLIは、AIでアプリやコンテンツを翻訳するための無料のオープンソースCLIです。従来の翻訳管理ソフトウェアに代わり、既存のパイプラインと統合できるように設計されています。
詳細については、概要をご覧ください。
このガイドについて
このガイドでは、Lingo.dev CLIを使用してCSVファイルを翻訳する方法を説明します。
以下の方法を学びます:
- ゼロからプロジェクトを作成する
- 翻訳パイプラインを設定する
- AIで翻訳を生成する
前提条件
Lingo.dev CLIを使用するには、Node.js v18以上がインストールされていることを確認してください:
❯ node -v
v22.17.0
ステップ 1. プロジェクトをセットアップする
プロジェクトのディレクトリにi18n.jsonファイルを作成します:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
このファイルは、翻訳パイプラインの動作を定義し、どの言語間で翻訳するか、ファイルシステム上のどこにローカライズ可能なコンテンツが存在するかを指定します。
利用可能なプロパティの詳細については、i18n.jsonをご覧ください。
ステップ 2. ソースロケールを設定する
_ソースロケール_は、コンテンツが最初に書かれた元の言語と地域です。ソースロケールを設定するには、i18n.jsonファイルのlocale.sourceプロパティを設定します:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
ソースロケールはBCP 47言語タグとして提供する必要があります。
Lingo.dev CLIがサポートするロケールコードの完全なリストについては、サポートされているロケールコードをご覧ください。
ステップ3. ターゲットロケールの設定
_ターゲットロケール_はコンテンツを翻訳したい言語と地域です。ターゲットロケールを設定するには、i18n.jsonファイルのlocale.targetsプロパティを設定します:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
ステップ4. ソースコンテンツの作成
まだ作成していない場合は、翻訳するコンテンツを含むCSVファイルを作成してください。
CSVファイルの場合、以下の要件が適用されます:
- 最初の列は「KEY」という名前にする必要があります。
- 「KEY」列の各行には、翻訳メッセージの一意のIDを指定する必要があります。
- 2列目は
i18n.jsonファイルで定義されているソースロケールと一致する必要があります。 - 2列目の各行には、翻訳されるコンテンツを含める必要があります。
注意: 翻訳プロセス中、ソースコンテンツファイルは上書きされ、翻訳されたコンテンツ(ソースコンテンツに加えて)が含まれるようになります。
ステップ 5. バケットを作成する
-
i18n.jsonファイルで、bucketsオブジェクトに"csv"オブジェクトを追加します:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "csv": {} } } -
"csv"オブジェクト内で、1つ以上のincludeパターンの配列を定義します:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "csv": { "include": ["./example.csv"] } } }これらのパターンは翻訳するファイルを定義し、以下のいずれかの方法で指定できます:
- 特定のファイルパスを指定する(例:
"some/dir/file.csv") - ワイルドカードプレースホルダーとしてアスタリスクを使用する(例:
"some/dir/*.csv")
再帰的なグロブパターン(例:
**/*.csv)はサポートされていません。 - 特定のファイルパスを指定する(例:
ステップ 6. LLMを設定する
Lingo.dev CLIは大規模言語モデル(LLM)を使用してAIでコンテンツを翻訳します。これらのモデルを使用するには、サポートされているプロバイダーからAPIキーが必要です。
可能な限り早く始めるために、毎月10,000トークンの無料使用量を提供する当社独自のホスト型プラットフォームLingo.dev Engineの使用をお勧めします:
-
次のコマンドを実行します:
npx lingo.dev@latest loginこれによりデフォルトのブラウザが開き、認証を求められます。
-
画面の指示に従ってください。
ステップ 7. 翻訳を生成する
i18n.jsonファイルを含むディレクトリで、次のコマンドを実行します:
npx lingo.dev@latest run
このコマンドは以下を実行します:
i18n.jsonファイルを読み込みます。- 翻訳が必要なファイルを見つけます。
- ファイルから翻訳可能なコンテンツを抽出します。
- 設定されたLLMを使用して抽出されたコンテンツを翻訳します。
- 翻訳されたコンテンツをファイルシステムに書き込みます。
翻訳が初めて生成されるとき、i18n.lockファイルが作成されます。このファイルは、どのコンテンツが翻訳されたかを追跡し、後続の実行で不要な再翻訳を防ぎます。
例
example.csv(翻訳前)
KEY,en
welcome_message,Welcome to our application
button_save,Save
error_invalid_email,Please enter a valid email address
product_name,Premium Widget
empty_row_key,
whitespace_only,
new_feature,This is a new feature
example.csv(翻訳後)
KEY,en,es
welcome_message,Welcome to our application,Bienvenido a nuestra aplicación
button_save,Save,Guardar
error_invalid_email,Please enter a valid email address,"Por favor, introduce una dirección de correo electrónico válida"
product_name,Premium Widget,Widget Premium
empty_row_key,,
whitespace_only, ,
new_feature,This is a new feature,Esta es una nueva función
i18n.json
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {
"csv": {
"include": ["./example.csv"]
}
}
}
i18n.lock
version: 1
checksums:
e8b273672f895de0944f0a2317670d7c:
welcome_message: 1308168cca4fa5d8d7a0cf24e55e93fc
button_save: f7a2929f33bc420195e59ac5a8bcd454
error_invalid_email: 8de4bc8832b11b380bc4cbcedc16e48b
product_name: d3d99b147cc363dc6db8a48e8a13d4c1
new_feature: 7cd986af1fe5e89abe7ecffba5413110
d0f33bd41270762260010c4723a564f5:
welcome_message: 1308168cca4fa5d8d7a0cf24e55e93fc
button_save: f7a2929f33bc420195e59ac5a8bcd454
error_invalid_email: 8de4bc8832b11b380bc4cbcedc16e48b
product_name: d3d99b147cc363dc6db8a48e8a13d4c1
new_feature: 7cd986af1fe5e89abe7ecffba5413110