Je construis une application simple dans ASP.NET MVC. Quelqu'un peut-il m'aider à le faire en tant que site multilingue, en stockant la langue en session et en travaillant avec des sessions, lien, aide ou tutoriel, pour changer la langue du côté serveur, je poste des nouvelles dans ce cms, donc quand j'appuie sur englisH, il devrait me montrer le texte en anglais, espagnol et ainsi de suite ..Asp.net Application Web multilingue
Répondre
(ceci est fait en vb mais si C# est désiré, les convertisseurs de code sont disponibles et mais le principe est le même) cela pourrait être fait avec un fichier XML avec une structure comme celle-ci.
<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>
et tout ce dont vous avez besoin est de faire est dans votre arrière changer votre code html en fonction de ce que la langue sélectionnée ... exemple de 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>
exemple de back-end:
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
pour obtenir la bonne étiquette content
vous aurez besoin de faire une boucle qui recherche l'attribut lang
correct
une fois trouvée, enregistrez la variable dans une variable (ex. Dim ActiveLang as xmlElement = root.ChildNodes.ItemOf(index of loop)
)
alors vous pouvez obtenir le texte des balises souhaitées comme si .. activeLang.GetElementsByTagName("title")(0).InnerText
et faire des lignes de code comme ceci:
lblTitle.text = activeLang.GetElementsByTagName("title")(0).InnerText
utiliser Code du projet https://www.codeproject.com/Articles/526827/MVC-Basic-Site-Step-Multilingual-Site-Squelette pour avoir une compréhension de base de multilingue et après que vous pouvez explorer les fonctionnalités avancées en fonction de vos besoins –
Je dois travailler avec des sessions et ensuite communiquer avec le contrôleur. – ttgg