Oracle APEX 26.1 introduces a new translation approach for applications based on Text Messages. It adds the ability to convert and manage translatable text within an application as text messages, making it easier to maintain user-facing content and support multiple languages. With support for exporting and importing translations in XLIFF and CSV, the overall localization workflow becomes more practical in APEX.

Developers can continue building applications in their primary language, convert translatable text into text messages, define target languages, and exchange translation content using standard formats catering to both manual translation workflows and external localization services. In addition, the APEX_LANG PL/SQL API supports programmatic export and import of text messages, making it easier to automate parts of the localization workflow.

Why this matters

Text Message-based translation streamlines application localization by removing the need for shadow applications and centralizing translatable content in one place.

With Oracle APEX 26.1, teams can:

  • Continue building in their primary language
  • Convert translatable UI text into reusable text messages
  • Manage multiple languages from a single application
  • Exchange translation content with external localization providers using standard formats
  • Automate export and import through PL/SQL APIs

This makes the translation workflow easier to adopt, easier to maintain, and better suited for modern localization processes.

Translate your application in 5 simple steps:

  1. Enable Application Translation
  2. Convert translatable application text into Text Messages
  3. Define Application Languages
  4. Export text messages in CSV or XLIFF for translation
  5. Import the translated text messages back into the application

Enable Application Translation

To translate an APEX application, go to Shared Components -> Globalization and enable Translate Application.

Once translation is enabled, the Translation Method property becomes available with the following options:

  • Application-Based:
    Translatable text defined across application components is translated using separate translated applications, one for each language. This is the traditional translation approach available in earlier APEX releases. Refer to this documentation to learn more about this approach.
  • Text Message-Based:
    Translatable text across application components is stored in Shared Components -> Text Messages, allowing a single application to support multiple languages through text message translations.

 Figure 1: Enable translation and choose the new Text Message-based method.

Convert translatable application text into Text Messages

This is the key step in the workflow.

This process converts translatable text throughout the application into Text Messages. For example, if a region title is ‘Customer Orders’, APEX creates a corresponding text message such as ‘CUSTOMER_ORDERS’, which is then used for any instance of ‘Customer Orders’ across the application.

This makes application text easier to manage and simplifies translation through XLIFF or CSV export and import. Developers can continue building in the primary language and run this process whenever needed to keep text messages in sync with application changes.

To do this:

  • Select an application
  • Navigate to Shared Components -> Application Translations
  • Click Convert to Text Messages

Alternatively, you can also access this under Shared Components -> Text Messages -> Convert Application Text from the Tasks menu.

Note: This process does not convert template directives, numeric-only text, component text marked as non-translatable, or subscribed text objects. Subscribed text objects must be translated in the source application from which they are subscribed.

           Figure 2: Convert existing application text into text messages

Define Application Languages

Next, add the target languages you want to support.To do this:

  • Select an application
  • Click Shared Components
  • Under Globalization, click Application Translations

On the Translate page, click Add Language in the Application Languages section, choose the desired language, and then click Add Language.

This synchronizes text messages from the application’s primary language into the selected translation language.

Figure 3: Add target languages for translation

Figure 4: Choose the language to add

Figure 5: View configured application languages.

Export text messages in CSV or XLIFF for translation

Once languages are defined, you can export text messages for translation.

From the Application Translations page:

  1. Click Export Text Messages
  2. Choose a language, or select All to export all languages as a ZIP file
  3. Choose the export format: XLIFF or CSV
  4. Click Export

You can export text messages for a single language or for all configured languages. This supports both manual translation workflows and integration with external localization services.

Figure 6: Export text messages from the Application Translations page.

Figure 7: Choose the language and export format

Import the translated text messages back into the application

After the translation file has been updated, upload it back into the application to apply the translated values.

From the Application Translations page:

  1. Click Import Text Messages
  2. On the Import page, locate the translated XLIFFCSV, or ZIP file
  3. Click Import

After import, the application’s text messages are updated with the translated values for the selected languages.

Figure 8: Import translated text message files

 Figure 9: Choose the translated file to upload

Figure 10: Complete the import process

Translating Text as Your App Evolves

As your application grows, adding new translatable text remains straightforward. You can either create a Text Message first and reference it where needed, or simply enter text inline as you build new pages and components. Later, you can run Sync Text Messages to pick up new text and prepare it for translation.

Adding a New Text Message

