ロケール依存のカスタム文字列を返す
カスタム検証エラー・メッセージをスローするときに、エンド・ユーザーが多言語の場合は、ロケール固有のエラー・メッセージ文字列の指定について心配する必要がある場合があります。
これを実現するために、すべてのエラー文字列をカプセル化するグローバル関数の一部として、現在のロケール(各エンド・ユーザーのブラウザ設定から推測)を参照できます。 次のようなgetMessage
関数について考えてみます。 これを定義すると、検証ルールまたはトリガーは、適切なメッセージ・キーを渡すことによって、ロケール依存のエラー・メッセージをスローできます:
// context is trigger or object-level validation rule
throw new oracle.jbo.ValidationException(adf.util.getMessage('BIG_ERROR'))
グローバル関数は次のように定義されます。
-
関数名:
getMessage
-
戻りタイプ:
String
-
パラメータ:
stringKey String
関数定義
// Let "en" be the default lang
// Get the language part of the locale
// e.g. for locale "en_US" lang part is "en"
def defaultLang = 'en';
def userLocale = adf.context.getLocale() as String
def userLang = left(userLocale,2)
def supportedLangs=['en','it']
def lookupLang = supportedLangs.contains(userLang)
? userLang : defaultLang
def messages =
[BIG_ERROR: [en:'A big error occurred',
it:'Ã successo un grande errore'],
SMALL_ERROR:[en:'A small error occurred',
it:'Ã successo un piccolo errore']
]
return messages[stringKey][lookupLang]