2016-09-10 10 views
1

allowed_actionsをサイトのi18n言語に一致させる方法を知りたい。私が見たすべてのモジュールはそのオプションを提供していません。URLストリートURLで許可されたSilverstripe翻訳_

ケース:私はフォームページ提出モジュールを作成しました。提出されたページURLを私の 'termine'(フランス語、フランス)のような別の言語で 'finished'(英語、EN)に翻訳したいと思います。

URL:// exemple /お問合せ先/ Termineの提案のため

ありがとう:// exemple /お問合せ先/

へのURL完成!

+0

を私はsilverstripeについて何も知らない、AVこれが答えではありません。しかし、私はあなたがこのアプローチで問題に遭うことを約束します。同じコンセプトのために、時には同じコンセプトのために、同じ単語を使用する複数の言語があることがわかります。あなたはそれにどのように対処する予定ですか? –

+1

@MihaiNitaページのURLも翻訳されている場合(これはSilverStripeで実現できます)、これが問題になるかどうかはわかりません。例: 'https://site.tld/ {translate.contact}/{translate.contact_finished}' - >(en_GB) 'https:// site.tld/contact/finished' - >(sv_SE)' https:/site.tld/kontakt/genomford'と入力します。翻訳がうまくいけば、私は混乱が起きるとは思わない。しかし、私はその質問を誤解しているかもしれません。 –

+0

2つの言語が同じURLになる可能性があります。例えば、 "ヘルプ"は... "ヘルプ"としてオランダ語に翻訳されます。だから、https://site.tld/helpページでは、どのページ、英語またはオランダ語のページに移動する必要がありますか? .tldは国固有のものだと言うかもしれません。多分。しかし、それはカナダやスイスのような多言語国でも起こる可能性があります。フランス語で "ページ"は... "ページ"です。だからhttps://site.ca/pageに行くでしょう...言語パスIDはサブパスとして必要です:http://site.ca/fr/page vs http://site.ca/ja/ページ –

答えて

1
class SimpleContactPage_Controller extends Page_Controller { 

    private static $allowed_actions = array(
     'finished' 
    ); 

    public function finished() { 
     ... 
    } 

    public function init() { 

     parent::init(); 

     $translatedAction = _t('SimpleContactPage.CONTROLLER', 'finished'); 
     $urlHandlers  = $this->config()->url_handlers; 

     $translatedUrlHandlers = array(
      $translatedAction => 'finished', 
     ); 

     Config::inst()->update(
      $this->class, 
      'url_handlers', 
      $translatedUrlHandlers + $urlHandlers 
     ); 

    } 

} 

私が発見したlinkおかげ - > 著者:Janne Klouman

関連する問題