💬
【C#】VRChatSDKを翻訳してみた話
本記事はプロモーションを含みます(笑)
BoothにVRChatSDKのBuildタブを翻訳できる「VRChatSDK翻訳機」を出品しています。
開発秘話を書いていこうと思います。
ツールの作成経緯
ワールド作っていて、ツールチップとか翻訳したいのに、マウスでドラッグできないやん!
って思ったのが発端です(笑
VRChatSDK翻訳機とは
先述の通りVRChatSDKのBuildタブを翻訳できます。
翻訳方向は「英語→日本語」と、その逆です。
アプリ概要
- Windows formアプリ(C#)
- .NETバージョン(.NET6.0)
ロジック
大ざっぱにロジック
- Unityプロジェクトフォルダ>Packagesフォルダ配下の翻訳対象のバックアップ
- 翻訳対象のファイル数でループ
- 対象ファイルを読み込みつつ対象の文言を置換
やったこと
翻訳ファイル
翻訳の英語 / 日本語の対比管理はJSONを採用しました。
理由としては、翻訳対象のファイルが複数あるからってことと、プログラム内で扱いやすいだろうと考えたからです。
あとは、今後他の言語に対応も想定してたりします。
対象ファイル
uxmlと一部C#でした。泥臭くGrepして探しました(笑
- VRCSdkWorldBuilderContentInfo.uxml
- VRCSdkWorldBuilderBuildLayout.uxml
- ContentWarningsField.cs
- ThumbnailFoldout.uxml
翻訳ロジック
結論からいくと、「ReadLines」で読み込んで、1行ずつ処理してます。
作り始めた当初は、xmlっぽいしLinqを使おうとしていました。
が、「XElement」とかで取得しても、要素の取得ができない・・・。
uxml≠xmlのだったのが原因だった模様。
テキストファイル読み込んでLinq使えばよかったかもですが、今後試してみようかと思ってます。
あとがき
uxmlから翻訳対象を抽出して、deeplで翻訳してJSONにするのがめんどくさかったですね(笑
ロジックも比較的泥臭い感じがあるので、もうちょい効率的にできないかな~とかも思います。
Discussion