Nesting formatter instances for localized substrings
Overview
Identify strings that need to be localized.
Overview
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 itself can be localized. You can do this by nesting LocalizableTextFormatter instances.
- 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); ... }
Internationalization
Internationalization: Resources for learning