Traduire une application Django en chinois simplifié
Générez locale/zh_Hans/LC_MESSAGES/django.po avec makemessages, puis déposez-le sur Manuce. Vous récupérez le même fichier, msgstr remplis en chinois simplifié, variables et balises contrôlées, prêt pour compilemessages. Ce qui ne vit pas dans le .po reste à votre charge\u00a0: polices, réglages de langue et contenus en base.
Combien ça coûte
Pour les fichiers de langue d'une application Django totalisant environ 3 000 mots, vers le chinois :
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.
zh_Hans, zh-hans, zh-CN\u00a0: bien nommer la langue
Pour Django, le chinois simplifié s'écrit zh-hans dans LANGUAGES et LANGUAGE_CODE, et zh_Hans pour le dossier de traduction. La commande django-admin makemessages -l zh_Hans produit donc locale/zh_Hans/LC_MESSAGES/django.po. Les anciens noms zh_CN ou zh-cn sont à éviter\u00a0: Django sait rattacher un navigateur qui annonce zh-CN à zh-hans, à condition que LocaleMiddleware soit actif.
Le chinois traditionnel (zh_Hant, Taïwan, Hong Kong) est une langue distincte chez Manuce, et un fichier distinct dans votre projet\u00a0: les caractères et parfois le vocabulaire diffèrent, «\u00a0logiciel\u00a0» s'écrit 软件 en simplifié et 軟體 à Taïwan. Commander les deux revient à commander deux langues, ce qui déclenche la remise de 20\u00a0% sur l'ensemble.
Vérifiez aussi l'en-tête du fichier. Le chinois n'a qu'une catégorie de pluriel («\u00a0other\u00a0»)\u00a0; la ligne attendue est Plural-Forms: nplurals=1; plural=0;. Un fichier copié depuis une autre langue garde souvent nplurals=2. Comme Manuce ne modifie que les valeurs, l'en-tête que vous déposez est celui que compilemessages lira.
Ce que le chinois change dans vos msgstr
Quelques règles que vous retrouverez dans le fichier rendu, utiles pour le relire\u00a0:
- Ponctuation pleine chasse.
"Saved."devient"已保存。","Email:"devient"邮箱:". Aucune espace autour de ces signes. Un gabarit qui ajoute lui-même un deux-points après le libellé produira un signe latin au milieu du chinois. - Pas d'espaces entre les mots. Une chaîne construite par concaténation dans le code (
_("Delete") + " " + name) laissera une espace parasite. Préférez une seule chaîne\u00a0:_("Delete %(name)s?"), rendue"删除 %(name)s?". - Ordre des mots.
"Welcome back, %(name)s"peut devenir"%(name)s,欢迎回来". Avec des variables nommées, le déplacement est sans risque\u00a0; avec deux%sanonymes, l'ordre est figé et la phrase sonne faux. - Un seul pluriel. Pour
ngettext("%(count)s file", "%(count)s files", n), il n'y a qu'unmsgstr[0]\u00a0:"%(count)s 个文件", avec le classificateur 个 entre le nombre et le nom. - Ambiguïtés. «\u00a0Open\u00a0» peut être 打开 (ouvrir un fichier) ou 营业中 (boutique ouverte). Un
pgettext("store status", "Open")ou un commentaire#. Translators:inscrit le sens dans le fichier. - Registre. 您 est poli, 你 plus direct\u00a0; décidez lequel convient à votre public et vérifiez-le sur l'extrait gratuit.
En longueur, le chinois compte deux à trois fois moins de caractères, mais chaque caractère est plus large\u00a0: un bouton occupe à peu près la même place qu'en version source.
Ce que Manuce rend, et ce qu'il ne fait pas
Vous déposez django.po\u00a0; vous récupérez le même fichier, dans le même format, prêt à remettre dans locale/zh_Hans/LC_MESSAGES/ puis à recompiler avec compilemessages. Indentation, ordre des entrées, guillemets, commentaires, fins de ligne, encodage et BOM sont conservés\u00a0: seules les valeurs changent. Les msgid restent intacts, puisque ce sont les clés que Django recherche.
- Les variables
%(name)set{name}sont vérifiées\u00a0: chaque valeur chinoise est comparée à la source, variables et balises comprises. - En cas d'écart persistant, la valeur source est gardée et le rapport le dit\u00a0: la chaîne reste dans la langue d'origine plutôt que de casser le formatage au rendu.
- Ne sont pas traduits\u00a0: clés, valeurs vides, URL, adresses email, nombres, couleurs, formats de date, identifiants, et tout ce qui est marqué non traduisible.
- Le rapport liste les chaînes traduites et celles laissées telles quelles, avec la raison.
Ce que Manuce ne fait pas\u00a0: lancer makemessages ou compilemessages, modifier settings.py, vos gabarits ou votre CSS. Il ne traduit pas ce qui n'est pas dans le fichier, comme les contenus enregistrés en base (fiches, articles saisis dans l'admin). L'affichage des dates, du type 2024年5月3日, dépend des formats de langue de Django, pas du .po. Enfin, Manuce ne produit pas de traduction assermentée\u00a0: si vos conditions d'utilisation en chinois exigent une version certifiée, il faut un traducteur expert.
Le chinois est une langue à supplément (coefficient ×1,6 sur le prix au mot)\u00a0; le prix porte sur les mots des valeurs, clés et balises exclues.
Préparer le fichier, puis vérifier après compilemessages
- Utilisez des variables nommées dès qu'une chaîne en contient plus d'une\u00a0; makemessages signale d'ailleurs les chaînes à plusieurs
%sanonymes. - Traitez les entrées marquées
#, fuzzyavant le dépôt\u00a0: compilemessages les ignore, et comme les commentaires sont conservés, la marque le sera aussi. - Si votre JavaScript appelle
gettextcôté navigateur, ses chaînes sont dansdjangojs.po, un second fichier à déposer. - Après compilation, affichez l'interface en
zh-hans. Contrôlez la police\u00a0: une police web limitée aux caractères latins ne contient pas les hanzi, et le navigateur bascule alors sur une police système, parfois disparate. Prévoyez dansfont-familyune police chinoise, par exemple"PingFang SC", "Microsoft YaHei", "Noto Sans SC". - Regardez les retours à la ligne\u00a0: le chinois se coupe entre presque tous les caractères, mais pas avant 。 ou ,. Une règle
word-breakpensée pour l'anglais peut produire des coupures étranges. - Relisez les écrans où une variable touche du chinois. L'usage d'une espace entre chiffres latins et hanzi varie (
3 个文件ou3个文件)\u00a0: choisissez une convention et tenez-vous-y.
En pratique
- Ajoutez ('zh-hans', '简体中文') à LANGUAGES et lancez django-admin makemessages -l zh_Hans.
- Vérifiez l'en-tête Plural-Forms (nplurals=1) et réglez les entrées fuzzy, puis déposez django.po.
- Lisez l'extrait gratuit pour valider le registre (您 ou 你) et le vocabulaire, puis choisissez le niveau.
- Replacez le fichier dans locale/zh_Hans/LC_MESSAGES/, lancez compilemessages et lisez le rapport.
- Testez l'interface en zh-hans\u00a0: police, retours à la ligne, ponctuation pleine chasse.
Questions fréquentes
Dois-je nommer le dossier zh_Hans ou zh_CN\u00a0?
Utilisez zh_Hans pour le dossier et zh-hans dans LANGUAGES\u00a0: ce sont les noms que Django reconnaît pour le chinois simplifié. zh_CN est un ancien nom. Avec LocaleMiddleware, un navigateur qui annonce zh-CN est rattaché à zh-hans.
Comment sont traités mes pluriels ngettext\u00a0?
Le chinois n'a qu'une forme\u00a0: chaque entrée plurielle n'a besoin que de msgstr[0], par exemple «\u00a0%(count)s 个文件\u00a0». Vérifiez que l'en-tête indique nplurals=1; plural=0;, car Manuce ne modifie que les valeurs et laisse l'en-tête tel que vous l'avez déposé.
Que se passe-t-il si une variable disparaît dans la traduction\u00a0?
Chaque valeur traduite est comparée à la source, variables et balises comprises. Si l'écart persiste, la valeur source est gardée et le rapport le signale. Vous évitez ainsi une erreur de formatage au rendu.
Le chinois traditionnel est-il fourni en même temps\u00a0?
Non. Le traditionnel (Taïwan, Hong Kong) est une langue distincte chez Manuce et un dossier zh_Hant distinct dans Django. Commander les deux compte pour deux langues, avec la remise de 20\u00a0% sur l'ensemble de la commande.
Les contenus de ma base de données seront-ils traduits\u00a0?
Non. Manuce traduit le fichier que vous déposez\u00a0; les textes saisis dans l'admin et stockés en base ne figurent pas dans django.po. Il faut les exporter séparément ou utiliser une solution de traduction des modèles.
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 chinois, 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.