我正在尝试为基于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”变量没有帮助,因为它包含语言请求而不是“前一个”。
我该如何解决这种情况? 我可能正在使用错误的方法,但我现在无法解决任何问题。
答案 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}.