您可以使用play.mvc.Controller
這個超類的changeLang(String code)
方法。
然後,你需要告訴你的語言解析器,哪個域使用我們默認的語言,探索性地使用application.conf
或數據庫記錄。下一步取決於你想要達到的目標,只需使用Global類來攔截你的所有請求,或者創建一個簡單的動作來改變語言,他們將返回到同一頁面(這樣用戶可以決定自己使用哪種語言) 。
這是一種基於cookie的機制,所以我不確定是否不需要執行強制頁面重新加載(即通過重定向到相同的路徑),無論如何,我假設你會告訴我們, LL檢查;)
編輯:
,可能是即。像
public Action onRequest(final Http.Request request, final Method actionMethod) {
if (request.host().equals("de.yourdomain.tld")
&& (request.cookie("PLAY_LANG") == null || !request.cookie("PLAY_LANG").value().equals("de"))) {
return new Action.Simple() {
public Result call(Http.Context ctx) throws Throwable {
ctx.changeLang("de");
return redirect(request.path());
}
};
} else {
return super.onRequest(request, actionMethod);
}
}
只要確保你有de
郎application.conf
加入,否則你會得到美麗,無盡的重定向循環。 PLAY_LANG
是典型的Play用於存儲所選語言的cookie名稱。
但是,如何從Global類和java中更改語言?我什至不知道如何在onRequest中設置cookie。這些東西應該是真的很容易在一個web框架... –
檢查我的編輯...它是從我的頭頂寫的,所以請親自驗證它反對錯誤 – biesior