BBTranslator::createLocale

Description

In BBj 9.0 and higher, this method creates and returns a Java Locale given a locale-formatted string.

Syntax

Return Value

Method

static Locale

createLocale(string localeString)

Parameters

Variable

Description

localeString

Specifies the locale string in the format lang_COUNTRY_VARIANT, where COUNTRY and VARIANT are optional

Return Value

The created Java Locale object.

Remarks

Example of valid locale string: en,de,es, en_US, en_US_TX.

Example

rem Demo on how to use BBTranslator, BBTranslationBundle, and BBTranslations

rem Use statements

use ::bbtranslator.bbj::BBTranslator
use ::bbtranslator.bbj::BBTranslationBundle
use ::bbtranslator.bbj::BBTranslations
use java.lang.System
use java.util.Locale
use java.util.HashMap
use java.util.Collection
use java.util.Iterator

rem Declares

declare BBjAPI              api!
declare BBjString           bundleDir$
declare BBjString           bundleName$
declare BBTranslationBundle bundle!
declare BBTranslator        germanTranslator!
declare Collection          translationsKeys!
declare Iterator            translationsIter!
declare BBjString           translationsKey$
declare BBjString           translation$
declare BBTranslations      enTranslations!
declare HashMap             newTranslations!

rem Get a reference to the BBjAPI
api! = BBjAPI()

rem Set the bundle name
bundleName$ = "sample"

rem Use the translations directory for the bundle directory
bundleDir$ = System.getProperty("basis.BBjHome") + "/utils/translations/"

rem Create the bundle
bundle! = BBTranslationBundle.getBundle(bundleName$,bundleDir$)

rem There are mutliple ways to add a translation
rem Add a translation one at a time to a particlular locale in the translation bundle.

enTranslations! = bundle!.getTranslations(new Locale("en"))

print "Adding Key1/Value1 individually..."
enTranslations!.addTranslation("Key1","Value1")

print "Adding Key2/Value2 individually..."
enTranslations!.addTranslation("Key2","Value2")

rem Add new translations via a hashmap to a particlular locale in the translation bundle

print "Adding Key3/Value3 and Key4/Key5 at once per HashMap..."
newTranslations! = new HashMap()

newTranslations!.put("Key3","Value3")
newTranslations!.put("Key4","Value4")

enTranslations!.addTranslations(newTranslations!)

rem Add a translation to multiple locales in the translation bundle
print "Adding the key Hello with values for multiple locales..."

declare HashMap newTranslation!
newTranslation! = new HashMap()
newTranslation!.put(new Locale("en"),"hello")
newTranslation!.put(new Locale("es"),"hola")
newTranslation!.put(new Locale("it"),"cioa")
newTranslation!.put(new Locale("fr"),"bonjour")
newTranslation!.put(new Locale("nl"),"hallo")
newTranslation!.put(new Locale("de"),"guten tag")
newTranslation!.put(new Locale("sv"),"god dag")

bundle!.addTranslation("hello",newTranslation!)

rem Save the bundle
bundle!.save()
print "Translation bundle saved to: ",bundle!.getDirectory()

rem Get a translation from the bundle
rem A translator can be used for convience to get translations or a single translation from
rem a translation bundle on a per locale basis

germanTranslator! = BBTranslator.getInstance(bundleName$,"de",null(),bundleDir$)

rem To get a single translation
translationKey$ = "hello"
translation$ = germanTranslator!.getTranslation(translationKey$)
print "The German translation for key [",translationKey$,"] is [",translation$,"]"

rem To get all translation for a locale
translationsKeys! = enTranslations!.getKeys()
translationsIter! = translationsKeys!.iterator()

while translationsIter!.hasNext()
    translationKey$ = str(translationsIter!.next())
    translation$ = entranslations!.getTranslation(translationKey$)
    print "The English translation for key [",translationKey$,"] is [",translation$,"]"
wend

See Also

BBj Object Syntax