Unity 實現本地化多語言化設置


背景

關於游戲開發多語言話工具,游戲開發完成,想要多渠道分發,語言多樣化,比如:英語,法語,日本,等等,實現多種語言隨意切換,滿足各種玩家的閱讀能力。此時,便是用到這個工具的時候。
原理:多語言顯示並不是在線翻譯,而是將不同語種進行事先的翻譯,放入到表格中,當游戲先選中某種語言,則會加載翻譯好的語言文本,然后在查找到對應的文本顯示出來,我們就看到了當前語言下的文本內容。
這里對TextMesh,Text (UI),TextMeshPro TextMeshProUGUI,Renderer,Image,RawImage以及音頻進行了支持,操作方便簡單,有對應的上手Demo,可直接上手接入。
代碼截圖

/// <summary>
		/// Load localized strings to the memory.
		/// </summary>
		public static void Load()
		{
			var sheet = SheetParser.LoadFromPath(PathProvider.SheetPath, SheetParser.Delimiter.Comma);
			LocalizedStrings.Clear();
			for (var i = 1; i < sheet.Count; i++)
			{
				var id = sheet[i][0];
				if (string.IsNullOrEmpty(id)) continue;
				if (LocalizedStrings.ContainsKey(id)) throw new Exception($"<b>[Localizer]</b> Text ID \"<b>{id}</b>\" is duplicated. Please check your localization sheet.");

				var strings = sheet[i].ToList();
				strings.RemoveAt(0);
				strings = strings.Select(s => s.Replace("\\n", "\n"))
				                 .Select(s => s.Replace("\r", ""))
				                 .ToList();
				LocalizedStrings.Add(id, strings);
			}

			LanguageList = sheet[0].Select(s => s.Replace("\r", "")).ToList();
			LanguageList.RemoveAt(0);

			Settings.LoadLanguageSettings();
			ChangeLanguage(CurrentLanguageName ?? "");
		}

		/// <summary>
		/// Change current language.
		/// </summary>
		/// <param name="languageName">ex. "Japanese" "English"</param>
		public static void ChangeLanguage(string languageName)
		{
			var languageIndex = 0;
			if (languageName != "")
			{
				languageIndex = GetLanguageIndex(languageName);
			}

			CurrentLanguageName = LanguageList[languageIndex];
			Settings.SaveLanguageSettings();
		}

		/// <summary>
		/// Activate Previous Language.
		/// </summary>
		/// <returns>Activated language name</returns>
		public static string ActivatePreviousLanguage()
		{
			var prevIndex = (int)Mathf.Repeat(CurrentLanguageIndex - 1, LanguageList.Count);
			ChangeLanguage(LanguageList[prevIndex]);
			InjectAll();
			return LanguageList[prevIndex];
		}

簡單的幾個加載方法,語言切換方法。
涉及到的腳本,總體還不算多,功能相對全面,值得學習。
Demo_006 需要的可自取:
鏈接:https://pan.baidu.com/s/1CP4FLttldNHW-gW2zUrlDA
提取碼:ncv6


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM