gtx-cli@2.4.0 におけるローカル編集
概要
gtx-cli 2.4.0 では、ローカルで加えた翻訳の編集内容を CLI から直接保存できる新しい方法が追加されました。 これにより、ダッシュボードを使わなくても、翻訳をローカルで変更し、その内容を保存して、プロジェクトとの同期を維持できるようになりました。
save-local コマンド
これまで、翻訳を編集するにはダッシュボードのエディタを使うしかありませんでした。これでも運用はできましたが、特に開発の途中で翻訳をその場で少し調整したいだけのときには、作業の流れが途切れがちでした。
新しい save-local コマンドを使うと、ローカルで行った翻訳の編集を General Translation プロジェクトにコミットできます。ワークスペースを離れる必要はなく、変更内容も同期されたままです。
npx gtx-cli save-localこのコマンドを実行すると、変更された翻訳ファイルがアップロードされ、ローカルでの変更がプロジェクトにマージされ、次回 translate を実行したときにその編集内容が反映されます。
translate (ローカルの状態も考慮)
これまで、translate は常に翻訳のリモート版を正として扱っていました。
ローカルで変更を加えたあとに再度 translate を実行すると、その変更は上書きされていました。ですが、もうそうはなりません。
今は、次を実行すると:
npx gtx-cli translateCLI は、翻訳を再ダウンロードする前に、save-local と同様にローカルでの変更を自動的に確認し、バックグラウンドで保存します。これにより、ローカルの内容が保持され、再翻訳時にも編集内容が常に維持されます。
次のような表示になります:
翻訳を開始しています...
翻訳対象ファイル:
- src/i18n/en/common.json
- ...
◒ 翻訳を更新しています...
◇ 翻訳を更新しましたソースが変更されるとどうなるか
こう思うかもしれません。ローカルで翻訳を編集したあとにソースファイルを編集すると、どうなるのか? 以前のバージョンでは、そのたびに翻訳全体がやり直され、カスタムの変更は失われていました。
2.4.0 では、CLI がより賢くなっています。ソースの更新で再翻訳が発生しても、以前のローカル編集はそのまま保持されます。しかも、それらは自動的に新しい翻訳へ反映されます。
たとえば、次のようなソース文字列があるとします。
"I am with my mother"次のように翻訳されました:
"Estoy con mi madre"次に、madre ではなく mamá を優先するようローカルで編集します:
"Estoy con mi mamá"後からソースを変更した場合:
"I am NOT with my mother"再翻訳後も、選んだ表現はそのまま尊重されます:
"NO estoy con mi mamá"コンテキストが引き続き有効である限り、ローカルでの言い回しは保持されます。
ソースの意味が完全に変わった場合 (たとえば、mother を father に変える場合) 、CLI はその新しい内容に対して新たに翻訳を実行します。
コード内で翻訳を直接管理しているチームにとって、これによりローカル編集とプロジェクト同期のあいだにあった厄介なギャップが解消されます。ローカルで作業するか、ダッシュボード上の文言を信頼するかで、もう悩む必要はありません。どちらも一貫した状態に保たれるからです。
要点
save-localを使うと、CLI からローカルで加えた翻訳の編集内容をプッシュできます。translateは、ローカルの編集内容を自動的に保持してマージするようになりました。- ソースの意味が実質的に変わらない限り、スマートな再翻訳ロジックによってローカルの変更が維持されます。