我会重新解释我的情况,因为我认为我最初的故事不够明确。 我在Visual Studio中编写一个网页,它在C#中,但我的实际问题是关于HTML部分。
我已经成功实施了本地化。唯一的问题是我只能通过硬编码来改变语言(例如我可以硬编码语言=“EN”,我的网站将是英文)
现在,当然我不想硬编码,我希望人们选择语言。所以我需要一个按钮,可以使用另一种语言重新加载同一页面。
重新加载后我只需要一件事,那就是字符串“en”或“nl”(取决于所选语言)。所以我的按钮将我发送到index.aspx,但我的新页面不知道我刚刚按下的按钮的值。
如何传递变量?
答案 0 :(得分:1)
你可以通过几种不同的方式做到这一点。您可以将整个语言站点放在子目录中,这样就像:
www.example.com/english/index.php
或者另一种方式是像你说的那样使用get,并且每个页面只存储英语和荷兰语,并且只在url中显示语言(默认可以是荷兰语)。所以这样调用你的页面:(假设你使用php)
英语:
www.example.com/index.php?lan=english
对于荷兰语:(没有定义语言,荷兰语是默认语言)
www.example.com/index.php
在您的页面中(您希望为每个能够用英语和荷兰语阅读的页面执行此操作:
<?php
$lan = 'dutch';
if(isset($_GET['lan']))
$lan = $_GET['lan'];
if($lan == 'english')
{
... Your page in english ...
}
else
{
... Default Language ...
}
?>
答案 1 :(得分:0)
好,
他们关于这个问题的方法是使用a来列出你想要包含的所有语言:
<form method="get" action="Index.aspx">
<label for="language">Select you language here</label>
<select id="language">
<option value="english"English</option>
<option value="french">French</option>
.
.
.
</select>
<input type="submit" value="submit">
</form>
然后在您的aspx文件中进行一些处理
- 编辑 -
如果您在表单中使用method =“get”,则所选变量将以这种方式附加到网址:
index.aspx?language=english /* for example */
在您的aspx页面中,您可以运行一些javascript:
<script type='text/javascript'>
//<![CDATA[
// Parse Query String
var queryString = new Object;
var qstr=window.location.search.substring(1);
var params=qstr.split('&');
for (var i=0; i<params.length; i++) {
var pair=params[i].split('=');
queryString[pair[0]]=pair[1];
}
//]]>
</script>
<script type="text/javascript">
var language = queryString['language'];
if (language== "english") {
/* Do some processing */
}
else { do domething else }
</script>
如果您将javascript放在头部,它将在页面加载时运行。在处理部分中访问您的语言文件。