Localization - The Translation Portal
This group is intended as a resource for translators - to share tips and tricks how to create and maintain a localized version of PmWiki:
- Translate the strings which PmWiki uses in your local language
- Prepare a local version of PmWiki's documentation pages
The installation, configuration and usage of other language(s) support, is documented separately in PmWiki.Internationalizations (Part of the distribution while this group Localization is not).
Language
Please, write here in English - don't worry about fixing spelling errors or typos :-).
First time translation
Start here when there is no translation for your language and you want to create one.
Before anything else, subscribe to the english mailing list. Pm (Patrick Michaud, the owner of PmWiki) will acknowledge your wish and give you some basic information. You can also ask for a localized mailing list if you have several volunteers working on your localization project.
Basically there are two steps involved in creating a local translation on pmwiki.org:
- create an XLPage in the appropriate PmWikiXx group (where "Xx" is the appropriate two-letter language code),
- create the "home page" for the group as PmWikiXx/PmWikiXx .
pmwiki.org tries to help out a bit by providing page templates for each of the above pages(XLPageTemplate and PmWiki.PmWiki). For example, if someone wanted to create a Māori translation (language code "mi"), they would fill in the pages at
- PmWikiMi/XLPage?action=edit
- PmWikiMi/PmWikiMi?action=edit
You will probably also want to include your language in the PmWiki.OtherLanguages page to have it listed appropriately on main PmWiki homepage and in other pages in the PmWiki group.
That's all that really *needs* to be done to provide a localization.
Completing a translation
However, if you want to go further, and provide translations of documentation or other files, then it's simply a matter of creating pages within the new group. As far as what pages should be translated, and how they should be translated -- I tend to leave those decisions up to whomever is doing the work of translating. :-) Pm
XLPage
Once i18n-Xx.zip file is installed (see this page for instructions), the PmWikiXx.XLPage is available from the wiki itself and can be used to translate or change the translated words without further server change. Any fix in this page is immediately visible on the wiki. Of course, Xx stands for your Langage code.
Templates
- XLPageTemplate Contains a list of strings to be translated which PmWiki uses.
- XLPageCookbookTemplate Contains a list of strings to be translated for cookbook addons.
- Sample Config File Localization Contains additional localizations which need to be implemented through insertion in the local/config.php file.
- StateOfTranslationTemplate is the list of the English documentation pages, to help in the creation of local translation pages
- TerminologyTemplate
For Cookbook Recipe Authors
- If your recipe uses text, use
$[Your Text in English]
- If you need a function to translate a specific phrase, use XL()
- For example,
XL("Your Text in English");
- For example,
- If you need to translate all the phrases inside something, use FmtPageName()
- For example,
FmtPageName("<div class='example'>$[Your Text in English]</div>", $pagename);
- For example,
Resources
- PmWiki.org way of life Some tips on the online wiki living
- Other Languages list of languages with existing PmWiki translation
- https://pmwiki.org/wiki (bottom of page) same than OtherLanguages (notice the different layout, given by a conditional included in the page)
- XLPage Usage Describes the locations where the XLPage strings are used in the PmWiki core.
- ISO 639: Standard two-letter language codes from W3C
- Translation Mechanism How the translations are moved from PmWiki.org to files
- Translating the FAQ
And the page which is distributed with the download, to explain PmWiki installers how to install the local version :
- PmWiki.Internationalizations How to make the Internalization available on a wiki (the result translators try to achieve)
Example of localized pages structure
In French, for example, we have the following structure:
- AcceptPathInfo
- AdminFr
- Administrateur du Wiki
- Administration des fichiers joints
- Administration des mots de passe
- Administration du site
- Affichage conditionnel
- AfficherUneImage
- Aide
- Approbation des URLs
- Architecture d'un wiki
- AttributsDeGroupe
- Audiences
- Authentification utilisateur
- Autres langues
- Autres variables
- Avantages du stockage en fichiers
- Bac à sable
- BacASable
- Balises personnalisées
- Barre d'édition
- Besoins système
- Bon style
- Caractères de balises
- Caractères spéciaux
- Catégories
- ChangementDuGroupePrincipal
- ChangementDuNomDeMenu
- ChangerLesURLPmWiki
- CheminDeRecherche
- Comment lister les pages
- CommentMarkup
- Configuration initiale
- Configuration locale
- Configurer les liens InterMap
- Contributeurs
- Couleurs des styles Wiki
- Création automatique de vignettes
- Créer de nouvelles pages
- CustomizeShellPrompt
- DiminutionBandePassante
- Directives
- Documentation des audiences
- DossiersEtFichiers
- Dépannage
- Désinstallation de PmWiki
- EditerParDoubleClick
- Edition de base
- EditQuickReference
- EffacerHistorique
- Entêtes de groupe
- EnvoiDeCourriel
- Etat de la Traduction
- EtatDeLaTraduction
- Exemples de WikiStyles
- Expressions fonctionnelles
- FAQ
- Fermes Wiki
- Feuille de route
- Feuilles de données vers PmWiki
- FichierDeConfiguration
- Fichiers joints
- Financer Patrick Michaud
- Fonctionnalités de PmWiki
- FormatageDesTableauxSimples
- Formulaires
- GestionDesSources
- Glossaire
- GroupFooter
- GroupHeader
- Guide de documentation
- Historique de page
- HomePage
- Hébergeurs
- Images
- Inclure d'autres pages
- Index alphabétique
- Index compléments
- Index de la documentation
- Index de la documentation d'administration
- Index des balises
- IndexDocumentation
- Installation
- Internationalisation
- Introduction
- LayoutBasics
- Les actions possibles
- LesFermesEnBref
- Lien de création de favoris
- Liens
- Liens InterMap
- Liste de blocage
- Liste des caractères spéciaux
- Liste des pages de PmWikiFr
- ListeDesTraducteurs
- Listes de diffusion
- Menu
- Messages d'erreur
- Mise en page évoluée
- Mise à jour
- ModifsDuGroupe
- Modèles de thèmes
- Mot Wiki
- Mots de passe
- MtlTest
- MultipleWikis
- Notes de versions
- Notes à propos de la conception
- Notification par courriel
- Notification par courriel
- Page non trouvée
- Page Wiki
- PageListes
- Pages de site
- PatrickMichaud
- PerGroupCustomizations
- Personnalisation par groupe
- Philosophie de PmWiki
- Pm
- PmWiki
- PmWiki
- PmWiki2PDF
- PmWikiFrQuestions
- PmWikiUsers
- Politique de traduction
- Prestataires, consultants, développeurs et designers spécialiste wiki : pmwiki
- Préférences du site
- Raccourcis clavier
- RecentChanges
- Recherche
- Recherche références
- RSS
- Règles de mise en forme
- Sandbox
- SautsDeLigne
- Search
- SideBar
- Styles Wiki personnalisés
- SuccessStories
- Suivi d'auteur
- Supprimer une page
- Sécurité
- Table des matières
- Tableaux
- Tableaux évolués
- TailleLimite
- Terminologie
- TestTom
- Thèmes
- ToutesLesModifs
- traduction du fichier doc/sample_config.php de la versions 2.2.0 beta 54 (et beta 63)
- Téléchargement
- UploadQuickReference
- Variables
- Variables d'emplacements
- Variables d'édition
- Variables de base
- Variables de liens
- Variables de mise en page
- Variables de page
- Variables pour l'internationalisation
- Variables pour le téléchargement
- Variables pour listes de pages
- Variables textuelles de page
- WikiEnUneMinute
- WikiGroupes
- WikiStructure
- WikiStyles
- WikiTrails
- WikiUtilisateurs
- WikiWikiWeb
- XLPage
- XLPageCookbook
- Éditions simultanées
- From the pmwiki home page we follow the (bottom of page) French link. This link goes to a French translation of the main page, with three additional links to translation-relevant pages.
Should the page titles be translated ?
Whether or not document page names are translated is up to the individual translator, e.g.:
- the German translation mainly uses the english page names
- the French translation uses translated page names, which need a careful follow-up of already translated page and page interlinks. Page titles have been later set back to english.
In any case, the title appearing to the user can be set by the directive (:title title of the page:)
, hiding the real page name (which is still visible in the address name).
A link feature available since version 2.1 helps with page interlinks; now titles can be displayed instead of the link name:
[[PageName|+]]
displays the real page title and not 'PageName'. This means that anywhere you use the link to the english name, the title of the page is displayed instead of the page name. With that, if page names are not translated, the links no longer needs to be translated; it is only needed to give local titles to local pages. When writing or translating a page, simply add the |+ to any links and the translation is done.
Also pagelists in a given language can use the format 'title' which display a list with page titles (in local language) instead of page names. You can list all pages of a given translation with the following call:
[[PmWikiXx?action=search&q=PmWikiXx/&fmt=title]]
Starting with PmWiki version 2.2.14 (PITS:01157) the title of several technical pages is automatically translated, if the corresponding string is provided in the XLPage, without the need to add a (:title <PageTitle>:)
directive in that page. Also the [[PageName|+]]
markup supports this feature, to translate the link text automatically. This is especially helpful for those pages that initially do not exist, like RecentChanges
. A separate section "PageTitle/LinkText technical pages" with some entries is added to the XLPageTemplate for this feature.
But note the priority order to take the PageTitle/LinkText:
- if available, taken from the
(:title:)
directive - if available, taken from the XLPage entry
- otherwise just take the PageName
More specifically the following page names are included, including most default pages in the Site and SiteAdmin groups:
(All)?(Site|Group)(Header|Footer|Attributes) (All)?Recent(Changes|Uploads) (Auth|Edit)Form (Block|Auth)List (Side|Left|Right)Bar (Wiki)?Sandbox \\w+QuickReference \\w+Templates ApprovedUrls AuthUser InterMap NotifyList PageActions Site(Admin)?
where "(...)?" means an optional part, "(a|b)" means "a or b", and "\\w+" means a number of letters.
So, considering everything, it is generally recommended to stick to the English page name, and use the above tools to hide this from users.
If adopted, you can then set in the page GroupFooter
the following (which is not quite ok in this group but should work in your local language group):
%define=trad block color='#060' bgcolor=#cf9 border='1px solid #060' padding='3px' font-size='smaller'% ---- %trad% (:if exists PmWiki.{$Name}:) Traduction of [[(https://www.pmwiki.org/wiki/)PmWiki.{$Name}]] -(:elseif exists Site.{$Name}:) Traduction of [[(https://www.pmwiki.org/wiki/)Site.{$Name}]] - (:ifend:) Original page on [[(https://www.pmwiki.org/wiki/){$FullName}]] - [[$[Backlinks]->A?action=search&q=link={$FullName}&fmt=title]]\\ (:if (equal "{$ScriptUrl}" "https://pmwiki.org/wiki") or (equal "{$ScriptUrl}" "https://www.pmwiki.org/wiki"):) Last modifications:\\ [[{$FullName}]]: {$LastModified}\\ (:if exists PmWiki.{$Name}:) [[PmWiki.{$Name}]]: {PmWiki.{$Name}$LastModified} (:ifend:) |
Original page on Localization.Localization - Backlinks |
If English names are maintained for the translated pages, you can then make a comparative list by creating a page 'ListLocal' and writing in it the following (replace PmWikiXx
by your local group). Note that the pagelist directive must be placed on a single line: it has been divided onto multiple lines here for presentation reasons only:
(:pagelist fmt=PmWikiXx.ListLocal#translation group=PmWiki order=-time -RecentChanges -DocumentationGuidelines-Comments:) [[#translation]] (:if equal {<$Group}:) (:table border='1' cellspacing='0' cellpadding='0':) (:cellnr align=center colspan=2:)'''Original page `PmWiki''' (:cell align=center colspan=2:)'''Translation `PmWikiXx''' (:cellnr align=center:)Page name (:cell align=center:)Last modified (:cell align=center:)Last modified (:cell align=center:)Page name (:if:) (:cellnr:)[[{=$FullName}|+]] (:cell:){=$LastModified} (:cell:){PmWikiXx.{=$Name}$LastModified} (:cell:)[[PmWikiXx/{=$Name}|+]] (:if equal {>$Group}:) (:tableend:) (:if:) [[#translationend]]
As an example of the result PmWikiFr.ListLocal
Existing translations
Note: the page listing does not work for those language groups which use UTF-8 character encoding and use those characters in the pagenames.
Language | PmWiki2 | Pages | |
---|---|---|---|
English | PmWiki | List | |
Arabic | PmWikiAr | List | |
Bulgarian | PmWikiBg/PmWikiBg | List | |
Catalan | PmWikiCa | List | |
Czech | PmWikiCs/PmWikiCs | List | |
Danish | PmWikiDa | List | |
German | PmWikiDe | List | |
Spanish | PmWikiEs/PmWikiEs | List | |
Estonian | PmWikiEt/PmWikiEt | List | |
French | PmWikiFr | List | |
Italian | PmWikiIt/PmWikiIt | List | |
Dutch | PmWikiNl | List | |
Lithuanian | PmWikiLt | List | |
Norwegian | PmWikiNo/PmWikiNo | List | |
Polish | PmWikiPl/PmWikiPl | List | |
Portuguese | PmWikiPt/PmWikiPt | List | |
Brazilian Portuguese | PmWikiPtBr | List | |
Romanian | PmWikiRo/PmWikiRo | List | |
Russian | PmWikiRu/PmWikiRu | List | |
Shqip | PmWikiSq/PmWikiSq | List | |
Swedish | PmWikiSv/PmWikiSv | List | |
Slovak | PmWikiSk/PmWikiSk | List | |
Slovenian | PmWikiSi/PmWikiSi | List | |
Turkish | PmWikiTr | List | |
Taiwan | PmWikiTw/PmWikiTw | List | |
Vietnamese | PmWikiVi/PmWikiVi | List | |
Chinese | PmWikiZhCn/PmWikiZhCn | List | |
Chinese | PmWikiZhTw/PmWikiZhTw | List |
Check Localization of this group
- xlpage-i18n
- Locale
This page may have a talk page: Localization.Localization-Talk.