diff --git a/Assets/Scripts/Localization/LocalizationManager.cs b/Assets/Scripts/Localization/LocalizationManager.cs index 6e41ed1..3fb13bb 100644 --- a/Assets/Scripts/Localization/LocalizationManager.cs +++ b/Assets/Scripts/Localization/LocalizationManager.cs @@ -704,6 +704,16 @@ public class LocalizationManager : MonoBehaviour string[] values; if (table.TryGetValue(source, out values) && values != null && language < values.Length && values[language] != null) return values[language]; + + // Fuzzy: try normalized lookup + string normalized = System.Text.RegularExpressions.Regex.Replace(source, @"\s+", " ").Trim(); + foreach (KeyValuePair pair in table) + { + string nk = System.Text.RegularExpressions.Regex.Replace(pair.Key, @"\s+", " ").Trim(); + if (nk == normalized && pair.Value != null && language < pair.Value.Length && pair.Value[language] != null) + return pair.Value[language]; + } + return source; } @@ -711,6 +721,7 @@ public class LocalizationManager : MonoBehaviour { if (string.IsNullOrEmpty(value) || table.ContainsKey(value)) return value; + // Exact match foreach (KeyValuePair pair in table) { if (pair.Value == null || pair.Value.Length <= 1) continue; @@ -721,6 +732,21 @@ public class LocalizationManager : MonoBehaviour } } + // Fuzzy match: normalize whitespace (newlines, tabs, multiple spaces → single space) + string normalizedValue = System.Text.RegularExpressions.Regex.Replace(value, @"\s+", " ").Trim(); + foreach (KeyValuePair pair in table) + { + if (pair.Value == null || pair.Value.Length <= 1) continue; + string normalizedKey = System.Text.RegularExpressions.Regex.Replace(pair.Key, @"\s+", " ").Trim(); + if (normalizedKey == normalizedValue) return pair.Key; + for (int i = 1; i < pair.Value.Length; i++) + { + if (pair.Value[i] == null) continue; + string normalizedVal = System.Text.RegularExpressions.Regex.Replace(pair.Value[i], @"\s+", " ").Trim(); + if (normalizedVal == normalizedValue) return pair.Key; + } + } + return value; }