[PYTHON] [Blender] Comment rendre les scripts Blender multilingues

Il y a eu un peu de discussion sur Twitter sur la façon dont les scripts Blender peuvent être multilingues, car la documentation de Blender est déroutante. À la suite de diverses enquêtes, j'ai réussi à prendre en charge plusieurs langues, je vais donc le présenter avec un exemple.

échantillon

Voici quelques exemples qui prennent en charge plusieurs langues. Cette fois, j'ai simplement essayé de prendre en charge les deux langues suivantes.

translation.py


import bpy

bl_info = {
    "name" : "Translation Test",
    "author" : "Nutti",
    "version" : (0, 1),
    "blender" : (2, 7, 0),
    "location" : "UV > Translation Test",
    "description" : "Translation Test",
    "warning" : "",
    "wiki_url" : "",
    "tracker_url" : "",
    "category" : "UV"
}

#Dictionnaire de traduction
translation_dict = {
    "en_US" :
        {("*", "Test: ") : "Test: %d"},
    "ja_JP" :
        {("*", "Test: ") : "Tesuto: %d"}
}


class TranslationTest(bpy.types.Operator):
    bl_idname = "uv.translation_test"
    bl_label = "Translation Test"
    bl_description = "Translation Test"
    bl_options = {'REGISTER', 'UNDO'}
    
    def execute(self, context):
        num = 50
        #Afficher les résultats de la traduction dans la barre de notification
        self.report({'INFO'}, bpy.app.translations.pgettext("Test: ") % (num))
        return {'FINISHED'}


def menu_func(self, context):
    self.layout.separator()
    self.layout.operator(TranslationTest.bl_idname)


def register():
    bpy.utils.register_module(__name__)
    bpy.types.VIEW3D_MT_uv_map.append(menu_func)
    bpy.app.translations.register(__name__, translation_dict)   #Enregistrer un dictionnaire


def unregister():
    bpy.app.translations.unregister(__name__)   #Supprimer le dictionnaire
    bpy.utils.unregister_module(__name__)
    bpy.types.VIEW3D_MT_uv_map.remove(menu_func)


if __name__ == "__main__":
    register()

Comment utiliser

Suivez les étapes ci-dessous pour installer. Blender Wiki

  1. Japaneseize Blender
  2. Exécutez le "Test de traduction" à partir du menu affiché en appuyant sur la touche "U" en mode Edition.
  3. Confirmez que "Test: 50" s'affiche dans la barre de notification.
  4. Traduire Blender en anglais
  5. Exécutez le "Test de traduction" à partir du menu affiché en appuyant sur la touche "U" en mode Edition.
  6. Confirmez que «Test: 50» s'affiche dans la barre de notification.

Comment changer la langue de Blender

Voici quelques conseils pour vous aider à changer la langue de Blender: blender.jp

Exemple d'explication

Pour la partie de base, voir [\ Blender ] Comment créer un plug-in Blender. Cette fois, je me concentrerai sur la partie multilingue.

Définition du dictionnaire de traduction

Définissez un dictionnaire pour la traduction. Le format du dictionnaire est le suivant.

{locale: {(context, key): translated_str, ...}, ...}

Chaque paramètre est indiqué ci-dessous.

Paramètres sens
locale Lieu
En japonaisjp_JP, En anglaisen_ENCe sera.
Lieuに指定する文字列は下に記載しています。
context Contexte à exécuter(?)
Pour le moment**"*"**Si vous le laissez, il n'y aura aucun problème.
key Chaîne de caractères clé spécifiée au moment de la traduction
La chaîne de caractères que vous souhaitez afficher par défautC'est une bonne idée de préciser.
personnellementAnglais sans caractères déformésEst recommandé.
translated_str La locale actuelle estlocalePareil quekeyLa chaîne de caractères qui s'affiche lorsque est spécifié.
Dans cette partieSpécifiez la chaîne de caractères après la traductionFaire.
SpécifiélocaleQuandkeySi n'existe pastranslated_La chaîne de caractères spécifiée pour la clé s'afficheSera fait.

Dans cet exemple, le dictionnaire est défini comme suit.

Langue afficher
Anglais Test: 50
Japonais Tesuto: 50
Autre Test: 50
translation_dict = {
    "en_US" :
        {("*", "Test: ") : "Test: %d"},
    "ja_JP" :
        {("*", "Test: ") : "Tesuto: %d"}
}

Conseils: comment obtenir les paramètres régionaux

