Making the translation keys cas insensitive, and making generic keys explicit

--HG--
branch : dev
This commit is contained in:
Sebastien Ros
2010-10-11 14:35:57 -07:00
parent d0306db0c3
commit 8a6f988ca0

View File

@@ -47,12 +47,13 @@ namespace Orchard.Localization.Services {
foreach (var culture in cultures) { foreach (var culture in cultures) {
if (String.Equals(cultureName, culture.CultureName, StringComparison.OrdinalIgnoreCase)) { if (String.Equals(cultureName, culture.CultureName, StringComparison.OrdinalIgnoreCase)) {
string scopedKey = scope + "|" + text; string scopedKey = (scope + "|" + text).ToLowerInvariant();
string genericKey = "|" + text;
if (culture.Translations.ContainsKey(scopedKey)) { if (culture.Translations.ContainsKey(scopedKey)) {
return culture.Translations[scopedKey]; return culture.Translations[scopedKey];
} }
if (culture.Translations.ContainsKey(genericKey)) {
string genericKey = ("|" + text).ToLowerInvariant();
if ( culture.Translations.ContainsKey(genericKey) ) {
return culture.Translations[genericKey]; return culture.Translations[genericKey];
} }
@@ -64,8 +65,8 @@ namespace Orchard.Localization.Services {
} }
private static string GetParentTranslation(string scope, string text, string cultureName, IEnumerable<CultureDictionary> cultures) { private static string GetParentTranslation(string scope, string text, string cultureName, IEnumerable<CultureDictionary> cultures) {
string scopedKey = scope + "|" + text; string scopedKey = (scope + "|" + text).ToLowerInvariant();
string genericKey = "|" + text; string genericKey = ("|" + text).ToLowerInvariant();
try { try {
CultureInfo cultureInfo = CultureInfo.GetCultureInfo(cultureName); CultureInfo cultureInfo = CultureInfo.GetCultureInfo(cultureName);
CultureInfo parentCultureInfo = cultureInfo.Parent; CultureInfo parentCultureInfo = cultureInfo.Parent;
@@ -183,8 +184,7 @@ namespace Orchard.Localization.Services {
if (poLine.StartsWith("msgstr")) { if (poLine.StartsWith("msgstr")) {
string translation = ParseTranslation(poLine); string translation = ParseTranslation(poLine);
if (!String.IsNullOrEmpty(id)) { if (!String.IsNullOrEmpty(id)) {
if (!String.IsNullOrEmpty(scope)) { string scopedKey = (scope + "|" + id).ToLowerInvariant();
string scopedKey = scope + "|" + id;
if (!translations.ContainsKey(scopedKey)) { if (!translations.ContainsKey(scopedKey)) {
translations.Add(scopedKey, translation); translations.Add(scopedKey, translation);
} }
@@ -194,16 +194,6 @@ namespace Orchard.Localization.Services {
} }
} }
} }
string genericKey = "|" + id;
if (!translations.ContainsKey(genericKey)) {
translations.Add(genericKey, translation);
}
else {
if (merge) {
translations[genericKey] = translation;
}
}
}
id = scope = String.Empty; id = scope = String.Empty;
} }