Go Global with New International Locale Formats
To keep the Salesforce Platform up to date with the latest international standards, we adopted a new set of locale formats in Winter ’20. Locales control the formats for dates, times, currencies, addresses, names, and numeric values. We currently use International Components for Unicode (ICU) version 71.1, which uses the Unicode Common Locale Data Repository (CLDR) version 41. By default, orgs created before Winter ’20 use the locale formats provided by Oracle’s Java Development Kit (JDK).
Required Editions
| Available in: both Salesforce Classic and Lightning Experience |
| Available in: all editions |
The Enable ICU Locale Formats release update is available for all Salesforce orgs. Orgs that haven’t already switched to ICU locale formats are encouraged to manually update. To get the upgrade date for your instance, go to Trust Status, search for your instance, and click the maintenance tab.
The new locale formats are available with all versions of the Salesforce platform API. However, orgs whose Apex Classes, Apex Triggers, and Visualforce Pages are using API version 44 or earlier may encounter issues.
- Adopt the ICU Locale Formats
The ICU locale format release update is available for all orgs. Review the high-level process to successfully migrate to the new International Components for Unicode (ICU) locale formats. Some of the formats differ from the ones provided by Oracle’s Java Development Kit (JDK). Understand how to determine the impact of changes on your org, and learn about the updates required to support the new formats. - Determine Whether Your Org Uses ICU or JDK Locale Formats
To prepare for the move to the International Components for Unicode (ICU) library from Oracle’s Java Development Kit (JDK) library, determine whether ICU is enabled in your org, or whether you’re using the JDK locale format. ICU is the new standard and enabled through a release update. - Considerations for Adopting the ICU Locale Formats
Learn why Salesforce chose to adopt the International Components for Unicode (ICU) locale formats. Understand why we recommend testing the new formats in a sandbox and enabling them in production before they’re enforced. Then review recommendations on handling installed packages, custom code, and notifying your users. - Determine the Locales in Use
To identify the locales used in your org, you can use an SQQL query, a report, or both. When locale formats change, your adoption effort depends on the locales used in your org. For example, when you migrate from Oracle’s Java Development Kit (JDK) locale formats to International Components for Unicode (ICU) locale formats, or when existing locale formats change. - Identify Changes to Your Locales with ICU
To ensure that you understand the impact of migrating from Oracle’s Java Development Kit (JDK) locale formats to International Components for Unicode (ICU) locale formats, determine the specific locale format changes. - Differences Between JDK and ICU Locale Formats
Here are all the differences between Oracle’s Java Development Kit (JDK) locale formats and the International Components for Unicode (ICU) locale formats. The changes are listed by locale or platform-only language. By default, orgs created before Winter ’20 use the locale formats provided by Oracle’s JDK. - Enable the ICU Locale Formats
International Components for Unicode (ICU) locale formats are available as a release update. To test the International Components for Unicode (ICU) locale formats before they’re enforced for your organization, enable a test run in the Enable ICU Locale Formats release update. Then enable the formats for the English (Canada) locale. - API Versions for Apex Classes, Apex Triggers, and Visualforce Pages
The International Components for Unicode (ICU) locale formats are available with API version 45.0 and later. To use the ICU locale formats in your customizations, all Apex classes, Apex triggers, and Visualforce pages must use API version 45.0 or higher.. - Custom Code and Locale Format Changes
Address, currency, date, datetime, integer, name, and time formats can change when a user changes locales. These formats can also change when the locale format standard changes or formats are updated. Learn how to avoid errors by using locale-neutral methods in your code and review examples. Then understand how to verify that your integrations work with new or changed formats. - ICU Locale Format Migration Tests
To avoid unexpected behavior after you migrate from Oracle’s Java Development Kit (JDK) locale formats to International Components for Unicode (ICU) locale formats, test the ICU locales. When you migrate from JDK to ICU, the formats for some locales change. Use functional tests to verify existing functionality, and confirm that these formats appear correctly for each affected locale used in your org. Also, verify that integration with third parties works as expected, and test your installed packages with the new formats.

