Добавление международной поддержки в Erlang Web 1.4

Я пытаюсь добавить международную поддержку для веб-сайта на основе 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 ответ

Решение

Если словарь запросов действительно настолько ограничен, я могу думать только о том, что вы передаете 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}.
Другие вопросы по тегам