主页没有语言注释

时间:2015-10-06 11:03:10

标签: java html web

存在一堆网页,例如维基百科,其在URL中具有语言注释(例如,德语维基百科方面是de.wikipedia.org)。因此,以多种语言连接到维基百科是微不足道的,例如,只需要通过“en”来改变“de”。这导致了我的问题。如果主页提供多种语言但其网址中没有语言注释,该怎么办?

当我使用Java连接到以下主页(http://www.hermes.admin.ch/)时,它始终以英语显示。我发现,英语是默认语言。但是,他们可以通过单击右上角的语言类型来更改语言。从源代码中,以下代码片段显示了活动语言:

<!-- German -->
<li>
<script type="text/javascript" src="/javax.faces.resource/jsf.js.xhtml?ln=javax.faces"></script>
<a id="lang-select-form_de" href="#" onclick="mojarra.jsfcljs(document.getElementById('lang-select-form'),{'lang-select-form_de':'lang-select-form_de'},'');return false" class="inactive">Deutsch</a>
</li>

<!-- French -->
<li><a id="lang-select-form_fr" href="#" onclick="mojarra.jsfcljs(document.getElementById('lang-select-form'),{'lang-select-form_fr':'lang-select-form_fr'},'');return false" class="inactive">Français</a>
</li>

<!-- Italian -->
<li><a id="lang-select-form_it" href="#" onclick="mojarra.jsfcljs(document.getElementById('lang-select-form'),{'lang-select-form_it':'lang-select-form_it'},'');return false" class="inactive">Italiano</a>
</li>

<!-- English -->
<li class="last"><a id="lang-select-form_en" href="#" onclick="mojarra.jsfcljs(document.getElementById('lang-select-form'),{'lang-select-form_en':'lang-select-form_en'},'');return false" class="active">English</a>
</li>

因此,找出哪些语言是活跃的,很容易。尽管如此,我还是没有发现,如何使用Java将主动语言设置为德语而不点击右上角的链接。

我的Java连接:

String url = "http://www.hermes.admin.ch/onlinepublikation/index.xhtml";    
URL myURL = new URL(url);
CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));
URLConnection myURLConnection = myURL.openConnection();
myURLConnection.connect();

InputStream is = myURLConnection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
line = "";
while ((line = br.readLine()) != null) {
    System.out.println(line);
}

使用上面的代码,我只得到英文页面。我想用德语,法语和意大利语加载它。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

该页面没有提供直接使用URL请求其他语言环境的方法。也许他们正在使用区域设置检测来响应正确的页面,因此您需要尝试在请求中设置您的请求区域设置。

因此,使用URLConnection,您可以设置HTTP标头,您需要的是Accept-Language。你需要将它设置为适当的('en','de','it')。

例如:

myURLConnection.setRequestProperty("Accept-Language", "de");

一些额外的信息:这种方法应该正确。正如我设定的那样德语作为我的首选语言,启动一个新的隐身窗口,我得到德语页面。因此,设置首选语言是可行的方法。

答案 1 :(得分:0)

每当用户选择其他语言时,网站可能会设置Cookie。您必须为您的请求提供某种cookie存储并事先发送语言设置请求(使用Chromes Network视图查看您在浏览器中选择其他语言时会发生什么)