play framework 2.0 -интернационализация -как перевести сообщение

Первый вопрос :как мне получить перевод текста в контроллере?

Второй вопрос :как получить перевод текста в шаблоне?

API говорит, что есть метод.get, который переводит сообщение.:

http://www.playframework.org/documentation/api/2.0/java/play/i18n/Messages.html

Однако мое приложение не распознает этот метод. Открытие в eclipse Message.class показывает, что в нем есть метод.apply, написанный на Scala и Java!?

object Messages {

  /**
   * Translates a message.
   *
   * Uses `java.text.MessageFormat` internally to format the message.
   *
   * @param key the message key
   * @param args the message arguments
   * @return the formatted message or a default rendering if the key wasn’t defined
   */
  def apply(key: String, args: Any*)(implicit lang: Lang): String = {
    Play.maybeApplication.flatMap { app =>
      app.plugin[MessagesPlugin].map(_.api.translate(key, args)).getOrElse(throw new Exception("this plugin was not registered or disabled"))
    }.getOrElse(noMatch(key, args))
  }

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

> String play.api.i18n.Messages.apply(String arg0, Seq arg1,
> Lang arg2)

Но что я должен ввести в качестве аргумента "Seq"?

--Решение--

Проблема заключалась в том, что я импортировал play.api.i18n.Messages вместо play.i18n.Messages...

Определив два файла сообщений (messages.de -DE и messages.en -UK )и используя следующий код, все работает нормально:

Controller:

    import play.i18n.Messages;
    import play.api.i18n.Lang;

    Lang en = new Lang("en","GB");
    play.i18n.Lang en_lang = new play.i18n.Lang(en);

    Lang de = new Lang("de", "DE");
    play.i18n.Lang de_lang = new play.i18n.Lang(de);

    Logger.info(Messages.get("home.title"));
    Logger.info(Messages.get(en_lang, "home.title"));
    Logger.info(Messages.get(de_lang, "home.title"));

application.conf

    application.langs="en-GB,de-DE"

6
задан Thomas Kremmel 4 May 2012 в 13:05
поделиться