2017-02-21 119 views
1

get请求文化我尝试创建IStringLocalizer在asp.net 1.1核心的implemantation使用每种语言的单一资源文件为我的整个项目(而不是一个每页每种语言...)。而且我无法找到如何在这里获得请求语言以回报具有良好文化的价值观。如何从IStringLocalizer实施

我可能失去了实现它的方式,但文档在主题上很差。有人能告诉我如何获得良好的文化(用户的一个EQ要求用户语言)请在这里:

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,在配置方法我设置本地化之前使用AddMvc选项...)。如果它可以帮助某人,在其他情况下,我会删除这篇文章。