All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.scalatra.i18n.Messages.scala Maven / Gradle / Ivy

package org.scalatra
package i18n

import java.util.{ Locale, MissingResourceException, ResourceBundle }

object Messages {

  def apply(locale: Locale = Locale.getDefault, bundlePath: String = "i18n/messages"): Messages = {
    new Messages(locale, bundlePath)
  }

}
class Messages(locale: Locale, bundlePath: String = "i18n/messages") {

  private[this] val bundle: ResourceBundle = ResourceBundle.getBundle(bundlePath, locale)

  /**
   * Null-safe implementation is preferred by using Option. The caller can
   * support default value by using getOrElse:
   * messages.get("hello").getOrElse("world")
   *
   * The return value can also be used with format:
   * messages.get("hello %d").map(_.format(5))
   *
   * To return the string itself:
   * messages("hello")
   *
   * @param key The key to find the message for
   */
  def get(key: String): Option[String] = {
    try {
      Some(bundle.getString(key))
    } catch {
      case e: MissingResourceException => None
    }
  }

  def apply(key: String): String = bundle.getString(key)

  /**
   * Return the value for the key or fall back to the provided default
   */
  def getOrElse(key: String, default: => String): String = {
    try {
      bundle.getString(key)
    } catch {
      case e: MissingResourceException => default
    }
  }

  /**
   * Returned the value for the key or the default
   */
  def apply(key: String, default: String): String = {
    try {
      bundle.getString(key)
    } catch {
      case e: MissingResourceException => default
    }
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy