2016-03-29 11 views
1

私は最近、私たちのために多言語サイトを扱うためにsilverstripe Translatableをインストールしました。私はすべてを正しく設定したとは思いますが、確信が持てません。たぶん私は何かが不足しているか、あるいは私はモジュールを誤解しているかもしれません。私のサイトでSilverStripe翻訳可能なモジュール

私はスルーなくなって、私たちのホーム・ページの翻訳を作成している

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

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

を以下している_config.php。翻訳されたページに移動できます。問題はありません。私はまた、ホーム・ページと翻訳の両方は、それらがPage.ss

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

に次のコードとリンクされている実感ホームページのフランス語verisonに予想したように、私もlang="$ContentLocale" xml:lang="$ContentLocale" xmlns= "http://www.w3.org/1999/xhtml">

を追加したことを確認することができます米国版が表示され、逆も同様です。 しかし、私はフランス語のブラウザでフランス語のコンピュータからサイトにアクセスすると、英語のページにまっすぐに行きます。私はこれがシルバーストライプの一部または翻訳可能な部分によって自動的に処理されると思っていたでしょう。これを自分で処理する必要があるのですか、何か不足していますか?バリーの回答 に基づいて

回答は私があなたの質問に答える2つのキー項目があるsilverstripe翻訳可能と私の_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()'翻訳可能:: set_current_locale() ''ながら設定するものであり、_default_ロケールを設定するためのものです現在のロケールでSQLクエリをフィルタリングするために使用される_current_ロケール。 'Translatable :: set_allowed_locales()'を使って、そのサイトに許可されたロケールの配列を追加することもできます。 – wmk

答えて

1

に次のコード行になってしまいました。それISN -

  1. システム内の各ページには、厳密に両方1と2のために言えば、あなたは_GET変数などでロケールを渡すことができ

  • あなたはデフォルトのロケールに設定された固有のURLを持っていますあなたの訪問者が何をするのではありません。

    だから、単純な答えは、単独では翻訳可能ではありません表示するには、ロケールを決定していないだろう -

    このちょうど

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

    これは私にラインを超えました。助けてくれてありがとう。私は正確なコード –

    +0

    で質問を更新します "あなたはデフォルトのロケールを設定しました" ...まあ、あなた(または拡張機能)は各ページリクエストで現在のロケールを設定していますか? – wmk

    関連する問題