2015-10-06 89 views
1

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

当我与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); 
} 

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

+0

默认语言是由您的浏览器而不是来自这个网站的决定。 – Tom

回答

0

该页面没有提供一种方式,可以直接向URL请求不同的语言环境。也许他们正在使用区域检测来响应正确的页面,所以您需要尝试在请求中设置您的请求区域设置。

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

例如:

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

一些额外的信息:这种做法应该是正确的轨道上。当我设置例如德语作为我的首选语言,开始一个新的隐身窗口,我用德语获取页面。因此设置首选语言是最好的选择。

+0

赫赫,谢谢,这正是我的想法,但直到知道我没有成功这样做;) – Flu

+0

谢谢你的例子meskobalazs,但不幸的是它不工作。该网站仍然是英文:( – Flu

+0

我的意思是应该使用“接受语言”标题,而不是内容语言。一个普通的浏览器发送类似于:\t Accept-Language:de,en-US; q = 0.7, en; q = 0.3 – radkovo

0

无论用户何时选择其他语言,该网站都可能设置cookie。您将不得不为您的请求提供某种cookie存储并预先发送语言设置请求(使用Chromes网络视图查看当您在浏览器中选择另一种语言时发生了什么)

+0

我已经试过了。他们不设置cookie。语言环境完全由JSF管理。 – meskobalazs