Table of Contents

Translating phpList

Separate parts of phpList are translated independently:

Weblate (translate.phplist.org)

Application web interface for administrators

The strings are translated on the translation website. This site runs Weblate to provide a mechanism to allow translation of phpList by members of the phpList community.

How does this work:

Everyone can add suggestions on the translation site. Only selected administrators are allowed to approve the translations. If you are interested to become a moderator for your language, let the team know on the Translation Channel.

Access procedure for new Weblate translators

In order to help out translating, you need to do the following:

Once you have made a few changes in the translations, you can go to the phpList Demo system and choose "Update translations" from the menu, under “System” to see the changes.

You can also try to run phpList on your local system

Why include English

If you include English as a language that you are interested in, you will see the actual texts that are used in the English language. This can at times be different from the “original word”. For example, initially (20 years ago) phpList used “message” a lot but the terminology was changed to be “Campaign” instead, using the language system.

Also, as explained below, there are “system tags” that need translating, and that may be slightly obscure in the original text.

For example

 pagetitlehover:about

which in the English version of the translation is

 pagetitlehover:More information about the phpList application

So, in this case, you would need to translate the “More information about the phpList application” part, which is why you want to have the English language as a reference.


Approve pending suggestions

When a new user account is created their rights level allows them only to suggest a translation on their language but not save it. For each language there are moderators who can approve the suggested translations and save them. To do so, you can visit a users profile and approve any suggested translations or go directly to a certain language and approve the strings that are translated by others. All the above can be performed only by approved accounts with moderator access.

Weblate technical usage notes

There are a few things that you need to know when you start or edit a translation

It is essential that the translation has the same codes in it. Otherwise the text will disappear completely. So, for example

Processed %d out of %d messages

needs to have at least two times %d in your translation.

You do not need to translate the “pagetitle:” bit, just the text after it. So, the example would be “Database check” as a translation.

Note: Weblate only shows the msgid which is pagetitle:dbcheck. Please look for the English string in admin/locale/en/phplist.po which would give you “Verify the DB structure”, and translate that string

You do not need to translate the “pagetitlehover:” bit, just the text after it. So, the example would be “Verify that the database structure is correct” as a possible translation.

Note: Weblate only shows the msgid which is pagetitle:dbcheck. Please look for the English string in admin/locale/en/phplist.po which would give you “Verify that the current database structure is correct for the current version of the code”, and translate that string.

user -> Subscriber
message -> Campaign
email -> Either "email address" or "email message" (depends on the context)

and there may be similar words that require a clear definition. It is up to the language managers to determine this per language. Language specific rules for the translation are collected in the Notes on Translations.

Adding a language

Adding a new language to phpList requires adding it to both phpList and the phpList application separately. Follow these steps:

Translations managed by dedicated repositories

Public-facing pages

Public-facing pages such as subscribe pages, which do not require admin authentication to access, use a separate translation system. The strings are stored in .inc files in the following Git repository: https://github.com/phpList/phplist-lan-texts. These are a dependency of the lan-help repository. The phplist-lan-texts needs to be cloned into the texts directory within the /lists directory.

Contextual help in the application

Contextual help text is stored in a Git repository and not handled by Weblate: https://github.com/phpList/phplist-lan-help

The files on this repo are used by the pop-up help buttons. When a new button is added the corresponding file should be added on this repo. Each button should have the parameter “topic” and the value must be equal to the name of the file that will popup when you click that button. Also the name of the file must be all lowercase.

To use contextual help text in a local development copy phpList, clone or download the above repository into the following directory of your phpList installation:

public_html/lists/admin/help

Also make sure to have https://github.com/phpList/phplist-lan-texts cloned on your local installation, if not then there will be a dependency problem.

Do not commit this folder to the phpList 3 repository (it should be ignored by git automatically thanks to .gitignore).

Contextual info in the application

Similar to help texts, these are stored in a dedicated repository, and should be checked out into the following folder: https://github.com/phpList/phplist-lan-info

public_html/lists/admin/info

Do not commit this folder to the phpList 3 repository (it should be ignored by git automatically thanks to .gitignore).

Documentation

Resources wiki

To translate pages of this wiki, register an account and message the Translators Mailing list requesting to be made a moderator for your language. You can then add translations in your language directly.

Manual

Due to the software which created it being no longer maintained, the phpList manual is currently not translatable. If you'd like to help fix that, please contact us.

See also

Notes on Translations Language specific rules for the translation