Skip to content

Latest commit

 

History

History
74 lines (47 loc) · 2.56 KB

README.md

File metadata and controls

74 lines (47 loc) · 2.56 KB

#Play Language

Apache-2.0 license

Build Status Download

Play library to provide common language support and switching functionality for Play projects.

##Endpoints

This library adds a new endpoint:

 /language/:lang     - Switches the current language to the lang, if defined in languageMap.

##Setup

Add the library to the project dependencies:

resolvers += Resolver.bintrayRepo("hmrc", "releases")
libraryDependencies += "uk.gov.hmrc" %% "play-language" % "[INSERT VERSION]"

Configuration

Create your own custom LanguageController:

object CustomLanguageController extends LanguageController with RunMode {
  
  /** Converts a string to a URL, using the route to this controller. **/
  def langToCall(lang: String): Call = controllers.routes.CustomLanguageController.switchToLanguage(lang)

  /** Provides a fallback URL if there is no referer in the request header. **/
  override protected def fallbackURL: String = current.configuration.getString(s"$env.language.fallbackUrl").getOrElse("/")

  /** Returns a mapping between strings and the corresponding Lang object. **/
  override def languageMap: Map[String, Lang] = Map("english" -> Lang("en"),
                                                    "cymraeg" -> Lang("cy-GB"))
}

Add the following to the application conf file for each language you support:

application.langs="en,cy"

Add the following to your application's custom routes file.

GET     /language/:lang       uk.gov.hmrc.project.CustomLanguageController.switchToLanguage(lang: String)

When you want to show a language switch to the user, use the language selection template.

@language_selection(CustomLanguageController.languageMap, CustomLanguageController.langToCall, Some("custom-class"))

Add an implicit Lang object to each view you wish to support multiple languages.

@()(implicit lang: Lang)

In order to show each language text to the user, create a messages.xx file within /conf, where xx is the language code, and put your translations within there, using the same message keys.

License

This code is open source software licensed under the Apache 2.0 License.