使用带有 ViewBag 变量的本地化资源

Posted

技术标签:

【中文标题】使用带有 ViewBag 变量的本地化资源【英文标题】:Using localize resource with ViewBag variable 【发布时间】:2021-12-16 23:17:22 【问题描述】:

我的页面中有以下代码:

 @ foreach (var cat in ViewBag.Categories)
    
        <div class="swiper-slide">@cat.CateName</div>

    
  

cat 变量包含两个属性CateNameCateNameLocalized

当我在我的项目中使用本地化时,如何根据当前文化获得正确的属性。

我尝试将这些变量放入我的资源文件(CateName、.CateName、cat.CateName)中。

但没有任何效果!

可能出了什么问题?任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您需要DisplayNameAttribute。您可以保留一个属性而不是两个属性,并使用DisplayName 属性对其进行装饰。您可以提供资源键和资源类型作为参数。例如:

[Display(Name = ResourceKeys.YourEmail, ResourceType = typeof(Resources.ViewModels_HomeViewModel))]
public string CateName  get; set; 

它将根据当前的文化显示适当的文本。

除此之外,如果你真的想使用两个不同的属性,那么你可以从Thread.CurrentThread.CurrentCulture.Name 获取当前的文化值,并添加if 子句然后渲染相应的属性。例如:

if(Thread.CurrentThread.CurrentCulture.Name == "en-Us")

 @cat.CateName

else

@cat.CateNameLocalized

以上代码仅供参考

【讨论】:

以上是关于使用带有 ViewBag 变量的本地化资源的主要内容,如果未能解决你的问题,请参考以下文章

document.getElementById 带有循环和本地与全局变量

如何在pom中用$变量获得本地repository的路径

本地化资源可以在运行时下载吗?

带有本地 XML 的 RestKit

如何正确使用带有本地标识符的获取资产?

在 uiwebview 中使用本地 html 从相对路径加载资源