User Tools

Site Tools

Translations of this page:

translations:start

Translating phpList

Separate parts of phpList are translated independently:

  • The application web interface for administrators
  • Public-facing pages (for list subscribers)
  • Contextual help in the application
  • Contextual info in the application
  • The documentation website

Pootle (translate.phplist.org)

Application web interface for administrators

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

How does this work:

  • The developers use special code that identifies the texts in the applications that are part of the language.
  • These texts are extracted from the code using Poedit.
  • The extraction of texts creates a POT file which is added to the codebase. 1)
  • This template file is updated on the translation website every so often, so that updates in the texts are passed on to the translation system.
  • The translations are passed back into the source code.

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 Translators Mailinglist 2)

Access procedure for new Pootle translators

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

  • Sign up to the translators mailinglist
  • Sign up to the Translation website and indicate your languages.
  • Post a message to the mailinglist to tell everyone what languages you want to be able to edit. If the language is not there, we'll add it.
  • Work your way through the translation until your language is 100%

The translation system has two modes for translations. One is to Suggest translations and the other one is to Submit translations. Anyone (even when not logged in) can send suggestions, but only approved accounts can submit the translations.

Once you have made a few changes in the translations, you can go to the phpList Dev 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

Pootle user permissions

To grant a user access, go to the language page spoken by that user, click on the 'Permissions' tab at the top, and add all the appropriate permissions for that person. It is not necessary to make the user a superuser on the Admin→Users page.

Pootle technical usage notes

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

  • sprintf codes. Some original language string can contain codes like '%d','%s' or '%0.2f'. These are texts where the %d is replaced in the code by some number. For more information read the PHP documentation.

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.

  • Page titles. The titles of pages, used in the main menu and the links to them, are taken from entries in the translation system that start with pagetitle:. For example
pagetitle:dbcheck

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: pootle only shows the msgid which is pagetitle:dbcheck. Please look for the original english string in adlin/locale/en/phplist.po which would give you “Verify the DB structure”, and translate that string

  • Page titles hover. The hover text for the titles of pages, used in the main menu and links to pages. It is the text that will show when the mouse is held over the link without clicking. This can be more explanation of the page where you will go when you click. For example
pagetitlehover:dbcheck

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: pootle only shows the msgid which is pagetitle:dbcheck. Please look for the original english string in adlin/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.

  • Terminology. For each language, you can generate a Glossary. phpList in the past has been a little confusing about certain terms, and even the English “translation” is now different from the original. Please be aware of the current English terminology, regardless of the original 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.

  • Encoding. All of phpList is in UTF-8. Regardless of anything you read in all kinds of places, use UTF-8 in your translations. There is no need to use HTML special characters, like é
  • Updates. phpList is continually updated and new texts will appear for translation. Changes are posted to the translators mailinglist, once a week, so that you can go back to keep your language up-to-date.

Adding a language

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

  1. Add the language in Pootle
    1. Login to Pootle as admin
    2. Go to Admin → Languages, and scroll to the end of the table
    3. Fill in the last table row (which is empty) with the details
      • Use the Pootle reference on plural forms to check the details
      • Click 'Save changes'
  2. Add the language to the Pootle project
    1. Go to Admin → Projects → phpList, and scroll to the end of the table
    2. Select the new language from the dropdown menu
      • Check 'Update against templates'
      • Click 'Save changes'
  3. Add the language to the phpList application
    1. TBA

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

Contextual help in the application

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

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

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

translations/start.txt · Last modified: 2017/07/31 12:44 by samtuke

Resources
Contact Us

e: info@phplist.com

Boring Bit

phpList is a registered limited company

UK Company No. 07582966

VAT Registration 122 0788 37

© phpList 2013