2017-02-21 21 views
1

Я пытаюсь создать реализацию IStringLocalizer в asp.net core 1.1, чтобы использовать один файл ресурсов для каждого языка для всего моего проекта (вместо одного на страницу на язык ...). И я не могу найти, как получить здесь язык запросов, чтобы вернуть ценности с хорошей культурой.Как получить культуру запросов из реализации IStringLocalizer

Возможно, я потерял способ реализовать его, но документация очень бедна по этому вопросу. Кто-то может сказать мне, как получить хорошую культуру (один эк язык запроса пользователя пользователя) здесь, пожалуйста:

public class CustomLocalizer : IStringLocalizer 
{ 
    private readonly CultureInfo _currentCulture; 
    public IEnumerable<LocalizedString> GetAllStrings(bool includeParentCultures) 
    { 
     ResourceManager rm = new ResourceManager(typeof(MyResources)); 
     foreach(DictionaryEntry value in rm.GetResourceSet(_currentCulture, false, true)) 
     { 
      yield return new LocalizedString((string)value.Key, (string)value.Value); 
     } 
    } 

    public CustomLocalizer(CultureInfo culture = null) 
    { 
     _currentCulture = culture ?? CultureInfo.DefaultThreadCurrentUICulture; 
    } 

    public IStringLocalizer WithCulture(CultureInfo culture) 
    { 
     return new CustomLocalizer(culture); 

    } 

    LocalizedString IStringLocalizer.this[string name] 
    { 
     get 
     { 
      ResourceManager rm = new ResourceManager(typeof(MyResources)); 
      return new LocalizedString(name, rm.GetString(name, _currentCulture)); 
     } 
    } 

    LocalizedString IStringLocalizer.this[string name, params object[] arguments] 
    { 
     get 
     { 
      ResourceManager rm = new ResourceManager(typeof(MyResources)); 
      return new LocalizedString(name, rm.GetString(name, _currentCulture)); 
     } 
    } 
} 

ответ

3

Наконец нашел, где был ошибка (в моем startup.cs, в методе Configure я AddMvc перед установкой локализации опции...). Если это может помочь кому-то, в другом случае, я удалю этот пост.