多语言设置界面逻辑

This commit is contained in:
bob
2025-06-12 16:18:55 +08:00
parent 15eaa0e666
commit 07e7715be8
20 changed files with 212 additions and 111 deletions

View File

@@ -53,12 +53,11 @@ namespace NBF.Setting
public ISettings Root { get; private set; }
public void Initialize(ISettings root)
{
Root = root;
OnInitialize();
Load();
OnInitialize();
Apply();
}

View File

@@ -3,21 +3,10 @@ using UnityEngine;
namespace NBF.Setting
{
public enum SettingLanguage
{
English = 10,
French = 14,
Japanese = 22,
Korean = 23,
Russian = 30,
ChineseSimplified = 40,
ChineseTraditional = 41,
}
[Sort(100)]
public class LanguageSetting : MultiOption<SettingLanguage>
public class LanguageSetting : MultiOption<int>
{
private SettingLanguage _defaultLanguage;
private int _defaultLanguage;
public override string Name => "Language";
public override string Group => SettingsDef.Group.Language;
@@ -27,11 +16,38 @@ namespace NBF.Setting
protected override void OnInitialize()
{
_defaultLanguage = (SettingLanguage)Application.systemLanguage;
var list = LanguageConst.LanguageList;
var systemLanguage = Application.systemLanguage;
var systemIndex = list.FindIndex(t => t.Language == systemLanguage);
if (systemIndex < 0)
{
systemIndex = 0;
}
_defaultLanguage = (int)Lan.Inst.GetCurrentLanguage();
for (int i = 0; i < list.Count; i++)
{
var lang = list[i];
AddOption(lang.Name, i);
}
_defaultLanguage = systemIndex;
var current = GetValue();
if (current < 0 || current >= LanguageConst.LanguageList.Count)
{
SetValue(_defaultLanguage);
}
}
protected override void OnApply()
{
var lang = LanguageConst.LanguageList[GetValue()];
Lan.Inst.UseLanguage(lang.Language);
}
// public override string GetDisplayString()
// {
// return ((SystemLanguage)GetValue()).ToString();
// }
}
}