using UnityEngine; using System; using TMPro; using System.Collections.Generic; [System.Serializable] public class LocalizedText { public string key; public string english; public string arabic; } public class LanguageManager : MonoBehaviour { public static LanguageManager Instance; public LanguageDatabase languageDB; public string currentLanguage = "English"; private List registeredTexts = new(); public TMP_FontAsset fontEnglish; public TMP_FontAsset fontArabic; public TextMeshProUGUI languageLabel; public TMP_FontAsset GetCurrentFont() { return currentLanguage == "Arabic" ? fontArabic : fontEnglish; } void Awake() { if (Instance == null) Instance = this; else Destroy(gameObject); } public void ToggleLanguage() { currentLanguage = currentLanguage == "English" ? "Arabic" : "English"; PlayerPrefs.SetString("AppLang", currentLanguage); UpdateLanguageLabel(); // <--- NEW UpdateAllTexts(); } void Start() { currentLanguage = PlayerPrefs.GetString("AppLang", "English"); UpdateLanguageLabel(); // <--- NEW UpdateAllTexts(); } private void UpdateLanguageLabel() { if (languageLabel != null) { languageLabel.text = currentLanguage == "English" ? "English" : "Arabic"; //languageLabel.alignment = currentLanguage == "Arabic" ? TextAlignmentOptions.Right : TextAlignmentOptions.Left; //languageLabel.font = GetCurrentFont(); } } public void Register(LocalizedTextComponent component) { if (!registeredTexts.Contains(component)) registeredTexts.Add(component); } public void Unregister(LocalizedTextComponent component) { registeredTexts.Remove(component); } public string GetLocalizedText(string key) { return languageDB.GetText(key, currentLanguage); } public void UpdateAllTexts() { foreach (var item in registeredTexts) { item.UpdateText(); } } }