2015-10-06 80 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