Maison >développement back-end >Tutoriel Python >Prise en charge multilingue dans le framework Django

Prise en charge multilingue dans le framework Django

WBOY
WBOYoriginal
2023-06-17 11:12:091788parcourir

Le framework Django est un framework Web Python très populaire. Il offre un puissant support multilingue, permettant aux développeurs de développer facilement des sites Web multilingues. Dans cet article, nous explorerons comment la prise en charge multilingue est implémentée dans le framework Django et quelques bonnes pratiques.

Tout d'abord, comprenons comment la fonctionnalité multilingue du framework Django est implémentée. Django implémente le support multilingue en utilisant l'outil gettext. Cet outil nous aide à extraire des chaînes de texte du code source et à les traduire dans différentes langues. Dans Django, nous pouvons utiliser gettext comme méthode de traduction de Django, ou nous pouvons utiliser la méthode de traduction intégrée de Django. Quelle que soit la méthode que vous utilisez, elle nécessite les étapes suivantes :

  1. Extraire les chaînes de texte du code source.
  2. Utilisez l'outil de traduction pour traduire des chaînes de texte dans la langue cible.
  3. Sélectionnez une chaîne de texte traduite en fonction des paramètres de langue de l'utilisateur.

Discutons de ces étapes une par une.

  1. Extraire les chaînes de texte du code source

Dans Django, nous utilisons la commande gettext pour extraire les chaînes de texte qui doivent être traduites. Les fichiers Gettext dans Django sont généralement nommés django.po. L'outil gettext standard et l'outil gettext de Django prennent en charge l'utilisation de gettext dans le code pour marquer les chaînes de texte qui doivent être traduites. Par exemple :

from django.utils.translation import gettext as _

class MyView(View):
    def get(self, request):
        context = {
            'title': _('Hello World!'),
        }
        return render(request, 'mytemplate.html', context)

Dans le code ci-dessus, nous utilisons la méthode gettext de Django pour marquer la chaîne "Hello World!" Ensuite, nous devons exécuter gettext pour extraire la chaîne qui doit être traduite.

  1. Utilisez l'outil de traduction pour traduire la chaîne de texte dans la langue cible

La chaîne de texte extraite par gettext sera placée dans le fichier django.po. Nous pouvons éditer ce fichier à l'aide d'un éditeur de texte ou d'un éditeur po dédié pour traduire les chaînes dans la langue cible. Par exemple, nous pouvons traduire « Bonjour tout le monde ! » par « Bonjour tout le monde ! ».

  1. Sélectionnez une chaîne de texte traduite en fonction des paramètres de langue de l'utilisateur

Dans Django, nous pouvons obtenir les paramètres de langue de l'utilisateur via un middleware et les définir sur la session en cours. La communauté Django fournit de nombreuses excellentes bibliothèques tierces pour réaliser cette fonction, telles que Django-Language-utils et Django-Language-Switcher. Voici un exemple simple de middleware :

class LanguageMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        language = request.COOKIES.get('language')  # get language from cookies
        
        if language:
            translation.activate(language)  # set user language for the current session
            
        response = self.get_response(request)
        
        return response

Dans le middleware ci-dessus, nous obtenons le paramètre de langue de l'utilisateur à partir du cookie et le définissons sur la session en cours. Une fois que nous avons les paramètres de langue de l'utilisateur, nous pouvons utiliser _('Hello World!') pour obtenir la chaîne de traduction correcte.

En plus d'utiliser la commande gettext pour extraire les chaînes de texte qui doivent être traduites, Django fournit également des fonctions de traduction plus avancées. L'un d'eux est que les variables du modèle peuvent être traduites. Par exemple :

{% trans "Hello {{ name }}!" %}

Dans le modèle ci-dessus, nous avons utilisé la méthode de traduction intégrée de Django pour traduire la chaîne « Hello {{ name }} ! » Django reconnaît automatiquement les variables de modèle dans cette chaîne et les transmet à l'outil de traduction afin que l'outil de traduction puisse traduire correctement la chaîne.

La dernière chose à noter est que lorsque nous développons un site Web multilingue, nous devons utiliser des codes de langue pour identifier les différentes langues. Par exemple, l’anglais se dit en et le chinois se dit zh-cn. L'utilisation de codes de langue peut garantir que notre site Web peut prendre en charge différentes langues et ne causera pas de problèmes tels que des caractères tronqués.

En bref, le puissant support multilingue du framework Django permet aux développeurs de développer facilement des sites Web multilingues. Nous pouvons utiliser la commande gettext pour extraire la chaîne de texte qui doit être traduite et utiliser l'éditeur PO pour la traduire dans la langue cible. Nous pouvons ensuite utiliser un middleware pour obtenir les paramètres de langue de l'utilisateur et utiliser la méthode de traduction intégrée de Django pour obtenir la chaîne de traduction correcte. En fin de compte, nous devrions utiliser des codes de langue pour identifier les différentes langues.

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