using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Serialization; namespace AlicizaX.Localization.Editor { [AlicizaX.Editor.Setting.FilePath("ProjectSettings/LocalizationConfiguration.asset")] public class LocalizationConfiguration : AlicizaX.Editor.Setting.ScriptableSingleton { private const string DefaultLanguageTypesTemplate = @"using System.Collections.Generic; {NAMESPACE_START}/// /// AutoGenerate /// public static class LanguageTypes { {LANGUAGE_CONSTANTS} public static readonly IReadOnlyList Languages = new List { {LANGUAGE_LIST} }; public static string IndexToString(int index) { if (index < 0 || index >= Languages.Count) return ""Unknown""; return Languages[index]; } public static int StringToIndex(string s) { int index = -1; for (int i = 0; i < Languages.Count; i++) { if (Languages[i] == s) { index = i; break; } } return index; } } {NAMESPACE_END}"; [SerializeField] internal string generateScriptCodeFirstConfig; [SerializeField] internal string generateLanguageTypesNamespace = string.Empty; [SerializeField] internal string generateLanguageTypesTemplate = DefaultLanguageTypesTemplate; [SerializeField] private List LanguageTypes = new List() { /// /// 简体中文。 /// "ChineseSimplified", /// /// 英语。 /// "English", /// /// 日语。 /// "Japanese", /// /// 俄语。 /// "Russian", }; [SerializeField] private string _genLangaugeTypePath = "Assets/LanguageTypes.cs"; public IReadOnlyList LanguageTypeNames => LanguageTypes; public string GenerateScriptCodeFirstConfig => generateScriptCodeFirstConfig; public string GenerateLanguageTypesNamespace => generateLanguageTypesNamespace; public string GenerateLanguageTypesTemplate => string.IsNullOrEmpty(generateLanguageTypesTemplate) ? DefaultLanguageTypesTemplate : generateLanguageTypesTemplate; public static string DefaultTemplate => DefaultLanguageTypesTemplate; } }