com.alicizax.unity.framework/Editor/Localization/LocalizationConfiguration.cs
2026-04-17 13:01:42 +08:00

86 lines
2.5 KiB
C#

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<LocalizationConfiguration>
{
private const string DefaultLanguageTypesTemplate =
@"using System.Collections.Generic;
{NAMESPACE_START}/// <summary>
/// AutoGenerate
/// </summary>
public static class LanguageTypes
{
{LANGUAGE_CONSTANTS}
public static readonly IReadOnlyList<string> Languages = new List<string>
{
{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<string> LanguageTypes = new List<string>()
{
/// <summary>
/// 简体中文。
/// </summary>
"ChineseSimplified",
/// <summary>
/// 英语。
/// </summary>
"English",
/// <summary>
/// 日语。
/// </summary>
"Japanese",
/// <summary>
/// 俄语。
/// </summary>
"Russian",
};
[SerializeField] private string _genLangaugeTypePath = "Assets/LanguageTypes.cs";
public IReadOnlyList<string> LanguageTypeNames => LanguageTypes;
public string GenerateScriptCodeFirstConfig => generateScriptCodeFirstConfig;
public string GenerateLanguageTypesNamespace => generateLanguageTypesNamespace;
public string GenerateLanguageTypesTemplate => string.IsNullOrEmpty(generateLanguageTypesTemplate) ? DefaultLanguageTypesTemplate : generateLanguageTypesTemplate;
public static string DefaultTemplate => DefaultLanguageTypesTemplate;
}
}