Skip to content

Localization

dbeaver-devops edited this page Feb 3, 2025 · 44 revisions

Table of contents

Overview

DBeaver uses the standard properties-based i18n model. All translatable resources reside in the *.properties file. Each plugin (bundle) has its own set of resources. Almost all plugins have at least a bundles.properties resource. More extensive plugins have additional resources in the src folder. bundle.properties contains original English strings. Translated resources are stored in bundle_XX.properties files, where XX is a two-letter language code.

Building and running DBeaver

To set up your environment, follow the instructions in Develop in IDEA.

Finding bundles in IntelliJ IDEA

  1. Open your cloned DBeaver project in IntelliJ IDEA.
  2. Use Find in Files (Ctrl+Shift+F for Windows / Cmd+Shift+F on macOS) to search for bundle.properties.
  3. Look for relevant bundle.properties files within the OSGI-INF/l10n/ directory or src folders.

Adding new languages

If you want to add a new language that was not previously supported, you need to register it so it appears in the user interface:

  1. Open the file plugins/org.jkiss.dbeaver.registry/plugin.xml
  2. Locate <extension point="org.jkiss.dbeaver.language">
  3. Copy an existing <language> element and update the id and name attributes. The id must match the language code.
  4. Localize the language name in OSGI-INF/l10n/bundle.properties.

Example of adding Hebrew:

--- a/plugins/org.jkiss.dbeaver.registry/plugin.xml
+++ b/plugins/org.jkiss.dbeaver.registry/plugin.xml
@@ -36,6 +36,7 @@
         <language code="es" label="%language.es.label"/>
         <language code="tw" label="%language.tw.label"/>
         <language code="uk" label="%language.uk.label"/>
+        <language code="he" label="%language.he.label"/>
     </extension>

Important encoding requirements:

  • All localization files must use UTF-8 encoding.
  • Ensure your editor is configured for UTF-8 and disable native2ascii if enabled.

Making localization changes

Using placeholders in localization files

Use text placeholders instead of concatenating strings in code. Placeholders are {N} markers, replaced at runtime.

// Outputs: "This is my text: hello from DBeaver"
NLS.bind("This is my text: {0} from {1}", "hello", "DBeaver");

Dealing with single quotes

Manually editing properties with single quotes requires doubling them:

  • Wrong: Can't delete '{0}'
  • Right: Can''t delete ''{0}''

Pushing your changes

  1. Open GitHub Desktop.
  2. Select Current branch and click New Branch.
  3. Name your branch related to localization (l10n).
  4. Commit your changes to the new branch.
  5. Click Publish branch / Push.
  6. Click Fetch origin.
  7. In the main menu, select Branch -> Create Pull Request.
  8. On GitHub, provide a meaningful title and description, then click Create pull request.
  9. Switch back to the devel branch in GitHub Desktop.

Alternatively, create a Pull Request in the devel branch.

For more details, see GitHub help.

Pull request guidelines

  • Avoid multiple pull requests for the same issue.
  • Don’t force-push commits in the pull request branch to keep commit history readable.

Changing user interface language

See Changing interface language.

DBeaver Desktop Documentation

General User Guide

Database Management

DBeaver PRO

Databases support

Customizing DBeaver

Troubleshooting

Admin Guide

License management

Tutorials

Development

Clone this wiki locally