我阅读了各种关于设计网站的 Composite 讨论,这些讨论不仅适用于多语言场景,而且还支持为特定社区本地化词汇和语法;例如,技术社区与普通公众社区。
我发现这些讨论很有说服力,但是他们没有解释如何在 C1 的上下文中实现这些场景以添加不同的“方言”。
我猜测这些方言应该手动添加到以下数据源文件中,并像一种语言一样对待:“Composite.Cultures.en-us”。
请解释是否有处理上述情况的最佳实践,以及是否有一种较少手动的方法来实现它。
我阅读了各种关于设计网站的 Composite 讨论,这些讨论不仅适用于多语言场景,而且还支持为特定社区本地化词汇和语法;例如,技术社区与普通公众社区。
我发现这些讨论很有说服力,但是他们没有解释如何在 C1 的上下文中实现这些场景以添加不同的“方言”。
我猜测这些方言应该手动添加到以下数据源文件中,并像一种语言一样对待:“Composite.Cultures.en-us”。
请解释是否有处理上述情况的最佳实践,以及是否有一种较少手动的方法来实现它。
我不确定我是否理解这个问题。是不是因为你想在你的前端网站上有一个特定的字符串来根据谁登录说不同的东西,而不是网站显示的语言?
~/Composite/localization
C1 中的默认本地化文件位于Some.Namespace.language.xml
. 这意味着,如果您的网站是美式英语,但您想为 Techs 或 Others 显示某些字符串的不同版本,您可以创建以下 xml 文件
当您需要显示字符串时,您将具有以下逻辑
var ns = "My.Component";
var mode = is_tech ? "Technical" : "General";
return StringResourceSystemFacade.GetString(ns +"."+ mode, "title");
如果您想在相同的页面结构中为不同的“方言”显示不同的内容,那么可以 - 将它们视为语言是有意义的。语言列表由系统从 Windows 注册表中获取,因此如果您想将方言添加为语言,您可以使用一些代码将其注册(http://msdn.microsoft.com/en-us/library/ ms172469.aspx)。不过我不推荐它,因为相关的 ASP.NET 进程必须有权访问 Windows 注册表,并且每次您需要将站点移动到新环境时可能需要做一些额外的工作。
您还可以使用现有的文化代码,您不会将其用作方言切换器 Fe en-US / en-GB / en-AU。
另一种选择是在每个页面上为内容设置单独的占位符,一个用于技术用户,一个用于非技术用户。将根据 url/cookie 显示一个或另一个。在这种方法中,您还必须决定是否要将它们保留在相同的 url 以供爬虫或不同的 URL 下,页面是否应具有相同的评论或分开等。
如果方言站点没有保持相同的页面结构,您也可以决定将它们作为不同的页面树,并在需要时使用某种元数据字段将相关页面链接到另一个页面。