-3

我会重新解释我的情况,因为我认为我最初的故事不够清楚。我在 Visual Studio 中编写网页,它使用 C#,但我的实际问题是关于 HTML 部分。

我已经成功实现了本地化。唯一的问题是我只能通过硬编码来改变语言(例如我可以硬编码语言=“EN”,我的网站将是英文的)

现在,我当然不想硬编码,我希望人们选择那里的语言。所以我需要一个按钮,可以用另一种语言重新加载相同的页面。

重新加载后我只需要一件事,那就是字符串“en”或“nl”(取决于选择的语言)。所以我的按钮将我发送到 index.aspx,但我的新页面不知道我刚刚按下的按钮的值。

我如何传递变量?

4

2 回答 2

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 ...
}
?>
于 2012-06-11T13:20:04.077 回答
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" ,则选择的变量将以这样的方式附加到 url:

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 放在头部,它将在页面加载时运行。在处理部分访问您的语言文件。

于 2012-06-11T13:49:06.893 回答