多语言逻辑
This commit is contained in:
@@ -7,6 +7,7 @@ namespace NBF
|
||||
public class TabItemData
|
||||
{
|
||||
public string Name;
|
||||
public string Key;
|
||||
public string Icon;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,28 +15,33 @@ namespace NBC
|
||||
public const string LanguageSaveKey = "LanguageSaveKey";
|
||||
|
||||
//简体中文、繁体中文、英语、日语、韩语、泰语、越南语、法语、德语、葡萄牙与、西班牙语、俄语、波兰语、荷兰语、
|
||||
|
||||
//土耳其语、意大利语、印度尼西亚语
|
||||
|
||||
|
||||
|
||||
//简体中文、繁体中文、英语、日语、德语、俄语、法语、西班牙语、韩语、葡萄牙
|
||||
|
||||
//土耳其语、意大利语、印度尼西亚语,阿拉伯语,泰语、越南语、波兰语、荷兰语
|
||||
|
||||
public static readonly List<LanguageInfo> LanguageList = new List<LanguageInfo>()
|
||||
{
|
||||
new LanguageInfo() { Language = SystemLanguage.English, Name = "English", Code = "en" },
|
||||
new LanguageInfo() { Language = SystemLanguage.ChineseSimplified, Name = "简体中文", Code = "zh-CN" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.ChineseTraditional, Name = "繁體中文", Code = "zh-TW" },
|
||||
new LanguageInfo() { Language = SystemLanguage.ChineseTraditional, Name = "繁體中文", Code = "zh-TW" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Japanese, Name = "日本語", Code = "ja" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Korean, Name = "한국어", Code = "ko" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Thai, Name = "ไทย", Code = "th" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Vietnamese, Name = "Tiếng Việt", Code = "vi" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.German, Name = "Deutsch", Code = "de" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.French, Name = "Français", Code = "fr" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.German, Name = "Deutsch", Code = "de" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Korean, Name = "한국어", Code = "ko" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Russian, Name = "Русский", Code = "ru" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Spanish, Name = "Español", Code = "es" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Portuguese, Name = "Português", Code = "pt" },
|
||||
|
||||
// new LanguageInfo() { Language = SystemLanguage.Polish, Name = "Polski", Code = "pl" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Dutch, Name = "Nederlands", Code = "nl" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Turkish, Name = "Türkçe", Code = "tr" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Italian, Name = "Italiano", Code = "it" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Arabic, Name = "العربية", Code = "ar" }
|
||||
// new LanguageInfo() { Language = SystemLanguage.Vietnamese, Name = "Tiếng Việt", Code = "vi" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Thai, Name = "ไทย", Code = "th" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Indonesian, Name = "Bahasa Indonesia", Code = "id" },
|
||||
// new LanguageInfo() { Language = SystemLanguage.Italian, Name = "Italiano", Code = "it" }
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
namespace NBC
|
||||
using System.Collections.Generic;
|
||||
using FairyGUI;
|
||||
|
||||
namespace NBC
|
||||
{
|
||||
public class Lan
|
||||
public static class Lan
|
||||
{
|
||||
private static LanguageManager _inst;
|
||||
|
||||
@@ -19,18 +22,59 @@
|
||||
|
||||
public static ILanguage Text => Inst.GetLanguageModule((int)LanguageModuleType.Text);
|
||||
|
||||
public static string Get(string key)
|
||||
public static void SetLanguage(this GObject child, string key, params object[] args)
|
||||
{
|
||||
if(Text == null) return key;
|
||||
return Text.Get(key);
|
||||
if (Text == null) return;
|
||||
child.lang = key;
|
||||
|
||||
var value = Text.Get(key);
|
||||
|
||||
if (args != null && args.Length > 0)
|
||||
{
|
||||
value = string.Format(value, args);
|
||||
child.langArgs = args;
|
||||
}
|
||||
else
|
||||
{
|
||||
child.langArgs = null;
|
||||
}
|
||||
|
||||
|
||||
if (child is GRichTextField richTextField)
|
||||
{
|
||||
richTextField.text = value;
|
||||
}
|
||||
else if (child is GButton button)
|
||||
{
|
||||
button.title = value;
|
||||
}
|
||||
else if (child is GLabel label)
|
||||
{
|
||||
label.title = value;
|
||||
}
|
||||
else if (child is GTextField gtextField)
|
||||
{
|
||||
gtextField.text = value;
|
||||
}
|
||||
}
|
||||
|
||||
public static string Get(string key, params object[] args)
|
||||
public static void SetLanguageImage(this GObject obj, string key)
|
||||
{
|
||||
var format = string.Format(Text.Get(key), args);
|
||||
return format;
|
||||
}
|
||||
|
||||
// public static string Get(string key)
|
||||
// {
|
||||
// if(Text == null) return key;
|
||||
// return Text.Get(key);
|
||||
// }
|
||||
//
|
||||
// public static string Get(string key, params object[] args)
|
||||
// {
|
||||
// var format = string.Format(Text.Get(key), args);
|
||||
// return format;
|
||||
// }
|
||||
|
||||
|
||||
public static string GetLanImagePath(string key)
|
||||
{
|
||||
return Inst.GetLanguageModule((int)LanguageModuleType.Image).Get(key);
|
||||
|
||||
@@ -39,7 +39,6 @@ namespace NBC
|
||||
{
|
||||
DynamicFont font = new DynamicFont();
|
||||
font.name = config.Name;
|
||||
var nmsl = Resources.Load<Font>(fontLocation + config.RelativePath);
|
||||
font.nativeFont = Resources.Load<Font>(fontLocation + config.RelativePath);
|
||||
FontManager.RegisterFont(font);
|
||||
}
|
||||
|
||||
@@ -157,8 +157,8 @@ namespace NBC
|
||||
var result2 = new LanguageFontConfig()
|
||||
{
|
||||
Type = strs[0],
|
||||
Name = strs[1],
|
||||
RelativePath = strs[2],
|
||||
Name = key,
|
||||
RelativePath = strs[1],
|
||||
};
|
||||
dic[key] = result2;
|
||||
}
|
||||
|
||||
@@ -62,37 +62,41 @@ namespace NBC
|
||||
if (componentLangeage.TryGetValue(id, out var key))
|
||||
{
|
||||
if (child is GLoader gLoader)
|
||||
gLoader.icon = Lan.GetLanImagePath(key);
|
||||
{
|
||||
gLoader.SetLanguageImage(key);
|
||||
}
|
||||
else
|
||||
SetChildLanguage(child, Lan.Get(key));
|
||||
{
|
||||
child.SetLanguage(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetChildLanguage(object child, string value)
|
||||
{
|
||||
if (child is TextField textField)
|
||||
{
|
||||
textField.text = value;
|
||||
}
|
||||
else if (child is GRichTextField richTextField)
|
||||
{
|
||||
richTextField.text = value;
|
||||
}
|
||||
else if (child is GButton button)
|
||||
{
|
||||
button.title = value;
|
||||
}
|
||||
else if (child is GLabel label)
|
||||
{
|
||||
label.title = value;
|
||||
}
|
||||
else if (child is GTextField gtextField)
|
||||
{
|
||||
gtextField.text = value;
|
||||
}
|
||||
}
|
||||
// private void SetChildLanguage(object child, string value)
|
||||
// {
|
||||
// if (child is TextField textField)
|
||||
// {
|
||||
// textField.text = value;
|
||||
// }
|
||||
// else if (child is GRichTextField richTextField)
|
||||
// {
|
||||
// richTextField.text = value;
|
||||
// }
|
||||
// else if (child is GButton button)
|
||||
// {
|
||||
// button.title = value;
|
||||
// }
|
||||
// else if (child is GLabel label)
|
||||
// {
|
||||
// label.title = value;
|
||||
// }
|
||||
// else if (child is GTextField gtextField)
|
||||
// {
|
||||
// gtextField.text = value;
|
||||
// }
|
||||
// }
|
||||
|
||||
void SetComponentFont(GComponent component)
|
||||
{
|
||||
|
||||
@@ -47,7 +47,15 @@ namespace NBF
|
||||
{
|
||||
var tabData = tabList[i];
|
||||
var tabItem = List.AddItemFromPool().asButton;
|
||||
tabItem.title = Lan.Get(tabData.Name);
|
||||
if (!string.IsNullOrEmpty(tabData.Key))
|
||||
{
|
||||
tabItem.SetLanguage(tabData.Key);
|
||||
}
|
||||
else
|
||||
{
|
||||
tabItem.SetLanguage(tabData.Name);
|
||||
}
|
||||
|
||||
listWidth += tabItem.width;
|
||||
if (i > 0)
|
||||
{
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace NBF
|
||||
{
|
||||
var tabData = subItems[i];
|
||||
var tabItem = List.AddItemFromPool().asButton;
|
||||
tabItem.title = Lan.Get(tabData.Name);
|
||||
tabItem.SetLanguage(tabData.Name);
|
||||
width += tabItem.width;
|
||||
if (i > 0)
|
||||
{
|
||||
|
||||
@@ -25,17 +25,17 @@ namespace NBF
|
||||
{
|
||||
if (string.IsNullOrEmpty(title))
|
||||
{
|
||||
title = Lan.Get("TEXT_NOTE");
|
||||
title = "TEXT_NOTE";
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(confirm))
|
||||
{
|
||||
confirm = Lan.Get("TEXT_CONFIRM");
|
||||
confirm = "TEXT_CONFIRM";
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(cancel))
|
||||
{
|
||||
cancel = Lan.Get("TEXT_CANCEL");
|
||||
cancel = "TEXT_CANCEL";
|
||||
}
|
||||
|
||||
_confirmText = confirm;
|
||||
@@ -59,10 +59,10 @@ namespace NBF
|
||||
|
||||
protected override void OnShow()
|
||||
{
|
||||
TextTitle.text = _title;
|
||||
BtnConfirm.title = _confirmText;
|
||||
BtnCancel.title = _cancelText;
|
||||
TextContent.text = _content;
|
||||
TextTitle.SetLanguage(_title);
|
||||
BtnConfirm.SetLanguage(_confirmText);
|
||||
BtnCancel.SetLanguage(_cancelText);
|
||||
TextContent.SetLanguage(_content);
|
||||
MessageStyle.selectedIndex = _style;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace NBF
|
||||
Slider.wholeNumbers = true;
|
||||
}
|
||||
|
||||
TextName.text = Lan.Get(Option.Name);
|
||||
TextName.SetLanguage(Option.Name);
|
||||
SetShow();
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,8 @@ namespace NBF
|
||||
{
|
||||
var tab = new TabListData
|
||||
{
|
||||
Name = group
|
||||
Name = group,
|
||||
Key = $"TEXT_SETTINGS_{group}"
|
||||
};
|
||||
tabList.Add(tab);
|
||||
}
|
||||
@@ -85,7 +86,7 @@ namespace NBF
|
||||
var value = groupOptions[key];
|
||||
if (List.AddItemFromPool(url) is GLabel label)
|
||||
{
|
||||
label.title = Lan.Get(key);
|
||||
label.SetLanguage(key);
|
||||
}
|
||||
|
||||
foreach (var option in value)
|
||||
@@ -199,8 +200,8 @@ namespace NBF
|
||||
var settingItem = List.GetChildAt(index);
|
||||
if (settingItem is SettingItem item)
|
||||
{
|
||||
Introduce.TextName.text = Lan.Get(item.Option.Name);
|
||||
Introduce.TextIntroduce.text = Lan.Get(item.Option.Name);
|
||||
Introduce.TextName.SetLanguage(item.Option.Name);
|
||||
Introduce.TextIntroduce.SetLanguage(item.Option.Name);
|
||||
// Introduce.
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user