Internationalisation

Messages are provided as a UniformMessages[Html] object, where Html is the data-type that composes the response (such as play.twirl.api.Html if you’re using twirl with the Play Framework).

Under this configuration an exception will be thrown if a non-existant key is asked for. UniformMessage is a Monoid, and as such can be combined messages easily - the left-hand source will be consulted first and if a message is not found the right-hand instance will be asked.

If we want the key itself to be returned when there is no message defined the UniformMessages.echo provider can be used as a fallback -

  def messages2(request: Request[AnyContent]): UniformMessages[Html] = {
    messagesApi.preferred(request).convertMessages() |+|
    UniformMessages.echo 
  } map ( HtmlFormat.escape )

A nice path for development is to use UniformMessages.bestGuess as a fallback. You may want to run with UniformMessages.attentionSeeker if you are a content author in order to display all optional content on the page.