2016-03-29 87 views
1

我剛剛安裝了可翻譯的silverstripe來爲我們處理多語言網站。我認爲我已經正確地設置了一切,但不能確定。也許我錯過了一些東西,或許我誤解了這個模塊。SilverStripe可翻譯模塊

在我的網站_config.php我有以下

i18n::set_locale('en_US'); 
i18n::set_locale('fr_FR'); 
Translatable::set_default_locale('en_US'); 

SiteTree::add_extension('Translatable'); 
SiteConfig::add_extension('Translatable'); 

我已經通和創建了主頁的翻譯。我可以導航到翻譯的頁面沒有問題。我還可以驗證這兩個主頁和翻譯意識到他們在Page.ss

<% if Translations %> 
    <% loop Translations %> 
     $Locale.RFC1766 
     $Link 
    <% end_loop %> 
<% end_if %> 

我還添加了lang="$ContentLocale" xml:lang="$ContentLocale" xmlns= "http://www.w3.org/1999/xhtml">

用下面的代碼鏈接爲主頁上的法國verison預期美國版本顯示,反之亦然。 但是,當我使用法語瀏覽器從法語電腦訪問網站時,它會直接進入英文頁面。我原以爲這將由i18n部分銀條自動處理或通過翻譯自動處理。我需要自己處理這個問題,還是我錯過了一些東西?基於巴里的回答

答案我結束了與下面的代碼行中我_config.php

$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; //Get the languag from the client 
$lang = substr($lang,0,strpos($lang,','));//Strip out the unnecesary stuff after the comma 
$lang = str_replace("-","_",$lang);//Replace the hyphen with an underscore. 
Translatable::set_default_locale($lang);//Set locale 
+1

設置_config.php內'可翻譯:: set_default_locale()'是用於設置_default_區域,而可轉換':: set_current_locale()'是用於設置_current_ locale用於按當前語言環境過濾SQL查詢。您還可以使用'Translatable :: set_allowed_locales()'在該網站上添加允許的語言環境數組。 – wmk

回答

1

隨着silverstripe可翻譯有一些回答你的問題的兩個關鍵項目。

  1. 系統中的每個頁面都有一個唯一的URL
  2. 您可以設置默認的語言環境

嚴格地說兩個一和二,你可以通過區域設置爲_GET變量 - 但ISN你的訪客會做什麼。

所以,簡單的答案是沒有可翻譯本身並不能確定地區,以顯示 - 但你可以通過改變基於任何方法的默認語言環境這麼做......

一旦你這只是......

Translatable::set_default_locale(<locale>); 
+0

這讓我過度了。謝謝您的幫助。我將用我的確切代碼 –

+0

更新我的問題「您設置了默認語言環境」......好吧,您(或擴展名)在每個頁面請求上設置了當前語言環境,不是嗎? – wmk