VS Code でコード内の文字列を翻訳


やはり生粋の日本人(ここでは、すばらしい英語教育のため…、英語が嫌いになり日本語以外の読解がネイティブの10分の1も扱えない者の意)では、ほぼ英語でしか記述されない、Unity の Asset 群などの理解にどうして時間がかかってしまいます。

発端

私がよく使う Root Motion の Final IK、Puppet Master などは素晴らしいアセットなのですが、とても複雑です。理解するにはやはり英語の壁を越えなければなりません。

一番時間かかるのはアセット適用後の調整だと思います。 こればかりは実際に実行し、値を調整していかなければならないのですが、調整するパラメーターがとても多く、そのパラメーターが何を意味するのか理解して調整という繰り返しです。 で、理解するためには英語の理解が必要であると。単語程度なら何とかなるのですが、長文になると厳しいです。

今の時代翻訳能力は素晴らしいです Google の翻訳は本当にすごくて、英語のサイトであろうと、きれいな英語で記述されていると、かなりの精度で日本語に翻訳可能です。なので以前も翻訳機能を用いてコードの部分翻訳を試みたことがあったのですが、効率がどうして悪くてとても大変な作業でした。

で、今回考えたワークフローを使うと、ほぼ人間はショートカットを叩くだけで良いのでミスがかなり減ります。

翻訳結果

フォントが小さいうえに、長文。ツールチップなので選択もできず、Google 翻訳に持っていけない…

個人の拙い英語力で翻訳するより、ある程度の精度の翻訳結果を前提に、脳内で正しい日本語に直す方が圧倒的に早いことが経験上わかりました。

準備

VS Code コードのインストールは大前提なので割愛。

「Vscode Google Translate」を導入

Vscode Google Translate の設定

Preferred Language で日本語 ja を選択

ja を追加。

VS Code のキーボードショートカットを追加

ショートカットを設定

デフォルトっぽい Shift+Alt+T に設定。

作業

フィルダを開く

検索(Ctrl+Shift+Fの方)で置換したい文字列を検索(適当に)

この例では TooltipAttribute 内の文字列を翻訳したいので、とりあえず Tootip(” で簡単に文字列検索しています。

.NET の Attribute クラスですが、人によっては無駄に Attribute まで記述しちゃう場合があります、問題なのは混在していることです。なのであらかじめ Visual Studio 等でどちらかに一括修正しておきます。(クイック操作 Ctrl+. で一括無駄記述処理)

置換したいファイルを開く

検索結果のドキュメントをすべて開くというアクションが VS Code には無い?ようなので、適当にダブルクリックしながらファイルを開いてい行きます。

ファイル内の検索(Ctrl+F) で文字列を検索(詳細に)

色が変わっていますが、選択されているわけではありません。一致がマークされているだけです。

ちなみに、ただ単純に文字列検索してもダメです。正規表現による検索は必須です。

例えば、今回の場合、TooltipAttribute のダブルクォーテーションに囲われた文字列を選択するのですが、Tooltip もダブルクォーテーションも選択結果に入っては正しい翻訳が行えません。

[Tooltip("Hoge Hoge")]

で、ダブルクォーテーションを除いた文字列のみを抽出する正規表現は(検索時に正規表現機能を有効にすること)、

(?<=\[Tooltip\(").*?(?="\)\])

で、ほぼ目的は達成できるかと。 中には Tooltip 宣言内で分割して改行したり、Tootlip を GUIContent を使って生成している場合もあるので、その時は臨機応変に正規表現を変えて対処します。

検索結果を Multi Cursor で選択 (Ctrl+Shift+L)

これが VS Code を使う理由ですね。マルチ選択。素晴らしいです。

マルチ選択すると、色が変わり、一致文字列の終端のカーソルが点滅します。

翻訳実行(Shift+Alt+T)

設定した翻訳ショートカットを使って一気に選択部分を翻訳。

次のファイルへ移動(Ctrl+Page Down など)

ここもショートカットを使って、マウスカーソルによる移動など時間の無駄を排除します。

検索結果が有効になっているので、Multi Cursor で選択

ドキュメントが移動しても検索結果が有効なので、そのままマルチ選択。

翻訳実行(Alt+Shift+T)

無心でショートカットを…

対象ファイルがなくなるまでひたすら繰り返し

よく訓練されたショートカット使いは、この後「目標をセンターに入れてスイッチ…」のごとく、機械的に作業可能なはずです。 格ゲーのコマンド入力と何ら変わりません。

  • Ctrl+PgDown
  • Ctrl+Shift+L
  • Shift+Alt+T
  • Ctrl+PgDown

すべて保存

Ctrl+K S だけど、IME が有効になっていると誤動作するかも、メニューから実行したほうが安心 [ファイル][すべて保存]。

すべて閉じる

変換後のドキュメントはもう必要ないので閉じしてしまいます。Ctrl+K W(ただし IME が有効に~以下同文 [タブ][コンテキストメニュー][すべて閉じる])

あとは、漏れが無いかフォルダーでの検索結果を見たり、検索ワードを変えたりしてつぶしていきます。

まとめ

あとは正規表現次第で、どんな文字列も検索して置換できると思います。

本当は原文の後に、翻訳結果を追加して欲しかったのだけど、この拡張機能は検索結果を次の行にという機能はあるものの、繋げて一つの文字列にするという機能は無いようです。

あくまで、利用は私的利用の範囲で行い、利用する場合は Google 利用規約を理解した上での利用を心がけてください。 この情報にしたがって行動した結果に対して責任を負うことはできません。

コメントを残す

メールアドレスが公開されることはありません。