/// <summary> /// Gets the localized string from an already loaded table, taking into account whether we are in edit mode, play mode, or a build. /// </summary> /// <param name="localizedStringReference">The <see cref="LocalizedString"/>.</param> /// <returns>The localized string.</returns> public static string GetLocalizedStringImmediateSafe(this LocalizedString localizedStringReference) { // If we are in the editor in edit mode, we need to find a valid locale and get the localized string from it: #if UNITY_EDITOR if (EditorApplication.isPlaying) { return(string.Empty); } string text = null; if (!localizedStringReference.IsEmpty) { var tableCollection = LocalizationEditorSettings.GetStringTableCollection(localizedStringReference.TableReference); Locale locale = Editor_GetValidLocaleInEditMode(tableCollection); if (locale != null) { StringTable table = (StringTable)tableCollection.GetTable(locale.Identifier); if (table != null) { if (table.GetEntryFromReference(localizedStringReference.TableEntryReference) != null) { text = table.GetEntryFromReference(localizedStringReference.TableEntryReference).LocalizedValue; } } } } return(text); #else // At runtime (build or editor in play mode), we just get the localized string normally: return(localizedStringReference.GetLocalizedString()); #endif }