首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Asp.net Mvc、剃刀和本地化

Asp.net Mvc、剃刀和本地化
EN

Stack Overflow用户
提问于 2011-03-19 01:24:16
回答 3查看 10.4K关注 0票数 17

我知道这个问题已经在这些页面上被提了很多次了,但我仍然没有找到我需要找到的“好的解决方案”。让我们开始解释。

在.net和mvc中,本地化有两种方式,甚至可以混合在一起:

  • 资源文件(包含viewengine的本地或global)
  • Localized视图,用于根据区域性调用相应的视图

我将解释我尝试过的解决方案,以及我遇到的每一个问题。

资源文件中的文本,视图中的所有标记

这个解决方案会让我把每个文本放在资源中,把每个标签放在视图中,甚至把像strong或span这样的内联标签也放进去。

优点:

在localization.

  • Easy编码中没有任何结构:从资源返回的所有内容都经过编码。

缺点:

  • 如果我有一个包含一些强项,几个链接等的段落,我必须将它拆分成许多资源键。由于上述原因,如果两种不同语言的强文本位于不同的位置(如"Il can di Marco“和"Marcos's ”),我就无法实现它,因为我的所有标签都在视图中。

资源文件中的文本和内联标记,通过参数

此方法将使资源包含string.Format的一些占位符,这些占位符将在编码后用行内标签填充。

优点:

强分隔干净,文本中只有占位符,所以如果我要用em替换

  • ,我会在视图中将其作为参数传递,并且它在每种语言

中都会发生变化

缺点:

  • 编码有点难,我必须对来自资源的值进行预编码,然后使用string.Format,最后将其作为MvcHtmlString返回,以告知视图引擎在执行displaying.
  • For时不要重新编码它。原因与上面相同,例如,包括ActionLink as参数将会很麻烦。假设我从一个资源中获得了我的actionlink链接的文本。我的方法已经对其进行了编码。但是,ActionLink方法会再次对其进行重新编码。我需要一个不同的方法来获取资源而不对它们进行编码,或者需要新的助手方法来获取MvcHtmlString而不是字符串作为文本参数,但这两者都相当于unpractical.
  • Still构建视图,必须创建所有的资源键,然后填充它们。

本地化视图

优点:

  • 所有的视图都是纯html的。没有要读取的资源。

缺点:

  • 到处复制html。我甚至不需要解释为什么这是完全邪恶的。
  • 必须手动编码所有麻烦的字符,如严重的元音,引号等。

结论

上述技术人员的混合继承了利弊,但仍然是不好的。我面临着找到一个适当的有效解决方案的挑战,而以上所有这些都被认为是“不切实际的”和“耗时的”。

更糟糕的是,我发现没有一个工具可以将aspx或cshtml (甚至html)视图/页面中的“文本”重构为资源。市面上所有的工具都可以将代码文件(.cs或.vb)中的System.String实例重构为仅限资源(例如,resharper,以及其他一些我现在不记得的工具)。

所以我被困住了,我自己找不到合适的东西,在网上也找不到任何东西。有没有可能之前没有其他人被这个问题挑战过并找到了解决方案?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5355646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档