存在一堆网页,例如维基百科,其在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);
}
使用上面的代码,我只得到英文页面。我想用德语,法语和意大利语加载它。我怎么能这样做?
答案 0 :(得分:0)
该页面没有提供直接使用URL请求其他语言环境的方法。也许他们正在使用区域设置检测来响应正确的页面,因此您需要尝试在请求中设置您的请求区域设置。
因此,使用URLConnection
,您可以设置HTTP标头,您需要的是Accept-Language
。你需要将它设置为适当的('en','de','it')。
例如:
myURLConnection.setRequestProperty("Accept-Language", "de");
一些额外的信息:这种方法应该正确。正如我设定的那样德语作为我的首选语言,启动一个新的隐身窗口,我得到德语页面。因此,设置首选语言是可行的方法。
答案 1 :(得分:0)
每当用户选择其他语言时,网站可能会设置Cookie。您必须为您的请求提供某种cookie存储并事先发送语言设置请求(使用Chromes Network视图查看您在浏览器中选择其他语言时会发生什么)