gtx-cli@2.3.0
概要
gtx-cli 2.3.0 では、translate コマンドと upload コマンドの動作を更新し、翻訳パイプラインの可視性を向上させました。
translate
これまで translate は、翻訳を実行するだけでなく、バックグラウンドで一度限りのプロジェクト設定も行っていました (ダッシュボード に表示されるコンテキストや用語集の生成など) 。
小規模なプロジェクトではすぐに終わりますが、大規模なコードベースでは設定に時間がかかり、タイムアウトが発生して、翻訳に失敗したように見えることがありました。
実際には、ユーザーには translate が失敗したように見えても、設定処理は非同期で完了し、翻訳自体は生成されていました。ただしダウンロードは行われないため、不完全でわかりにくい UX につながっていました。
セットアップ
セットアップは、現在は独立したステップになっています。タイムアウトが起きにくくなるよう最適化しました。
ただし、セットアップは依然として失敗する可能性があるため、翻訳はセットアップの完了に「依存」しなくなりました。現在のパイプラインは、おおよそ次のようになります。
- アップロード: ファイルを送信し、正常に完了したことを確認します。
- セットアップ (only if needed): セットアップジョブを開始して待機します。失敗またはタイムアウトしても、そのまま次に進みます。
- Translate: すでにアップロードしたファイルをもとに翻訳ジョブを作成します。
セットアップが時間内に完了すれば理想的です。失敗またはタイムアウトした場合でも、処理は継続され、何が起きたかをお知らせします。翻訳結果は引き続き取得できます。
npx gtx-cli translate を実行すると、次のように表示されます。
Starting translation...
Files to translate:
- your/file/path.mdx
- ...
Uploading files to General Translation API...
✔ Files uploaded successfully
Setting up project...
# セットアップが成功した場合
Setup successfully completed.
# セットアップがタイムアウトした場合
⚠ Setup timed out — proceeding without setup: Timed out while waiting for setup generation
# セットアップが失敗した場合
⚠ Setup failed — proceeding without setup: <error message>
# いずれの場合も、翻訳処理を続行します
Creating 12 translation(s)
[0/12] translations completed
your/file/path.mdx [es]この変更により、万が一セットアップに失敗しても、翻訳は確実に生成されるようになりました。
また、翻訳に影響するコンテンツを、どのようにどこで生成しているかがこれまで以上に見えやすくなりました。さらに、新しいセットアップ手順を追加しても翻訳が止まることはないため、安心して追加できます。
アップロード
upload がさらに柔軟になりました。以前のバージョンでは、ソースファイルは常に翻訳と一緒に送信することが前提でした。しかし、それでは対応できないワークフローもあります。現在は次のことができます。
- ソースファイルのみをアップロードする (翻訳はまだ不要) 。
- ソース + 翻訳をまとめてアップロードする。
翻訳は引き続き、リポジトリ構造と設定から自動検出されます。アップロードすると、すぐに ダッシュボード でファイルを確認できます。
gt.config.json が次のようになっている場合:
{
"defaultLocale": "en",
"locales": ["es", "fr"],
"files": {
"json": { "include": ["src/i18n/en/**/*.json"] }
}
}npx gtx-cli upload を実行すると:
# ソースのみ(ローカル翻訳が見つかりません):
Starting upload...
Files to upload:
- src/i18n/en/common.json -> es, fr
...
Uploading 1 file(s) to General Translation...
✔ Files uploaded successfully
Done!
# ダッシュボードには以下が表示されます:
# src/i18n/en/common.json
# 対応する翻訳はまだありません。ローカルの翻訳が存在し、自動検出された場合:
Starting upload...
Files to upload:
- src/i18n/en/common.json -> es, fr
Uploading 3 file(s) to General Translation...
✔ Files uploaded successfully
Done!
# ダッシュボードには以下が表示されます:
# src/i18n/en/common.json
# さらに、ロケールのドロップダウンにスペイン語とフランス語の翻訳版も表示されます。ロケールの翻訳ファイルが存在しない場合は、ソースをアップロードし、その翻訳はスキップします。
ローカルに翻訳があっても、ソースだけをアップロードしたい場合は、upload を実行する前に gt.config.json から locales を削除してください:
{
"defaultLocale": "en",
"locales": [],
"files": {
"json": { "include": ["src/i18n/en/**/*.json"] }
}
}アップロードすると既存の翻訳は上書きされます
注意:
uploadを実行すると、特定のファイル/ロケールについて検出・アップロードされた翻訳ファイルで、そのファイル/ロケールに現在保存されている内容が置き換えられます。
- ソースだけをアップロードするには、
uploadの前にgt.config.jsonから対象のロケールを削除してください。- 変更内容を先に確認したい場合は、別のプロジェクトを使用するか、アップロード前に現在の翻訳をエクスポートしてください。
- 翻訳がないものはスキップされ、翻訳があるものは置き換えられます。