Asp.net多语言Web应用程序

时间:2017-08-08 11:05:08

标签: asp.net model-view-controller multilingual

我正在ASP.NET MVC中构建一个简单的APP。任何人都可以提供任何帮助如何作为多语言网站,在会话中存储语言和使用会话,链接,帮助或教程,更改服务器端的语言,我在该cms发布新闻,所以当我按englisH,它应该显示英文,西班牙文等文字。

1 个答案:

答案 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