Languages, Translation and Localization

last updated on Feb 21, 2023

The Access Anywhere Web interface supports translation/localization, allowing you to customize the strings displayed.

Out of the box the following languages are supported:

  • English
  • French
  • German
  • Italian
  • Spanish

At its core, the platform uses the gettext standard to handle translations.

Which language is selected?

When a user visits the Access Anywhere Server web interface, the user's browser will inform the server with with a list of languages the user is happy to receive in order of preference. Typically, browsers will make the users current operating system locale the most highly preferred language. The server will take this list of preferred languages, and select a language that is closest to the users most preferred language and one that is supported by Access Anywhere.

Some browsers may also provide override settings, or extensions, that also allow users to select their desired language that may differ from their operating system's settings.

Translation management

Access Anywhere provides an interface where the administrator can manage the translations. You must have the ApplAdmin account details to acces it.

To visit this interface, login as the ApplAdmin user, and click on Settings > Languages

The screen should look similar to the following:

From this screen you will notice the following controls:

  • Download current version of .pot files — To translate all expressions you will need the base “template” files. This link allows you to download these files
  • Force to use selected language — When this is set to anything other than “autodetect”, Access Anywhere will not perform any language negotiation with the browser and will always display in the selected language.
    • Default language — This sets the default language that is served if no mutual language can be negotiated with the user's browser.
  • Active languages — This controls the active languages and download links to the translation files for available languages.

New Translations

Before you begin any translation you should first ensure that you have suitable translation tools available. Access Anywhere uses the gettext standard, many free and paid tools exist, such as POEdit (Windows + Mac compatible) which can be used to ease the editing process. You should ensure you have something sufficient installed before proceeding.

If you are translating into language that does not exist, then you should start by clicking the Download current version of .pot files link.

In the download, you will receive a ZIP file that contains 3 POT files, each of which contain different translation strings used in different parts of the application.

The POT format stands for “PO Templates”. These templates are empty and in order to start translation, they will each need to be saved into .PO files.

With your tool, like POEdit, open one of the .POT files, for example, sme_code.pot.

As you are opening a POT file, most editors will not allow you to input any translations, and as highlighted, they will prompt you to convert it from a template file into a PO file. You should perform the conversion.

When prompted, select the language you wish to translate to.

The tool will then allow you to input translations.

Before going further, you should then save the file. You will need to ensure that the format is in line with the original. For example, as we opened sme_code.pot, and we are making French translations, we would save this as sme_code_fr.po (notice the appending of the language, and the file is now a PO).

The same procedure can be followed for the other files.

At this point you can make the translations inside of the PO files as you wish.

You may notice that some translation strings contain variables, like “%s”. These should be preserved in your translation strings as these contain variables that the application will insert.

Once you have completed the translations, you will have 3 .PO files containing translations.

Whilst you are saving changes to the PO files, some applications like POEdit automatically generate .MO files. These are compiled versions of the PO files and are also required by the server.

If your editor does not automatically compile the PO files into MO files, then most editors provide an option to convert into MO.

Once you have completed all translations, you should have 6 files (3 PO + 3 MO).

You should select these 6 files, and compress these into a single ZIP archive.

You can then revisit the Languages screen, and upload the ZIP file there. Once uploaded, your translations are then available and can be enabled.

Updating existing translations

The process for updating existing translations is similar to the process for creating new translations, however in this case the process will not start with POT files, it will start with PO files instead (already converted to PO).

You can then make you changes, compile, and upload to the server.

Updating translations with new Access Anywhere Server releases

When you update your installation to new versions, your existing translations will be persisted with the updates.

However, as with any new release, it is likely that new strings will have been introduced. With each release, the Access Anywhere's POT (template) files are updated, and you should perform a merge with the POT files to ensure you have no missing strings.

To do this, download the new POT files. For each POT file, like sme_code.pot, you will need to merge it with our previous translated PO file.

To merge the files you can use the msgmerge command, part of the gettext package, like follows:

msgmerge sme_code_fr.po sme_code.pot > sme_code_fr_new.po

This will merge the old PO file with the new template (maintaining existing translations) and create a new file called sme_code_fr_new.po. You can check the new file, and once happy rename it to the original name. Repeat this process for each PO and relevant POT file that exists.

Once done, follow the previous instructions for uploading your PO files to the Access Anywhere Server.

Troubleshooting

PO and POT Files can be found under

/var/www/smestorage/public_html/languages

Replacing text in the English ("en") language

English (“en”) is the base language. You cannot change the strings for English directly but you can add a new language and force that language to be used. At a high level the steps are:

  • Download the .pot files for the current language (“en”) using the link at the top of the Languages page.
  • Copy the .pot files to .po files(s), adding the language code to the names of the files as described on the doc. page, for example: “smecodeen.po”.
  • Edit the .po files that contain the strings strings that you want to change, replacing the empty message strings with the new values you want.
  • Compile all three .po files, producing three .mo files. All of these files should sit together.
  • Zip the six files (.po and .mo) and upload them to the server.
  • Set the newly uploaded language as the default language.

The .po files that you will be starting with are the base files for the Server. In these files the message IDs are the strings that Access Anywhere displays in its base language (English) by default, and the message strings are all empty.

You should find the message IDs that match the strings you want to replace and put the replacement values between the quotes of the associated message strings. You will probably have to make changes in all three .po files. Also, you will probably want to search the files for messages where the text you want to change is a substring of the message ID and change those message strings as well. You only need to edit the messages you want to change; leave the remainder as empty quotes.