Nesting formatter instances for localized substrings
The ability to substitute variable substrings into the strings retrieved from message catalogs adds a level of flexibility to the localizable-text package, but this capability is of limited use unless the variable value can be localized. You can localize this value by nesting LocalizableTextFormatter instances.
Before you begin
Procedure
- In the message catalog, add entries that correspond to potential values for the variable substring.
- In application code, create a LocalizableTextFormatter instance for the variable substring, setting required localization values.
- Create a LocalizableTextFormatter instance for the primary string, passing in an array that contains the formatter instance for the variable substring.
Example
The following line from an English message catalog shows a string
entry with two substitutions and entries to support the localizable variable
at index 0 (the second variable in the string, the account number, does not
need to be localized):
successfulTransaction = The {0} operation on account {1} was successful. depositOpString = deposit withdrawOpString = withdrawal
The following code shows the creation
of the nested formatter instance and its insertion (with the account number
variable) into the primary formatter instance:
public void updateAccount(String transactionType) { ... // Successful deposit LocalizableTextFormatter opLTF = new LocalizableTextFormatter("BankingResources", "depositOpString", "BankingSample"); Object[] args = {opLTF, new String(this.accountNumber)}; ... LocalizableTextFormatter successLTF = new LocalizableTextFormatter ("BankingResources", "successfulTransaction", "BankingSample", args); ... successLTF.format(this.applicationLocale); ... }