在Erlang Web 1.4中添加国际支持

时间:2010-03-22 18:15:59

标签: erlang erlangweb

我正在尝试为基于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”变量没有帮助,因为它包含语言请求而不是“前一个”。

我该如何解决这种情况? 我可能正在使用错误的方法,但我现在无法解决任何问题。

1 个答案:

答案 0 :(得分:2)

如果请求字典确实是so limited,那么我能想到的唯一 hack 就是将当前页面的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}.