3

ErlangWeb1.4に基づくWebサイトの国際サポートを追加しようとしています。

ユーザーが言語セッション変数を設定できるように、すべてのページにいくつかのリンク(悪名高い国のフラグ)を配置したいと思います。

私が今持っているのは次のようなリンクです:

<li><a href="/session/language/en">English</a></li>

ここで、セッションコントローラーで私は次のことを行います。

language(Args) ->
    LanguageId = proplists:get_value(id, Args),
    case language_is_supported(LanguageId) of
        false ->
            ok;
        true ->
            wpart:fset("session:lang", LanguageId)
    end,
    {redirect, "/"}.

問題は、優先言語を設定した後、言語を変更する前に、ユーザーがアクセスしていたページにリダイレクトされるようにしたいということです。この場合、「__ path」変数には言語リクエストが含まれており、「前の」リクエストは含まれていないため、役に立ちません。

この状況をどのように解決できますか?私はおそらく間違ったアプローチを使用していますが、今は他に何もできません。

4

1 に答える 1

2

リクエストディクショナリが本当に制限されている場合、私が考えることができる唯一のハックは、現在のページのURLをGET変数として返すことです。

<li><a href="/session/language/en?referrer=/path/to/current/page">English</a></li>

language(Args) ->
    LanguageId = proplists:get_value(id, Args),
    case language_is_supported(LanguageId) of
        false -> ok;
        true ->  wpart:fset("session:lang", LanguageId)
    end,
    Referrer = eptic:fget("get", "referrer"),
    {redirect, Referrer}.
于 2010-03-25T11:30:00.747 に答える