Traduire un fichier PO (gettext) en turc
Déposez votre .po ou votre .pot : Manuce rend le même fichier avec les msgstr en turc, l'en-tête Language et Plural-Forms posés, deux formes plurielles et des variables printf vérifiées. Le turc a ses propres pièges (suffixes collés aux variables, i avec ou sans point, nom invariable après un nombre), détaillés ici avec ce qu'il faut préparer et contrôler.
Combien ça coûte
Pour un fichier PO (gettext) d'environ 2 500 mots de valeurs, vers le turc :
Comprendre, usage interne.
Prêt à transmettre, par le spécialiste technique.
Relecture croisée. Pour ce qui engage.
Prix pour une langue, mise en page d'origine comprise. TVA non applicable, article 293 B du CGI. Le devis exact, calculé sur le nombre de mots de votre fichier, s'affiche avant paiement.
Suffixes et ordre des mots : ce que le turc fait à vos %s
Le turc est une langue agglutinante : les cas grammaticaux s'expriment par des suffixes collés au mot, et ces suffixes changent selon la dernière voyelle du mot (harmonie vocalique). Un nom propre prend une apostrophe avant le suffixe : Ankara'ya, İzmir'e. Or une variable %s est inconnue au moment de la traduction : impossible de savoir s'il faut 'a ou 'e.
La traduction contourne donc le suffixe plutôt que de le deviner. Pour msgid "Copy to %s", une tournure sûre est msgstr "%s konumuna kopyala" (« copier vers l'emplacement %s ») : le suffixe porte sur konum, pas sur la variable. Même logique pour "%s adlı dosya silindi" (« le fichier nommé %s a été supprimé »).
Le turc place le verbe en fin de phrase et inverse souvent l'ordre des compléments. "Showing %1$d of %2$d results" devient naturellement "%2$d sonuçtan %1$d tanesi gösteriliyor" : les deux nombres changent de place. C'est possible uniquement parce que la source utilise des variables positionnelles. Avec %d ... %d, l'ordre est figé et la phrase turque doit être tordue pour le respecter.
Pluriels : deux formes, souvent identiques
Le turc a deux catégories de pluriel CLDR, one et other. Le fichier rendu contient donc msgstr[0] et msgstr[1], avec l'en-tête Plural-Forms correspondant.
Particularité qui surprend : après un nombre, le nom reste au singulier. On écrit 3 dosya, jamais 3 dosyalar. Résultat attendu :
msgid "%d file"/msgid_plural "%d files"msgstr[0] "%d dosya"msgstr[1] "%d dosya"
Les deux formes identiques ne sont pas une erreur. Le suffixe pluriel -lar/-ler n'apparaît que sans nombre : Dosyalar silinsin mi? (« Supprimer les fichiers ? »).
Certains projets anciens déclarent le turc avec une seule forme (nplurals=1). Si votre code ou votre plateforme de traduction attend ce réglage, comparez l'en-tête rendu avec celui de vos autres catalogues avant de fusionner.
İ et ı, majuscules et encodage
Le turc distingue quatre lettres là où l'anglais en a deux : i/İ (avec point) et ı/I (sans point). İptal (« Annuler ») commence par un İ majuscule pointé. Si votre application met les libellés en capitales avec des règles anglaises, iptal devient IPTAL au lieu de İPTAL, et le mot se lit autrement. À l'inverse, une mise en minuscules faite en locale turque sur un identifiant transforme INFO en ınfo.
- Laissez la casse dans le msgstr plutôt que de la recalculer dans le code.
- Si vous utilisez une transformation CSS en capitales, déclarez
lang="tr"sur la page.
Côté encodage, Manuce conserve celui du fichier. Un catalogue déclaré charset=ISO-8859-1 ne peut pas contenir ğ, ı, ş, İ ni Ş. Passez l'en-tête à Content-Type: text/plain; charset=UTF-8 avant de déposer le fichier.
Registre : les interfaces turques vouvoient (siz) et emploient l'impératif court sur les boutons (Kaydet, Sil). Le contexte msgctxt distingue par exemple Aç (bouton « Ouvrir ») de Açık (état « ouvert »).
Ce que Manuce rend, et ce qu'il ne fait pas
Vous récupérez le même fichier, prêt à remettre dans le projet : indentation, ordre des entrées, guillemets, commentaires, fins de ligne, encodage et BOM conservés. Seules les valeurs changent.
msgctxt,msgid_pluralet commentaires#.,#:,#,sont conservés ; le contexte et les commentaires guident la traduction.- Un
.potrevient en.poturc, avec Language et Plural-Forms posés. - Chaque msgstr est comparé à la source :
%s,%d,%1$set balises. En cas d'écart persistant, la valeur source est gardée et le rapport le signale. - Ne sont pas traduits : clés, valeurs vides, URL, adresses email, nombres, couleurs, formats de date, identifiants et tout ce qui est marqué non traduisible.
- Un rapport liste les chaînes traduites et celles laissées telles quelles, avec la raison.
Manuce ne compile pas le .mo : c'est à faire chez vous. Il ne reçoit ni glossaire ni consignes de terminologie. Pour un nom de produit à garder en anglais, vérifiez l'extrait gratuit, puis la traduction. Le turc est une langue à supplément (coefficient ×1,25), compté sur les mots des valeurs, clés et balises exclues.
Préparer le catalogue et vérifier le résultat
Avant le dépôt :
- Régénérez le
.potpour qu'il reflète le code actuel. - Passez en positionnel (
%1$s,%2$s) toute chaîne qui contient plusieurs variables : le turc en aura besoin pour réordonner. - Ajoutez un
msgctxtou un commentaire#.aux chaînes courtes ambiguës (Open, Clear, Archive). - Évitez de construire des phrases par concaténation (
_("Delete") + " " + name) : le suffixe turc ne peut pas s'y accrocher.
Après livraison :
- Lancez
msgfmt --checksur le.porendu. - Testez les pluriels avec 0, 1 et 2.
- Vérifiez la place prise par les libellés : les mots turcs, chargés de suffixes, sont souvent plus longs, comme Değişiklikleri kaydet pour « Save changes ».
- Relisez les écrans en capitales pour repérer un I sans point mal placé.
En pratique
- Mettez à jour le .pot ou le .po et passez son en-tête en UTF-8.
- Déposez le fichier : devis immédiat, puis lisez l'extrait gratuit en turc.
- Récupérez le .po turc et le rapport des chaînes laissées telles quelles.
- Lancez msgfmt --check, compilez le .mo et testez pluriels et capitales dans l'interface.
Questions fréquentes
Pourquoi msgstr[0] et msgstr[1] sont-ils identiques dans mon .po turc ?
En turc, le nom reste au singulier après un nombre : « 3 dosya », pas « 3 dosyalar ». Les deux formes sont donc souvent les mêmes, et c'est correct. Le suffixe pluriel n'apparaît que dans les phrases sans nombre.
Puis-je envoyer un .pot au lieu d'un .po ?
Oui. Le modèle revient sous forme de .po pour le turc, avec les en-têtes Language et Plural-Forms posés et deux formes plurielles par entrée concernée. Pensez à le régénérer depuis le code avant de l'envoyer.
Que se passe-t-il si une variable %s ou %1$s disparaît dans la traduction ?
Chaque valeur traduite est comparée à la source, variables et balises comprises. Si l'écart persiste, la chaîne source est conservée telle quelle et le rapport l'indique : votre catalogue reste compilable.
Mon nom de produit restera-t-il en anglais ?
Manuce ne reçoit pas de glossaire. Les identifiants, URL et éléments marqués non traduisibles ne sont pas traduits. Pour un terme précis, vérifiez l'extrait gratuit, puis la traduction livrée.
Manuce livre-t-il le fichier .mo compilé ?
Non, vous recevez le .po dans le même format que l'original. La compilation en .mo se fait chez vous, par exemple avec msgfmt, ce qui permet aussi de contrôler le fichier avec l'option --check.
Le spécialiste qui s’en charge
Ce sujet est confié à Dédale, le spécialiste technique. Voir comment il travaille.
Le même fichier, vers une autre langue
Vers le turc, d’autres fichiers
À lire aussi
Testez sur votre fichier, gratuitement
Un extrait de votre fichier traduit au niveau choisi, avant tout paiement. Vous jugez, puis vous décidez.