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