📝 Is your feature request related to a problem?
avatar-compressor のユーザー層は日本だけでなく国外にも需要が広がっており、多言語対応(I18n)の需要が出始めています。
現在の UI 実装(ハードコードされた文字列など)では、多言語対応を行うのが難しく、また開発者が翻訳ファイルを管理する負担も大きいです。
さらに、Modular Avatar や Avatar Optimizer といった他の NDMF ツールとの一貫性(言語設定の共有など)も不足しています。
また、現状のUIは英語ですがユーザー数が多いのは日本であると考えます。
💡 Describe the solution you'd like
NDMF (Non-Destructive Modular Framework) が提供する標準のローカライズ機能 (nadena.dev.ndmf.localization) を導入し、Crowdin を用いた翻訳ワークフローの自動化を提案します。
1. NDMF Localization API の採用
- NDMF の
Localizer クラスを使用することで、Modular Avatar 等と共通の言語設定 (LanguagePrefs) を利用できるようにします。
LocalizeUIElements メソッドを活用し、UI Toolkit (UXML) ベースの翻訳適用を簡素化します。
2. Crowdin + GitHub Actions による自動化
- Crowdin(翻訳管理プラットフォーム)と連携し、翻訳作業をコミュニティに開放します。
- GitHub Actions を設定し、
main ブランチへのプッシュで原文 (en-US.json) を Crowdin にアップロードし、翻訳結果を定期的に Pull Request として取り込むワークフローを構築します。
👥 Implementation Details (Draft & AI Base)
ディレクトリ構成案:
Editor/
└── Localization/
├── en-US.json (Source)
├── ja-JP.json
├── ko-KR.json
├── zh-CN.json
└── ACLocalization.cs
ACLocalization.cs 実装イメージ:
using nadena.dev.ndmf.localization;
internal static class ACLocalization
{
private static Localizer _localizer;
public static Localizer Localizer
{
get
{
if (_localizer == null)
{
_localizer = new Localizer("en-US", () => LoadLocalizationAssets());
}
return _localizer;
}
}
// 簡易アクセサ
public static string Tr(string key) => Localizer.GetLocalizedString(key);
}
Describe alternatives you've considered
- 独自のローカライズ実装: メンテナンスコストが高く、他のツールと言語設定が連動しないため却下。
- PRベースの手動翻訳: 翻訳ファイルの競合や、開発者によるマージ作業の負担が大きいため、Crowdin による自動化が望ましい。
Additional context
なし
📝 Is your feature request related to a problem?
avatar-compressorのユーザー層は日本だけでなく国外にも需要が広がっており、多言語対応(I18n)の需要が出始めています。現在の UI 実装(ハードコードされた文字列など)では、多言語対応を行うのが難しく、また開発者が翻訳ファイルを管理する負担も大きいです。
さらに、Modular Avatar や Avatar Optimizer といった他の NDMF ツールとの一貫性(言語設定の共有など)も不足しています。
また、現状のUIは英語ですがユーザー数が多いのは日本であると考えます。
💡 Describe the solution you'd like
NDMF (Non-Destructive Modular Framework) が提供する標準のローカライズ機能 (
nadena.dev.ndmf.localization) を導入し、Crowdin を用いた翻訳ワークフローの自動化を提案します。1. NDMF Localization API の採用
Localizerクラスを使用することで、Modular Avatar 等と共通の言語設定 (LanguagePrefs) を利用できるようにします。LocalizeUIElementsメソッドを活用し、UI Toolkit (UXML) ベースの翻訳適用を簡素化します。2. Crowdin + GitHub Actions による自動化
mainブランチへのプッシュで原文 (en-US.json) を Crowdin にアップロードし、翻訳結果を定期的に Pull Request として取り込むワークフローを構築します。👥 Implementation Details (Draft & AI Base)
ディレクトリ構成案:
Editor/
└── Localization/
├── en-US.json (Source)
├── ja-JP.json
├── ko-KR.json
├── zh-CN.json
└── ACLocalization.cs
ACLocalization.cs 実装イメージ:
Describe alternatives you've considered
Additional context
なし