public ILocalizer GetLocalizer(IList <LocalizationPreference> preferences) { var localizer = new Localizer(this); for (int i = 0; i < preferences.Count; i++) { var tagsCopy = new LocalizationPreference[preferences.Count - i]; preferences.CopyTo(tagsCopy, 0, 0, tagsCopy.Length); var sources = this.resources.Where(x => tagsCopy.AllMatch(x)).ToArray(); localizer.AddSources(sources); } { var sources = this.resources.Where(x => x.Tags != null || x.Tags.Contains("Default")).ToArray(); localizer.AddSources(sources); } { var sources = this.resources.Where(x => x.Tags == null || x.Tags.Length == 0).ToArray(); localizer.AddSources(sources); } return(localizer); }
/// <summary> /// Get the translation of a specified text on a certain language /// </summary> /// <param name="content">Text to translate</param> /// <param name="preference">How should the text be translated?</param> /// <returns></returns> public string Translate(LocalizationKeyword content, LocalizationPreference preference) { if (!alreadyInitialized) { InitializeSystems(); } switch (preference) { case LocalizationPreference.DEFAULT: if (preferSystemLanguage) { goto case LocalizationPreference.SYSTEM; } else { return(CustomTranslate(content, defaultLanguage)); } /*if (Languages.TryGetValue(defaultLanguage, out startingLanguageData)) * return startingLanguageData.CustomTranslate(request); * break;*/ case LocalizationPreference.SYSTEM: return(CustomTranslate(content, systemLanguage)); /*if (Languages.TryGetValue(systemLanguage, out startingLanguageData)) * return startingLanguageData.CustomTranslate(request); * break;*/ case LocalizationPreference.CUSTOM: Debug.LogWarning("Translations using CUSTOM as a preference should use CustomTranslate instead. The default language will be used instead."); goto case LocalizationPreference.DEFAULT; default: Debug.LogWarning("Preference type \"" + preference.ToString() + "\" could not be found. The default language will be used instead."); goto case LocalizationPreference.DEFAULT; } }