Adding a new Natural Language to GNUstep

From GNUstepWiki

(Difference between revisions)

Current revision

These instructions are loosely based on a mail from Fred Kiefer.


General approach

To have a localized application, not only will the application have to be translated, but also GNUstep-base and GNUstep-gui if they've not already been done.

Check to see if base and gui support your language. Language support bundles are present in the Resources directory in the source distributions with an extension .lproj.

Note: By convention, these localization bundles are named in English.

If your language is not supported yet, copy the English.lproj bundle and name it to the language you wish to support.

At a minimum, you will need to translate the bundle's Localizable.strings file and the package's (or subproject's) GNUmakefile to include the new language name in the xxx_LANGUAGES variable. If the resource (such as a GUI application, or GNUstep-gui) uses .gorm files for GUI elements such as menus and panels, these will also need to be translated using Gorm.


Localizable.strings is a file containing strings in a base language (often English) which correspond to strings embedded in the source code and the translated string.

You will need to put strings that correspond to the language you are targetting in the right hand column. Missing quotation marks, equal signs or terminating semicolons will cause problems.

Note: Applications need to use the _() syntax in source code to support automatic use of Localizable.strings.


Add the name of the language to the project's projectname_LANGUAGES variable.

Gorm files

Find all files ending in .gorm that were copied from the orginal language bundle and load them one by one. Change all the text that is displayed to the user in menus, panels, windows, buttons and so on, and if necessary, also change the layout (average string length and height tend to differ between even closely-related languages, right-to-left languages may conventionally place default buttons in different locations on panels, as examples).

See also

[Dennis Leeuw's tutorial]