Я пытаюсь создать сайт в Elm, и он включает в себя пару ссылок для изменения языка:
div [ class "language" ][ a [ class englishClass, onClick (ChangeLanguage English) ] [ text "EN" ]
, a [ class germanClass, onClick (ChangeLanguage German) ] [ text "DE" ]
, a [ class italianClass, onClick (ChangeLanguage Italian) ] [ text "IT" ]
]
Мое обновление выглядит так:
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
... -- Stuff for URLs
ChangeLanguage language ->
( { model | language = language }
, Cmd.none
)
type Msg
= LinkClicked Browser.UrlRequest
| UrlChanged Url.Url
| ChangeLanguage Language
Это моя модель:
type alias Model =
{ key : Nav.Key
, url : Url.Url
, language : Language
}
И это моя функция инициализации, которая (по крайней мере, на мой взгляд) по умолчанию использует английский язык sh:
init : flags -> Url.Url -> Nav.Key -> ( Model, Cmd Msg )
init _ url key = ( Model key url English, Cmd.none )
проблема:
Всякий раз, когда я нажимаю на ссылки, которые меняют язык, они делают , кажется, работают: я вижу, как меняется язык абзацев на странице, но затем появляются некоторые нежелательные вещи бывает:
- Страница обновляется. Поскольку я уже видел изменение языка по всей странице, ясно, что в этом нет необходимости, поэтому я бы хотел этого избежать.
- Как следствие 1, область просмотра переносится полностью в верхнюю часть страница снова.
- Язык снова меняется на английский по умолчанию sh снова!
Как я могу избежать 1 (и, следовательно, 2), чтобы это произошло?
И что я отсутствует, чтобы сделать так, чтобы изменение сохранялось по всему сайту (по крайней мере, при обновлении страницы, поскольку я еще не пробовал работать с сеансами или файлами cookie)?