Certaines personnes peuvent ne pas savoir quoi spécifier, même s'il s'agit d'un paramètre régional. Dans un tel cas, essayez ce qui suit à partir de la console Python fournie dans Blender. Vous pouvez trouver la locale actuelle de Blender.

>>> bpy.app.translations.locale
'en_US'

Enregistrement du dictionnaire de traduction

Pour enregistrer un dictionnaire à traduire, exécutez ce qui suit dans la fonction register.

bpy.app.translations.register(__name__, translation_dict)

Effectuer la traduction

Pour obtenir la chaîne traduite à partir de la «clé» spécifiée, utilisez «bpy.app.translations.pgettext» comme suit.

bpy.app.translations.pgettext("Test: ") 

Si vous voulez utiliser le ** format de chaîne **, utilisez bpy.app.translations.pgettext_iface.

bpy.app.translations.pgettext("Test: ") % (num)

Supprimer le dictionnaire de traduction

Le dictionnaire de traduction enregistré doit être libéré lorsque le module complémentaire est arrêté. Pour désenregistrer le dictionnaire, exécutez ce qui suit dans la fonction unregister.

bpy.app.translations.unregister(__name__)

en conclusion

Nous avons montré comment rendre les scripts Blender multilingues. En rendant le script compatible avec plusieurs langues, il y a de fortes chances que le script soit utilisé pour les langues prises en charge. Blender est encore largement utilisé dans les pays anglophones, donc si vous écrivez des scripts pour le japonais, pourquoi ne pas profiter de cette opportunité pour prendre en charge l'anglais également? ** En prenant en charge l'anglais, vous pourrez peut-être vous familiariser avec les commentaires des étrangers **.

Informations de référence

Recommended Posts

[Blender] Comment rendre les scripts Blender multilingues
[Blender] Comment créer un plug-in Blender
Comment faire une traduction japonais-anglais
Comment créer un bot slack
Comment créer un robot - Avancé
Comment créer une fonction récursive
[Blender] Comment gérer les événements de souris et de clavier dans les scripts Blender
Comment créer un robot - Basic
Comment rendre les caractères de Word Cloud monochromatiques
[Blender] Comment définir shape_key avec un script
Comment rendre le sélénium aussi léger que possible
Comment empaqueter et distribuer des scripts Python
[Cocos2d-x] Comment créer une liaison de script (partie 2)
Comment créer une clé USB à démarrage multiple (compatible Windows 10)
Comment créer un indicateur personnalisé Backtrader
Comment créer un plan de site Pelican
[Cocos2d-x] Comment créer une liaison de script (partie 1)
Comment créer un pilote de périphérique Linux intégré (11)
Comment faire correspondre WTForms TextArea à la suppression de fichier
Comment créer un plug-in Spigot (pour les débutants Java)
Comment créer un pilote de périphérique Linux intégré (1)
Comment créer un pilote de périphérique Linux intégré (4)
Comment rendre plusieurs noyaux sélectionnables sur Jupyter
Comment créer un pilote de périphérique Linux intégré (7)
Comment créer une sortie JSON Scintillante en japonais
Comment créer un pilote de périphérique Linux intégré (3)
Donnez vie à votre vie de manière procédurale avec les scripts Blender
Comment créer un plug-in QGIS (génération de package)
J'ai lu "Comment créer un laboratoire de piratage"
Comment créer un pilote de périphérique Linux intégré (6)
Comment créer le plugin Python de Substance Painter (Introduction)
Comment créer un pilote de périphérique Linux intégré (5)
Comment créer un pilote de périphérique Linux intégré (10)
Comment rendre le Python des débutants plus rapide [numpy]
Comment apporter des modifications à l'interpréteur Python dans Pycharm
Comment créer un pilote de périphérique Linux intégré (9)
Inspiré par "Comment créer du JavaScript purement fonctionnel"
Comment utiliser xml.etree.ElementTree
Comment faire pour qu'AWS rekognition reconnaisse les fichiers image locaux
Comment utiliser virtualenv
Grattage 2 Comment gratter
Comment utiliser Seaboan
[Suite] Inspiré par "Comment créer du JavaScript purement fonctionnel"
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment installer Python
Comment utiliser Pandas 2
Comment faire reconnaître Yubico Yubikey par Manjaro Linux
Comment lire PyPI
Comment installer pip
Comment utiliser Virtualenv
Comment connaître le répertoire actuel en Python dans Blender
Expliquez en détail comment créer un son avec python
Comment utiliser numpy.vectorize
Comment mettre à jour easy_install