Allow invariant languages to be resolved by specific cultures
This commit is contained in:
committed by
Sebastiaan Janssen
parent
0ac196bec6
commit
494bdfef1e
@@ -250,6 +250,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
|
||||
lock (_codeIdMap)
|
||||
{
|
||||
if (_codeIdMap.TryGetValue(isoCode, out var id)) return id;
|
||||
if (isoCode.Contains('-') && _codeIdMap.TryGetValue(isoCode.Split('-').First(), out var invariantId)) return invariantId;
|
||||
}
|
||||
if (throwOnNotFound)
|
||||
throw new ArgumentException($"Code {isoCode} does not correspond to an existing language.", nameof(isoCode));
|
||||
|
||||
@@ -79,7 +79,39 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Perform_Get_By_Invariant_Code_On_LanguageRepository()
|
||||
{
|
||||
var provider = TestObjects.GetScopeProvider(Logger);
|
||||
using (var scope = provider.CreateScope())
|
||||
{
|
||||
var repository = CreateRepository(provider);
|
||||
|
||||
var es = new CultureInfo("es");
|
||||
var esSpecific = new CultureInfo("es-ES");
|
||||
|
||||
var language = (ILanguage)new Language(es.Name)
|
||||
{
|
||||
CultureName = es.DisplayName,
|
||||
FallbackLanguageId = 1
|
||||
};
|
||||
repository.Save(language);
|
||||
|
||||
language = repository.GetByIsoCode(es.Name);
|
||||
var languageSpecific = repository.GetByIsoCode(esSpecific.Name);
|
||||
|
||||
// Assert
|
||||
Assert.That(language, Is.Not.Null);
|
||||
Assert.That(language.HasIdentity, Is.True);
|
||||
Assert.That(language.IsoCode, Is.EqualTo(es.Name));
|
||||
|
||||
Assert.That(languageSpecific, Is.Not.Null);
|
||||
Assert.That(languageSpecific.HasIdentity, Is.True);
|
||||
Assert.That(languageSpecific.Id, Is.EqualTo(language.Id));
|
||||
Assert.That(language.IsoCode, Is.EqualTo(language.IsoCode));
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_When_Id_Doesnt_Exist_Returns_Null()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user