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