私は最近、私たちのために多言語サイトを扱うために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
...と_config.php以内にそれを設定したら、 '翻訳可能:: set_default_locale()'翻訳可能:: set_current_locale() ''ながら設定するものであり、_default_ロケールを設定するためのものです現在のロケールでSQLクエリをフィルタリングするために使用される_current_ロケール。 'Translatable :: set_allowed_locales()'を使って、そのサイトに許可されたロケールの配列を追加することもできます。 – wmk