Sayamame-beans / VRCPhysBone-Relocator

Relocate the PhysBone and PhysBoneCollider Components to the object set in the "Root Transform". This is useful when the object corresponding to the PhysBone is hard to find (e.g. VRoid Avatar).
Other
3 stars 1 forks source link

多言語対応の正式な実装 #1

Open Sayamame-beans opened 2 years ago

Sayamame-beans commented 2 years ago

現在、英語と日本語に対応しているが、実装が雑であり、他の言語に対応することが出来ない。 この実装を他言語に対応しやすいように修正することが望ましいと考える。

anatawa12 commented 2 years ago

ざっと調べた感じ、LocalizationAssetと 言語.po を使うのがunityとして正しそうです。

.po自体はgettext等で使われてる、非Unity固有なものだそうです。

Sayamame-beans commented 2 years ago

なるほど。確かにUnityとしてはその実装が正しそうですね… しかしながらVRCユーザー、解説記事を見たり知人からサポートを受けたりなどの兼ね合いで、英語で任意のソフトを扱うのが難しくてもエディタの言語は英語だったりする気がするんですよね。(実際、私も相手が日本語UIだと対応する言葉が分からず苦戦したので) なので、「あまりよろしくない実装だろうな」とは思いつつも、出来ればエディタの言語設定に依存しないようにしたかったりします…

anatawa12 commented 2 years ago

UnityEditor.Localization.Editor.Localization.Trを使う場合はエディタの言語に揃ってしまい、変更する方法なさそうですね。

今調べたところAssetDatabase.LoadAssetAtPath<LocalizationAsset>("path")で.poファイルを直接扱えるよう(実証済)なので、それを使うのが一つの実装方法となりそうです。

半OffTopic: アセットのパスが固定じゃなくても良くする方法 もし.unitypackageとunity package manager両対応するのであればAssetのパスが固定ではなくなるので、GUIDを使う以下の方法を使うのが良さそうです(実証済)。jaだけGUID経由にして、enはそこからの相対pathのような方法も使えると思います(実証済)。 ``` AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath("")) ```
Sayamame-beans commented 2 years ago

現在、CustomLocalization4EditorExtensionを用いた実装はmergeされていますが、AutoPackageInstallerの導入を行う必要があります。Sayamame-beans/VRCPhysBone-Relocator at migrate-to-AutoPackageInstaller これをもって、多言語対応が完了します。

Sayamame-beans commented 1 year ago

AutoPackageInstallerはVPAIに置き換わっているため、AutoPackageInstallerの導入・対応は不要になっています。 ただし、 #11 により、CL4EEをVPM版に変更するか、組み込む必要があります。

Sayamame-beans commented 3 months ago

CL4EEを使い続けるか要検討感