Maison  >  Article  >  développement back-end  >  Django prend en charge les méthodes de configuration chinoises

Django prend en charge les méthodes de configuration chinoises

巴扎黑
巴扎黑original
2017-08-17 11:10:383342parcourir

J'ai créé un projet Django aujourd'hui, en utilisant la version actuelle de Django 1.9.6. Après avoir créé le projet, définissez la prise en charge de l'affichage chinois dans settings.py (le plus simple, comme changer l'anglais par défaut de l'interface d'administration en chinois), définir

TIME_ZONE = 'Asia/Shanghai'
LANGUAGE_CODE = 'zh-cn'

Bien sûr, TIME_ZONE ne précise que le fuseau horaire et n'a rien à voir avec l'affichage chinois. La valeur par défaut est modifiée ici. En conséquence, une erreur s'est produite lors de l'exécution du projet, comme suit :

django IOError: No translation files found for default language zh-cn

C'est-à-dire que le fichier de localisation correspondant à zh-cn est introuvable. D'une manière générale, le dossier de localisation correspondant à l'encodage zh-cn est zh_CN. Je suis allé dans le répertoire d'installation de Django pour rechercher zh_CN. Le résultat n'a en effet pas été trouvé. Il était dans le dossier locale d'une série de sous-répertoires sous le sous-répertoire contrib. du répertoire d'installation de Django, il n'y a pas de zh_CN, mais zh_Hans. Je ne sais pas pourquoi cette version de Django n'a pas le dossier zh_CN, c'est peut-être un bug. Certaines personnes sur Internet ont dit que ce problème pouvait être résolu en copiant l'intégralité du répertoire zh_Hans et en le nommant zh_CN. Je l'ai essayé et cela a effectivement fonctionné si je l'exécutais à nouveau. Le chinois était affiché sur l'interface d'administration. Quant à savoir s'il y a des dangers cachés dans cette méthode relativement copiée, je ne sais pas encore. Nous en reparlerons plus tard lorsque nous la rencontrerons.

Mais cela dit, il existe en fait un moyen orthodoxe de générer des fichiers internationalisés, la commande suivante :

django-admin.py makemessages -l zh_CN

Mais cela nécessite le composant gettext. Si vous développez sous Windows, alors. Vous devez installer ce composant vous-même,

Téléchargez gettext-runtime-X.zip et gettext-tools-X.zip sur http://ftp.gnome.org/pub/gnome/binaries/win32/ dépendances/ Après avoir décompressé la dernière version (remarque : X est le numéro de version), les deux répertoires bin peuvent être fusionnés et placés dans les variables d'environnement système. Cependant, je n'ai pas vérifié cette méthode. Si vous êtes intéressé, vous pouvez l'essayer.

Plus tard, j'ai pensé que l'ancienne version de Django avait zh_CN Pour dire que c'est un bug, c'est probablement un niveau relativement bas et ne devrait pas être le cas. J'ai donc vérifié à nouveau et découvert que zh_Hans avait peut-être remplacé zh_CN. Han signifie caractères chinois, s signifie simplifié. Quoi qu'il en soit, je l'ai défini sur LANGUAGE_CODE = 'zh-hans' et il affiche le chinois normalement.

zh-cn expirera dans Django1.9, le nouveau format est zh-hans, mais drf3.1.0 ne prend pas en charge ce type de langage.

Ce qui précède signifie dans django1.9 , zh-cn a expiré et peut être remplacé par zh-hans, mais certains modules tiers de Django n'ont peut-être pas rattrapé ce changement.

En bref, les gens bienveillants ont des opinions différentes. En fait, il n'est pas nécessaire de l'étudier comme ça, je me suis soudainement plus intéressé à cela, alors je l'ai étudié pendant un moment.

ps : Il existe différentes manières d'écrire LANGUAGE_CODE = 'zh-cn' à de nombreux endroits sur Internet, notamment zh_CN, zh-CN, etc. Certaines personnes disent aussi qu'on ne peut utiliser que telle ou telle écriture méthodes, etc. Quoi qu'il en soit, je ne sais pas. Après avoir vu la différence, j'ai tout essayé et je n'ai trouvé aucun problème.

En passant, je n'ai jamais su ce que signifiaient USE_I18N et USE_L10N dans settings.py jusqu'à ce que je voie le paragraphe suivant :

Une fois le service Web configuré, peut recevoir des visites d'utilisateurs de différents pays du monde entier. Cela nécessite que les développeurs adaptent le logiciel à différentes langues, c'est-à-dire l'internationalisation et la localisation. Internationalisation

-- Internationalisation, il y a 18 lettres entre i et n, appelées I18N. Localisation -- localisation, avec 10 lettres entre l et n, abrégée en L10N. L'internationalisation signifie que les produits Web

ont le potentiel d'être appliqués n'importe où, pour les développeurs de programmes ; la localisation fait référence au processus de traduction réelle d'un programme international destiné à être utilisé dans une région spécifique, pour les traducteurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:fonction python fonction dir()Article suivant:fonction python fonction dir()