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.
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()
Suivez les étapes ci-dessous pour installer. Blender Wiki
Voici quelques conseils pour vous aider à changer la langue de Blender: blender.jp
Pour la partie de base, voir [\ Blender ] Comment créer un plug-in Blender. Cette fois, je me concentrerai sur la partie multilingue.
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 estlocale Pareil quekey La 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é locale Quandkey Si 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"}
}
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'
Pour enregistrer un dictionnaire à traduire, exécutez ce qui suit dans la fonction register.
bpy.app.translations.register(__name__, translation_dict)
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)
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__)
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 **.
Recommended Posts