object Formatter
Creates a Formatter used to access strings
for a given locale
stored in a given bundle
.
The support for language specific strings involves two values. The first
is a MessageBundle that defines the
name of a class containing language dependent strings. The second value
is the java.util.Locale
used to select the set of language strings to
be accessed. When a Formatter is created
an attempt is made to load the supplied bundle with the given locale. If
the loading succeeds then the strings may be accessed via the returned
Formatter.
The current class loader is used to try and load the bundle class. The
bundle class must extend java.util.ListResourceBundle
. The class
name may have a language code (e.g. _en) appended indicating the
language whose strings are defined in the class. A class name without
a language extension is the default bundle, used when a
language specific version cannot be found.
Example:
package com.acme class Resources extends java.util.ListResourceBundle { final override val getContents: Array[Array[AnyRef]] = Array( Array("BadValue", "The bad value is %s") ... ) } class Resources_de extends java.util.ListResourceBundle { final override val getContents: Array[Array[AnyRef]] = Array( Array("BadValue", "Der falsche Wert ist %s") ... ) }
The above bundle classes define strings for German (Resources_de
) and
the default bundle (Resources
). When defining bundles it makes sense
to define all languages within a single file.
Referential Transparency
The string resources are stored in a class and read as a
java.util.ListResourceBundle
. The strings are constants defined in
a class ensuring that the same value is always returned for the same
arguments. The read-only nature of the resource class ensures the
Formatter methods are referentially
transparent and so not effectful.
- Source
- Formatter.scala
- Alphabetic
- By Inheritance
- Formatter
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##(): Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def apply(bundle: MessageBundle, locale: Locale): Either[Error, Formatter]
Creates a Formatter tied to a given bundle and locale.
Creates a Formatter tied to a given bundle and locale.
The name of the bundle defines a resource containing language dependent strings. The locale determines the language of the set of strings to be accessed. For full details on the locations of the resource bundle see
java.util.ResourceBundle
. If the requested bundle cannot be loaded then an error is returned.Example:
package com.acme class Resources_en extends java.util.ListResourceBundle { final override val getContents: Array[Array[AnyRef]] = Array( Array("BadValue", "The bad value is %s") ... ) } class Resources_de extends java.util.ListResourceBundle { final override val getContents: Array[Array[AnyRef]] = Array( Array("BadValue", "Der falsche Wert ist %s") ... ) } Formatter(MessageBundle("com.acme.Resources"), Locale.ENGLISH)
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
Documentation for the Axiell Utilities Project
Overview
The Axiell Utilities Project attempts to provide a small library of classes and object applicable to most Axiell developments. The library is not geared towards any one project and so should be useful for new projects as well as existing ones.
The library is based on a few simple principles, namely:
Package structure
The
package consists of a number of utilities, where each utility provides a single piece of functionality.com.axiell.util
Notable utilities are:
Configure
generic configuration reader allowing application settings defined as resources to be interrogated.Error
generic error handling class defining a locale independent error message along with details relating to the context of the error. The context may include an exception and other relevant values.Formatter
retrieves and formats a locale specific string from a specified resource bundle. The formatting is specified in aC
printf style.Implicits
implements implicit methods and classes used to pimp methods onto existing classes (e.g.fold()
method toBoolean
class) and to provide implicit implementations for the JsonLocal and ShowLocal type classes.JsonLocal
type class used to output locale specific JSON structures. Implementations exist for Message and Error.Message
provides a locale independent mechanism for handling strings. The strings for a given locale are stored in resource bundles that are accessed when the message is to be displayed.ShowLocal
type class used to show locale specific strings. Allows Message and Error to be converted to a given language string.Dependencies
The list of dependencies are:
Typesafe Config
a generic configuration file reader. The library is used by theConfigure
class to access settings stored as resources within an application.