using System.Collections.Generic; using FairyGUI; namespace NBC { public class UIComponentLanguage : Dictionary { } public abstract class UIComponentLanguagePack : Dictionary { public bool Has(string url) { return ContainsKey(url); } public void TrySetComponentLanguage(GComponent component) { if (component.packageItem == null) return; SetComponentFont(component); if (!Has(component.resourceURL)) return; SetComponentLanguage(component); } /// /// 设置Panel时不判断配置中是否有数据 /// /// public void TrySetPanelLanguage(GComponent component) { SetComponentFont(component); SetComponentLanguage(component); } /// /// 设置组件多语言 /// /// public void SetComponentLanguage(GComponent component) { bool comHasLanConfig = false; UIComponentLanguage componentLangeage = null; if (component.packageItem != null && TryGetValue(component.resourceURL, out componentLangeage)) comHasLanConfig = true; var count = component.numChildren; for (var i = 0; i < count; i++) { var child = component.GetChildAt(i); if (child.packageItem != null && child is GComponent childCom) { SetComponentLanguage(childCom); } else if (child is GList list) { SetComponentLanguage(list); } if (comHasLanConfig) { var id = child.id; if (componentLangeage.TryGetValue(id, out var key)) { if (child is GLoader gLoader) { // gLoader.SetLanguageImage(key); } else { SetLanValue(child, key); } } } } } void SetLanValue(GObject child, string value) { // 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) { var count = component.numChildren; for (var i = 0; i < count; i++) { var child = component.GetChildAt(i); if (child is GComponent childCom) { SetComponentFont(childCom); } else { SetChildFont(child); } } } void SetChildFont(GObject child) { // GTextField curField = null; // if (child is GRichTextField richTextField) // { // curField = richTextField; // } // else if (child is GButton button) // { // curField = button.GetTextField(); // } // else if (child is GLabel label) // { // curField = label.GetTextField(); // } // else if (child is GTextField gtextField) // { // curField = gtextField; // } // // if (curField == null) return; // var textFormat = curField.textFormat; // Log.Info($"font={textFormat.font}"); // var fontName = textFormat.font; // if (string.IsNullOrEmpty(fontName)) // { // fontName = UIConfig.defaultFont; // } // var font = Lan.GetLanFontByCurFont(fontName); // if (font == null) return; // textFormat.font = font; // curField.textFormat = textFormat; } } }