For example, imagine you need to add an Create Order button to the Customer Orders page.

One approach is to first create a new Text Message named CREATE_ORDER with the primary language value Create Order. You can then use that text message as the label for the new button.

Figure 11: Creating New Text Message in Primary Language

Using the Text Messages Picker

APEX makes this even easier with the Text Messages Picker, shown as a globe icon next to properties that support translatable text. If you do not see the globe icon, you can enable it from the toolbar using Show > Text Messages Picker.

Figure 12: Enabling Text Message Picker

Once enabled, click the globe icon next to the button label property, search for CREATE_ORDER, and select it. APEX automatically inserts the appropriate substitution syntax, and the resolved text is displayed just below the property value so you can immediately confirm the label as Create Order.

Figure 13: Search for corresponding Text Message 

Figure 14: Picked Text Message included with proper substitution syntax 

This makes it easy to reuse translatable text consistently across the application while keeping translations centralized and easier to maintain.For more details, refer to the official documentation.

Synchronizing Text Messages

When you are ready to translate the newly added text, open the actions menu (three vertical dots) for the French language, as shown below, and select Sync Text Messages. Then click Synchronize in the dialog that appears. This adds the missing french entry for CREATE_ORDER.

Figure 15: Sync Text Messages

Figure 16: Synchronize Text Messages for a target language 

Traditional vs. Text Message-based translation

The new approach offers a simpler workflow for many translation scenarios.

Application-Based TranslationText Message-Based Translation
Separate translated applications per languageOne application supports multiple languages
Requires seeding and managing shadow applicationsTranslations are managed through text messages
More maintenance effort, even when only logic changesLess maintenance effort, logic changes usually require no extra work because there is only one application.
Less direct for file-based exchangeBuilt for CSV/XLIFF export and import
Can require more manual operational stepsEasier to automate with APIs

Integration with APEX_LANG PL/SQL API 

Text Messages can also be programmatically exported and imported using the APEX_LANG PL/SQL API in supported formats such as CSVXLIFF, and ZIP. This is especially useful for teams that want to integrate APEX translation workflows with external localization systems or automate translation deployment as part of a broader delivery process.

The following example exports text messages for a specific language:

declare
      l_file clob;
begin
    apex_util.set_workspace( 'MY_WORKSPACE' );
    l_file := apex_lang.export_text_messages(
        p_application_id             => 100,
        p_lang_code                  => 'fr',
        p_format                     => c_export_format_csv );
end; 

The following example imports translated text messages from a table and applies them to an existing application:

begin
    apex_util.set_workspace( 'MY_WORKSPACE' );
    for c1 in ( select application_id,
                       translation_file,
                       translation_format
                from   my_translation_table
                where  translation_app_id = 100 )
     loop
         apex_lang.import_text_messages(
             p_application_id         => c1.application_id,
             p_file                   => c1.translation_file,
             p_format                 => c1.translation_format);
     end loop;
     commit;
end;

For more details, refer to the official documentation.

Note: If running from SQLcl, you need to set the environment for the Oracle APEX workspace associated with the schema. The call to apex_util.set_workspace is not necessary if you’re running within the context of the App Builder or an APEX application.

Conclusion

Text Message-based translation represents a simpler and more modern approach to multilingual application development in Oracle APEX.

With Oracle APEX 26.1, that approach becomes more complete. By supporting conversion of translatable application text into text messages, along with export and import in CSV and XLIFF formats, APEX now provides a much more practical end-to-end workflow for managing translated application text.

For teams building multilingual applications, the benefits are clear: fewer moving parts, easier maintenance, better integration with translation workflows, and stronger support for automation.

FAQs

Do I need shadow applications to use this feature?

No. Text Message-based translation works within a single application, eliminating the need for shadow applications.

Can I still use the existing Application Translation method?

Yes. Oracle APEX continues to support the existing Application-Based translation method. Teams can choose the approach that best fits their requirements.

What export formats are supported?

Oracle APEX 26.1 supports exporting text messages in XLIFF and CSV. You can also export all defined languages together as a ZIP file.

What import formats are supported?

Translated text messages can be imported using XLIFFCSV, or ZIP files containing multiple languages.

What should I do after changing labels or adding new components?

Run Convert Application Text again so that any new or updated translatable text is captured and kept in sync as text messages.

What happens if a translation is missing for a language?

Oracle APEX falls back to the primary language text message value.