/// <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
    }