我正在ASP.NET MVC中构建一个简单的APP。任何人都可以提供任何帮助如何作为多语言网站,在会话中存储语言和使用会话,链接,帮助或教程,更改服务器端的语言,我在该cms发布新闻,所以当我按englisH,它应该显示英文,西班牙文等文字。
答案 0 :(得分:0)
(这是在vb中完成的,但是如果需要c#,可以使用代码转换器,但原理是相同的) 这可以使用具有这种结构的xml文件来完成。
<globalization>
<!-- the lang attribute is a made up attribute. it helps with search
further on-->
<content lang="fr">
<title>je suis un titre</title>
<text>et ceci est un paragraphe</title>
</content>
<content lang="en">
<title>this is a title</title>
<text>and this is a paragraph</title>
</content>
</globalization>
你要做的就是在你的后端根据选择的语言改变你的html ... html的例子:
<body>
<asp:button runat="server" id="btnLangFr" text="Fr"/>
<asp:button runat="server" id="btnLangEn" text="En"/>
<asp:label runat="server" id="lblTitle" />
<asp:label runat="server" id="lblParagraph" />
<body>
后端示例:
Protected Sub btnLangEn(sender As Object, e As EventArgs) handles btnLangEn.click
Dim xmlDoc As XmlDocument = New XmlDocument() //defines xmldoc
xmlDoc.Load(Server.MapPath("globalization.xml")) //gets .xml file
Dim root As XmlElement = xmlDoc.DocumentElement //defines root
'next line sets a list of all the <content> tags
Dim elemList As XmlNodeList = root.GetElementsByTagName("lang")
'insert code to change the <asp:label> tags to be equal to the text
'between the corresponding xml tags
End Sub
要获得正确的content
标记,您需要创建一个查找正确lang
属性的循环
找到后,将标记保存在变量(例如Dim ActiveLang as xmlElement = root.ChildNodes.ItemOf(index of loop)
)
然后您就可以获得所需标签的文字。activeLang.GetElementsByTagName("title")(0).InnerText
并编写如下代码:
lblTitle.text = activeLang.GetElementsByTagName("title")(0).InnerText