3

我正在尝试为基于 Erlang Web 1.4 的网站添加国际支持。

我想在每个页面(臭名昭著的国家标志)上都有几个链接,允许用户设置他的语言会话变量。

我现在拥有的是一个链接,例如:

<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 回答