Example #1
0
        /// <summary>
        /// Returns true if a locale key/value pair was found for the preferred system language and key value,
        /// otherwise false. If the preferred system language isn't supported, the fallback language will be
        /// used instead.
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static bool HasLocaleKey(string key)
        {
            var systemLanguage = GetPreferredSystemLanguage();

            if (!IsSupportedSystemLanguage(systemLanguage))
            {
                systemLanguage = LocaleTools.GetFallbackSystemLanguage();
            }

            return(HasLocaleKey(systemLanguage, key));
        }
Example #2
0
        /// <summary>
        /// Returns true if a locale value was found for <paramref name="key"/> for <paramref name="systemLanguage"/>
        /// language or fallback language, otherwise false. If true, <paramref name="value"/> will be populated
        /// with the found value.
        /// </summary>
        /// <param name="systemLanguage"></param>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static bool TryGetLocaleValue(SystemLanguage systemLanguage, string key, out string value)
        {
            value = string.Empty;

            LocaleData localeData;

            if (!LanguageToLocaleLookup.TryGetValue(systemLanguage, out localeData))
            {
                var fallbackLanguage = LocaleTools.GetFallbackSystemLanguage();
                localeData = LanguageToLocaleLookup[fallbackLanguage];
            }

            return(localeData.TryGetLocaleValue(key, out value));
        }
Example #3
0
        /// <summary>
        /// Returns the preferred <see cref="SystemLanguage"/> if found, or the OS-set value if a preferred
        /// value isn't set and it's supported, or a fallback language if not supported.
        /// </summary>
        /// <returns></returns>
        public static SystemLanguage GetPreferredSystemLanguage()
        {
            // If the user/developer has set a preference for a different Bose AR system language, use that
            // instead. Otherwise return the OS-set system language.
            if (PlayerPrefs.HasKey(WearableConstants.PREF_PREFERRED_SYSTEM_LANGUAGE))
            {
                return((SystemLanguage)PlayerPrefs.GetInt(WearableConstants.PREF_PREFERRED_SYSTEM_LANGUAGE));
            }

            var systemLanguage = Application.systemLanguage;

            if (!IsSupportedSystemLanguage(systemLanguage))
            {
                systemLanguage = LocaleTools.GetFallbackSystemLanguage();
            }

            return(systemLanguage);
        }
Example #4
0
        internal static void SetupLocaleCache()
        {
            if (_isSetup)
            {
                return;
            }

            if (_languageToLocaleLookup == null)
            {
                _languageToLocaleLookup = new Dictionary <SystemLanguage, LocaleData>();
            }
            else
            {
                _languageToLocaleLookup.Clear();
            }

            // Get all LocaleData instances, set them up, and add them to a lookup based on SystemLanguage.
            var localeData = LocaleTools.GetAllLocaleData();

            for (var i = 0; i < localeData.Length; i++)
            {
                // Force setup each instance as subsequent play mode test runs and play mode runs in the editor
                // will not cleanup local non-serialized fields in ScriptableObjects
                var ld = localeData[i];
                ld.Setup(forceSetup: true);

                for (var j = 0; j < ld.SupportedLanguages.Length; j++)
                {
                    if (_languageToLocaleLookup.ContainsKey(ld.SupportedLanguages[j]))
                    {
                        Debug.LogWarningFormat(WearableConstants.LOCALE_LANGUAGE_ALREADY_SUPPORTED_FORMAT,
                                               ld.name,
                                               ld.SupportedLanguages[j],
                                               _languageToLocaleLookup[ld.SupportedLanguages[j]].name);
                        continue;
                    }

                    _languageToLocaleLookup.Add(ld.SupportedLanguages[j], ld);
                }
            }

            _isSetup = true;
        }