Изменить язык с помощью кнопки на игровой платформе

1

Сначала извините за мой английский...

Я искал весь интернет, но я не могу найти ответ на свой вопрос. Я пробовал все, посмотрел документацию, учебники, видеоролики и т. Д...

Я положил две кнопки в верхней части моей страницы, чтобы пользователь мог изменить язык, но я не могу поймать значение на моем контроллере, я сделал все, но никогда не мог справиться. Я новичок в игре :( пожалуйста, помогите... !!

У меня это на мой взгляд:

<'form method="GET" action="@{Application.language("value")}"/'>
    <'input> name="language" type="submit" value="en" title="@Messages("button.en")" </'>
    <'input> name="language" type="submit" value="es" title="@Messages("button.es")" </'>
<'/form'>

И это на моем контроллере:

public static void language(String idiom) {
    String key = null;
    key = idiom;

    if(key.isEmpty()){

    } else {
        Lang.apply(idiom);
    }
}

Но когда я пытаюсь поймать значение на моем контроллере, я всегда получал это сообщение:

[RuntimeException: непризнанный язык: значение]

Теги:
playframework
frameworks
web
playframework-2.0

3 ответа

0

У вас есть сообщения. {Lang} (например, messages.es или messages.en) в папке conf прямо?

И в application.conf действительные языки должны существовать как;

application.langs = "EN, ES"

Если у вас есть это в любом классе, который расширяет Controller, вы можете запустить этот метод;

changeLang ( "ES");

Но в вашем случае кажется, что значение идиомы в вашей функции - это "значение". Поэтому, если вам хорошо, просто замените заголовок формы как;

< form method="GET" action="/language"/ >

(предполагая, что/язык будет маршрутизироваться к вашему методу)

и замените имена входов html как "idiom", чтобы вы передали правильное значение ввода.

0

Я сделал небольшую модификацию с вашим комментарием ниже, и вот как я сейчас.

Маршрут:

POST    /   @controllers.LanguageController.changeLanguage(language: String)

Посмотреть:

<form method="POST" action="changeLanguage("value")"/>
    <input name="language" type="submit" value="en" title="English" </>
    <input name="language" type="submit" value="es" title="Spanish" </>
</form>

контроллер:

Открытый класс LanguageController расширяет Controller {

public Result changeLanguage(String language)
{
    if(language != null && !language.isEmpty())
    {
        Lang.apply("en");
    } 
    else
    {
        String idiom = language;
        Lang.apply(idiom);
    }
    return ok(index.render(""));
}

Теперь у меня есть сообщение об ошибке:

Для запроса "POST/changeLanguage (value)"

И ошибка страницы показывает маршрут LanguageController:

POST/@[email protected](language:String)
0

Ваш HTML выглядит немного подозрительным, вы можете его очистить и отправить вместе с вашим контроллером и маршрутом?

Между тем, это примерно то, что я ожидаю увидеть, чтобы убедиться, что ваши параметры прошли правильно:

Маршруты:

GET     /language  @controllers.LanguageController.index(language: String)

контроллер:

LanguageController {
...
  public Result index(String language) {
        if(language != null && !language.isEmpty()){
            Lang.apply(idiom);
        }   
        ... return
    }
 }

Чтобы установить палку настроек в Play 2, см. Эту статью playframework 2.2 java: как установить язык (i18n) из поддомена

Ещё вопросы

Сообщество Overcoder
Наверх
Меню