【问题标题】:Homepage without language annotation没有语言注释的主页
【发布时间】:2016-01-03 06:35:27
【问题描述】:

存在大量网页,例如 Wikipedia,它们在 URL 中有语言注释(例如,德语 Wikipedia 方面是 de.wikipedia.org)。因此,以多种语言连接到维基百科是微不足道的,例如只需将“de”更改为“en”。这导致了我的问题。如果主页提供多种语言,但其 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);
}

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

【问题讨论】:

  • 默认语言是您的浏览器要求的,而不是本网站的决定。

标签: java html web


【解决方案1】:

当用户选择另一种语言时,网站可能会设置 cookie。您必须为您的请求提供某种 cookie 存储并事先发送语言设置请求(使用 Chrome 网络视图查看在浏览器中选择另一种语言时发生的情况)

【讨论】:

  • 我真的试过这个。他们不设置cookie。语言环境完全由 JSF 管理。
【解决方案2】:

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

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

例如:

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

一些附加信息:这种方法应该是正确的。就像我设置时一样德语作为我的首选语言,打开一个新的隐身窗口,我得到德语页面。所以设置首选语言是可行的方法。

【讨论】:

  • 呵呵,谢谢,这正是我的想法,但直到知道我没有成功;)
  • 感谢您提供示例 meskobalazs,但不幸的是它不起作用。该网站仍然是英文的:(
  • 我的意思是应该使用“Accept-Language”标题而不是 Content-Language。普通浏览器会发送类似的内容: Accept-Language: de,en-US;q=0.7,en;q=0.3
  • 嗯好的。我现在这样尝试: myURLConnection.setRequestProperty("Content-Language", "Accept-Language: de;q=0.6"); (我在这里找到了值wissing.com/Blog/Sprachausswahl_Accept_Language)但页面仍然是英文的。我的意思是我走对了吗?我真的一点都不懂这些网络东西......
  • 我会尝试 myURLConnection.setRequestProperty("Accept-Language", "de")
猜你喜欢
  • 1970-01-01
  • 2022-10-22
  • 2022-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
相关资源
最近更新 更多