web-dev-qa-db-ja.com

国際化対応のURL関数

投票にはレートモジュールを使用しています。匿名ユーザーが投票ウィジェットをクリックすると、ユーザーは "user/login-to-rate"というURLにリダイレクトされます。ローカリゼーションにもi18nを使用しています。これら両方の問題は、「en/my-url」というURLのページで投票ウィジェットをクリックすると、「de/user/login-to-rate」にリダイレクトされることです。ここで、「de」は私のデフォルトの言語です。理想的には、ユーザーは "en/user/login-to-rate"に行く必要があります。つまり、ユーザーが選択した言語を尊重する必要があります。

詳細を見ると、rateモジュールが次のコードを使用してurl()を呼び出していることがわかります。

print url('user/login-to-rate', array('query' => $query, 'absolute' => TRUE));

渡される言語パラメーターはありません。つまり、デフォルトのサイト言語が選択されます。

ここで設定に何か不足していますか?誰かが同様の問題に直面し、助けることができますか?

2
Mukesh Agarwal

url()はデフォルトで現在の言語を使用します。別の言語が必要な場合にのみ、その言語をそれに渡す必要があります。異なる言語のユーザーにメールを送信するとき。

En/somethingを使用していて、グローバル言語がenでない場合は、他の何かが問題である可能性があります。たとえば、正しく構成されていない言語認識などです。

3
Berdir

言語オブジェクトを渡してみてください。モジュールを見ないで、次のようなもの:

global $language;
print url('user/login-to-rate', array('query' => $query, 'absolute' => TRUE, 'language'=>$language));

これが機能する場合は、パッチをモジュールに送信してください。

1
Apemantus