diff --git a/animation_animall/__init__.py b/animation_animall/__init__.py
index 1ff7bc698c954486b2ae2b2917a071f6f5e3003f..d679c97011613ad79de771030557faebca5c4b90 100644
--- a/animation_animall/__init__.py
+++ b/animation_animall/__init__.py
@@ -16,7 +16,8 @@ import bpy
 from bpy.types import (Operator, Panel, AddonPreferences)
 from bpy.props import (BoolProperty, StringProperty)
 from bpy.app.handlers import persistent
-from bpy.app.translations import pgettext_iface
+from bpy.app.translations import (pgettext_iface as iface_,
+                                  pgettext_data as data_)
 from . import translations
 
 
@@ -205,7 +206,7 @@ class VIEW3D_PT_animall(Panel):
                 row.prop(shape_key, "value", text=shape_key.name, icon="SHAPEKEY_DATA")
                 row.prop(obj, "show_only_shape_key", text="")
                 if shape_key.value < 1:
-                    col.label(text=pgettext_iface('Maybe set "%s" to 1.0?') % shape_key.name, icon="INFO")
+                    col.label(text=iface_('Maybe set "%s" to 1.0?') % shape_key.name, icon="INFO")
             elif shape_key is not None:
                 col = layout.column(align=True)
                 col.label(text="Cannot key on Basis Shape", icon="ERROR")
@@ -234,7 +235,7 @@ class ANIM_OT_insert_keyframe_animall(Operator):
     bl_description = "Insert a Keyframe"
     bl_options = {'REGISTER', 'UNDO'}
 
-    def execute(op, context):
+    def execute(self, context):
         animall_properties = context.scene.animall_properties
 
         if context.mode == 'OBJECT':
@@ -256,12 +257,12 @@ class ANIM_OT_insert_keyframe_animall(Operator):
                         sk_name = obj.active_shape_key.name
                         for p_i, point in enumerate(obj.active_shape_key.data):
                             if not animall_properties.key_selected or data.points[p_i].select:
-                                insert_key(point, 'co', group="%s Point %s" % (sk_name, p_i))
+                                insert_key(point, 'co', group=data_("%s Point %s") % (sk_name, p_i))
 
                 if animall_properties.key_point_location:
                     for p_i, point in enumerate(data.points):
                         if not animall_properties.key_selected or point.select:
-                            insert_key(point, 'co_deform', group="Point %s" % p_i)
+                            insert_key(point, 'co_deform', group=data_("Point %s") % p_i)
 
             else:
                 if animall_properties.key_material_index:
@@ -269,7 +270,7 @@ class ANIM_OT_insert_keyframe_animall(Operator):
                         if (not animall_properties.key_selected
                                 or any(point.select for point in spline.points)
                                 or any(point.select_control_point for point in spline.bezier_points)):
-                            insert_key(spline, 'material_index', group="Spline %s" % s_i)
+                            insert_key(spline, 'material_index', group=data_("Spline %s") % s_i)
 
                 for s_i, spline in enumerate(data.splines):
                     if spline.type == 'BEZIER':
@@ -279,27 +280,27 @@ class ANIM_OT_insert_keyframe_animall(Operator):
                                     or CV.select_left_handle
                                     or CV.select_right_handle):
                                 if animall_properties.key_point_location:
-                                    insert_key(CV, 'co', group="Spline %s CV %s" % (s_i, v_i))
-                                    insert_key(CV, 'handle_left', group="Spline %s CV %s" % (s_i, v_i))
-                                    insert_key(CV, 'handle_right', group="Spline %s CV %s" % (s_i, v_i))
+                                    insert_key(CV, 'co', group=data_("Spline %s CV %s") % (s_i, v_i))
+                                    insert_key(CV, 'handle_left', group=data_("Spline %s CV %s") % (s_i, v_i))
+                                    insert_key(CV, 'handle_right', group=data_("Spline %s CV %s") % (s_i, v_i))
 
                                 if animall_properties.key_radius:
-                                    insert_key(CV, 'radius', group="Spline %s CV %s" % (s_i, v_i))
+                                    insert_key(CV, 'radius', group=data_("Spline %s CV %s") % (s_i, v_i))
 
                                 if animall_properties.key_tilt:
-                                    insert_key(CV, 'tilt', group="Spline %s CV %s" % (s_i, v_i))
+                                    insert_key(CV, 'tilt', group=data_("Spline %s CV %s") % (s_i, v_i))
 
                     elif spline.type in ('POLY', 'NURBS'):
                         for v_i, CV in enumerate(spline.points):
                             if not animall_properties.key_selected or CV.select:
                                 if animall_properties.key_point_location:
-                                    insert_key(CV, 'co', group="Spline %s CV %s" % (s_i, v_i))
+                                    insert_key(CV, 'co', group=data_("Spline %s CV %s") % (s_i, v_i))
 
                                 if animall_properties.key_radius:
-                                    insert_key(CV, 'radius', group="Spline %s CV %s" % (s_i, v_i))
+                                    insert_key(CV, 'radius', group=data_("Spline %s CV %s") % (s_i, v_i))
 
                                 if animall_properties.key_tilt:
-                                    insert_key(CV, 'tilt', group="Spline %s CV %s" % (s_i, v_i))
+                                    insert_key(CV, 'tilt', group=data_("Spline %s CV %s") % (s_i, v_i))
 
         bpy.ops.object.mode_set(mode='OBJECT')
 
@@ -309,37 +310,37 @@ class ANIM_OT_insert_keyframe_animall(Operator):
                 if animall_properties.key_point_location:
                     for v_i, vert in enumerate(data.vertices):
                         if not animall_properties.key_selected or vert.select:
-                            insert_key(vert, 'co', group="Vertex %s" % v_i)
+                            insert_key(vert, 'co', group=data_("Vertex %s") % v_i)
 
                 if animall_properties.key_vertex_bevel:
                     for v_i, vert in enumerate(data.vertices):
                         if not animall_properties.key_selected or vert.select:
-                            insert_key(vert, 'bevel_weight', group="Vertex %s" % v_i)
+                            insert_key(vert, 'bevel_weight', group=data_("Vertex %s") % v_i)
                 # if animall_properties.key_vertex_crease:
                 #     for v_i, vert in enumerate(data.vertices):
                 #         if not animall_properties.key_selected or vert.select:
-                #             insert_key(vert, 'crease', group="Vertex %s" % v_i)
+                #             insert_key(vert, 'crease', group=data_("Vertex %s") % v_i)
 
                 if animall_properties.key_vertex_group:
                     for v_i, vert in enumerate(data.vertices):
                         if not animall_properties.key_selected or vert.select:
                             for group in vert.groups:
-                                insert_key(group, 'weight', group="Vertex %s" % v_i)
+                                insert_key(group, 'weight', group=data_("Vertex %s") % v_i)
 
                 if animall_properties.key_edge_bevel:
                     for e_i, edge in enumerate(data.edges):
                         if not animall_properties.key_selected or edge.select:
-                            insert_key(edge, 'bevel_weight', group="Edge %s" % e_i)
+                            insert_key(edge, 'bevel_weight', group=data_("Edge %s") % e_i)
 
                 if animall_properties.key_edge_crease:
                     for e_i, edge in enumerate(data.edges):
                         if not animall_properties.key_selected or edge.select:
-                            insert_key(edge, 'crease', group="Edge %s" % e_i)
+                            insert_key(edge, 'crease', group=data_("Edge %s") % e_i)
 
                 if animall_properties.key_material_index:
                     for p_i, polygon in enumerate(data.polygons):
                         if not animall_properties.key_selected or polygon.select:
-                            insert_key(polygon, 'material_index', group="Face %s" % p_i)
+                            insert_key(polygon, 'material_index', group=data_("Face %s") % p_i)
 
                 if animall_properties.key_attribute:
                     if data.attributes.active is not None:
@@ -354,13 +355,13 @@ class ANIM_OT_insert_keyframe_animall(Operator):
                                 attribute_key = "vector"
 
                             if attribute.domain == 'POINT':
-                                group = "Vertex %s"
+                                group = data_("Vertex %s")
                             elif attribute.domain == 'EDGE':
-                                group = "Edge %s"
+                                group = data_("Edge %s")
                             elif attribute.domain == 'FACE':
-                                group = "Face %s"
+                                group = data_("Face %s")
                             elif attribute.domain == 'CORNER':
-                                group = "Loop %s"
+                                group = data_("Loop %s")
 
                             for e_i, _attribute_data in enumerate(attribute.data):
                                 if (not animall_properties.key_selected
@@ -375,14 +376,14 @@ class ANIM_OT_insert_keyframe_animall(Operator):
                     if data.uv_layers.active is not None:
                         for uv_i, uv in enumerate(data.uv_layers.active.data):
                             if not animall_properties.key_selected or uv.select:
-                                insert_key(uv, 'uv', group="UV layer %s" % uv_i)
+                                insert_key(uv, 'uv', group=data_("UV layer %s") % uv_i)
 
                 if animall_properties.key_shape_key:
                     if obj.active_shape_key_index > 0:
                         sk_name = obj.active_shape_key.name
                         for v_i, vert in enumerate(obj.active_shape_key.data):
                             if not animall_properties.key_selected or data.vertices[v_i].select:
-                                insert_key(vert, 'co', group="%s Vertex %s" % (sk_name, v_i))
+                                insert_key(vert, 'co', group=data_("%s Vertex %s") % (sk_name, v_i))
 
             elif obj.type in {'CURVE', 'SURFACE'}:
                 # Shape key keys have to be inserted in object mode for curves...
@@ -398,11 +399,11 @@ class ANIM_OT_insert_keyframe_animall(Operator):
                                         or CV.select_right_handle):
                                     if obj.active_shape_key_index > 0:
                                         CV = obj.active_shape_key.data[global_spline_index]
-                                        insert_key(CV, 'co', group="%s Spline %s CV %s" % (sk_name, s_i, v_i))
-                                        insert_key(CV, 'handle_left', group="%s Spline %s CV %s" % (sk_name, s_i, v_i))
-                                        insert_key(CV, 'handle_right', group="%s Spline %s CV %s" % (sk_name, s_i, v_i))
-                                        insert_key(CV, 'radius', group="%s Spline %s CV %s" % (sk_name, s_i, v_i))
-                                        insert_key(CV, 'tilt', group="%s Spline %s CV %s" % (sk_name, s_i, v_i))
+                                        insert_key(CV, 'co', group=data_("%s Spline %s CV %s") % (sk_name, s_i, v_i))
+                                        insert_key(CV, 'handle_left', group=data_("%s Spline %s CV %s") % (sk_name, s_i, v_i))
+                                        insert_key(CV, 'handle_right', group=data_("%s Spline %s CV %s") % (sk_name, s_i, v_i))
+                                        insert_key(CV, 'radius', group=data_("%s Spline %s CV %s") % (sk_name, s_i, v_i))
+                                        insert_key(CV, 'tilt', group=data_("%s Spline %s CV %s") % (sk_name, s_i, v_i))
                                 global_spline_index += 1
 
                         elif spline.type in ('POLY', 'NURBS'):
@@ -410,9 +411,9 @@ class ANIM_OT_insert_keyframe_animall(Operator):
                                 if not animall_properties.key_selected or CV.select:
                                     if obj.active_shape_key_index > 0:
                                         CV = obj.active_shape_key.data[global_spline_index]
-                                        insert_key(CV, 'co', group="%s Spline %s CV %s" % (sk_name, s_i, v_i))
-                                        insert_key(CV, 'radius', group="%s Spline %s CV %s" % (sk_name, s_i, v_i))
-                                        insert_key(CV, 'tilt', group="%s Spline %s CV %s" % (sk_name, s_i, v_i))
+                                        insert_key(CV, 'co', group=data_("%s Spline %s CV %s") % (sk_name, s_i, v_i))
+                                        insert_key(CV, 'radius', group=data_("%s Spline %s CV %s") % (sk_name, s_i, v_i))
+                                        insert_key(CV, 'tilt', group=data_("%s Spline %s CV %s") % (sk_name, s_i, v_i))
                                 global_spline_index += 1
 
         bpy.ops.object.mode_set(mode=mode)
@@ -427,8 +428,7 @@ class ANIM_OT_delete_keyframe_animall(Operator):
     bl_description = "Delete a Keyframe"
     bl_options = {'REGISTER', 'UNDO'}
 
-
-    def execute(op, context):
+    def execute(self, context):
         animall_properties = context.scene.animall_properties
 
         if context.mode == 'OBJECT':
@@ -662,14 +662,12 @@ def register():
     register_classes()
     bpy.types.Scene.animall_properties = bpy.props.PointerProperty(type=AnimallProperties)
     update_panel(None, bpy.context)
-
     bpy.app.translations.register(__name__, translations.translations_dict)
 
 def unregister():
+    bpy.app.translations.unregister(__name__)
     del bpy.types.Scene.animall_properties
     unregister_classes()
 
-    bpy.app.translations.unregister(__name__)
-
 if __name__ == "__main__":
     register()
diff --git a/animation_animall/translations.py b/animation_animall/translations.py
index 9ced18074f21c24548652473dca7fe324f71719c..03b77e0b03790e44635f5629ccd9e4322c169b82 100644
--- a/animation_animall/translations.py
+++ b/animation_animall/translations.py
@@ -1,11 +1,16 @@
 # SPDX-License-Identifier: GPL-2.0-or-later
 
+# ##### BEGIN AUTOGENERATED I18N SECTION #####
+# NOTE: You can safely move around this auto-generated block (with the begin/end markers!),
+#       and edit the translations by hand.
+#       Just carefully respect the format of the tuple!
+
 # Tuple of tuples:
 # ((msgctxt, msgid), (sources, gen_comments), (lang, translation, (is_fuzzy, comments)), ...)
 translations_tuple = (
     (("*", ""),
      ((), ()),
-     ("fr_FR", "Project-Id-Version: AnimAll 0.9.6 (0)\nReport-Msgid-Bugs-To: \nPOT-Creation-Date: 2022-06-24 00:41:10.347798\nPO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\nLast-Translator: FULL NAME <EMAIL@ADDRESS>\nLanguage-Team: LANGUAGE <LL@li.org>\nLanguage: __POT__\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit",
+     ("fr_FR", "Project-Id-Version: AnimAll 0.9.6 (0)\n",
                (False,
                 ("Blender's translation file (po format).",
                  "Copyright (C) 2022 The Blender Foundation.",
@@ -24,6 +29,13 @@ translations_tuple = (
      ("fr_FR", "Choisir un nom pour la catégorie du panneau",
                (False, ())),
     ),
+    (("Operator", "Insert Key"),
+     (("bpy.types.ANIM_OT_insert_keyframe_animall",
+       "bpy.types.ANIM_OT_insert_keyframe_animall"),
+      ()),
+     ("fr_FR", "Insérer une clé",
+               (False, ())),
+    ),
     (("Operator", "Clear Animation"),
      (("bpy.types.ANIM_OT_clear_animation_animall",),
       ()),
@@ -140,106 +152,206 @@ translations_tuple = (
                (False, ())),
     ),
     (("*", "AnimAll"),
-     (("scripts/addons/animation_animall.py:142",),
+     (("scripts/addons/animation_animall/__init__.py:138",
+       "Add-on AnimAll info: name"),
       ()),
-     ("fr_FR", "",
+     ("fr_FR", "AnimAll",
                (False, ())),
     ),
     (("*", "Key:"),
-     (("scripts/addons/animation_animall.py:150",),
+     (("scripts/addons/animation_animall/__init__.py:146",),
       ()),
      ("fr_FR", "Insérer :",
                (False, ())),
     ),
     (("*", "Tab Category:"),
-     (("scripts/addons/animation_animall.py:658",),
+     (("scripts/addons/animation_animall/__init__.py:653",),
       ()),
-     ("fr_FR", "Catégorie d’onglet",
+     ("fr_FR", "Catégorie d’onglet :",
+               (False, ())),
+    ),
+    (("*", "Points"),
+     (("scripts/addons/animation_animall/__init__.py:152",
+       "scripts/addons/animation_animall/__init__.py:159",
+       "scripts/addons/animation_animall/__init__.py:188"),
+      ()),
+     ("fr_FR", "Points",
                (False, ())),
     ),
-    # (("*", "Points"),
-    #  (("scripts/addons/animation_animall.py:156",
-    #    "scripts/addons/animation_animall.py:163",
-    #    "scripts/addons/animation_animall.py:192"),
-    #   ()),
-    #  ("fr_FR", "",
-    #            (False, ())),
-    # ),
     (("*", "Others"),
-     (("scripts/addons/animation_animall.py:159",
-       "scripts/addons/animation_animall.py:175",
-       "scripts/addons/animation_animall.py:200"),
+     (("scripts/addons/animation_animall/__init__.py:155",
+       "scripts/addons/animation_animall/__init__.py:171",
+       "scripts/addons/animation_animall/__init__.py:196"),
       ()),
      ("fr_FR", "Autres",
                (False, ())),
     ),
-    # (("*", "Bevel"),
-    #  (("scripts/addons/animation_animall.py:165",
-    #    "scripts/addons/animation_animall.py:169"),
-    #   ()),
-    #  ("fr_FR", "",
-    #            (False, ())),
-    # ),
-    # (("*", "Edges"),
-    #  (("scripts/addons/animation_animall.py:168",),
-    #   ()),
-    #  ("fr_FR", "",
-    #            (False, ())),
-    # ),
-    # (("*", "Crease"),
-    #  (("scripts/addons/animation_animall.py:170",),
-    #   ()),
-    #  ("fr_FR", "",
-    #            (False, ())),
-    # ),
-    # (("*", "Faces"),
-    #  (("scripts/addons/animation_animall.py:172",),
-    #   ()),
-    #  ("fr_FR", "",
-    #            (False, ())),
-    # ),
+    (("*", "Bevel"),
+     (("scripts/addons/animation_animall/__init__.py:161",
+       "scripts/addons/animation_animall/__init__.py:165"),
+      ()),
+     ("fr_FR", "Biseau",
+               (False, ())),
+    ),
+    (("*", "Edges"),
+     (("scripts/addons/animation_animall/__init__.py:164",),
+      ()),
+     ("fr_FR", "ArĂŞtes",
+               (False, ())),
+    ),
+    (("*", "Crease"),
+     (("scripts/addons/animation_animall/__init__.py:166",),
+      ()),
+     ("fr_FR", "Plis",
+               (False, ())),
+    ),
+    (("*", "Faces"),
+     (("scripts/addons/animation_animall/__init__.py:168",),
+      ()),
+     ("fr_FR", "Faces",
+               (False, ())),
+    ),
     (("*", "\"Location\" and \"Shape Key\" are redundant?"),
-     (("scripts/addons/animation_animall.py:222",),
+     (("scripts/addons/animation_animall/__init__.py:218",),
       ()),
      ("fr_FR", "\"Position\" et \"Clé de forme\" sont redondants ?",
                (False, ())),
     ),
     (("*", "Splines"),
-     (("scripts/addons/animation_animall.py:197",),
+     (("scripts/addons/animation_animall/__init__.py:193",),
       ()),
-     ("fr_FR", "",
+     ("fr_FR", "Splines",
                (False, ())),
     ),
     (("*", "Maybe set \"%s\" to 1.0?"),
-     (("scripts/addons/animation_animall.py:213",),
+     (("scripts/addons/animation_animall/__init__.py:209",
+       "scripts/addons/animation_animall/__init__.py:209"),
       ()),
      ("fr_FR", "Essayez de mettre « %s » à 1.0 ?",
                (False, ())),
     ),
     (("*", "Cannot key on Basis Shape"),
-     (("scripts/addons/animation_animall.py:216",),
+     (("scripts/addons/animation_animall/__init__.py:212",),
       ()),
      ("fr_FR", "Impossible d’ajouter une clé sur la forme de base",
                (False, ())),
     ),
     (("*", "No active Shape Key"),
-     (("scripts/addons/animation_animall.py:219",),
+     (("scripts/addons/animation_animall/__init__.py:215",),
       ()),
      ("fr_FR", "Pas de clé de forme active",
                (False, ())),
     ),
     (("*", "Clear Animation could not be performed"),
-     (("scripts/addons/animation_animall.py:586",),
+     (("scripts/addons/animation_animall/__init__.py:581",),
       ()),
      ("fr_FR", "La suppression de l’animation n’a pas pu aboutir",
                (False, ())),
     ),
     (("*", "Object includes old-style vertex colors. Consider updating them."),
-     (("scripts/addons/animation_animall.py:186",),
+     (("scripts/addons/animation_animall/__init__.py:182",),
       ()),
      ("fr_FR", "L’objet contient des couleurs de sommets à l’ancien format. Veuillez les mettre à jour",
                (False, ())),
     ),
+    (("*", "Vertex %s"),
+     (("scripts/addons/animation_animall/__init__.py:358",
+       "scripts/addons/animation_animall/__init__.py:313",
+       "scripts/addons/animation_animall/__init__.py:318",
+       "scripts/addons/animation_animall/__init__.py:328"),
+      ()),
+     ("fr_FR", "Sommet %s",
+               (False, ())),
+    ),
+    (("*", "Edge %s"),
+     (("scripts/addons/animation_animall/__init__.py:360",
+       "scripts/addons/animation_animall/__init__.py:333",
+       "scripts/addons/animation_animall/__init__.py:338"),
+      ()),
+     ("fr_FR", "ArĂŞte %s",
+               (False, ())),
+    ),
+    (("*", "Point %s"),
+     (("scripts/addons/animation_animall/__init__.py:265",),
+      ()),
+     ("fr_FR", "Point %s",
+               (False, ())),
+    ),
+    (("*", "Spline %s"),
+     (("scripts/addons/animation_animall/__init__.py:273",),
+      ()),
+     ("fr_FR", "Spline %s",
+               (False, ())),
+    ),
+    (("*", "Face %s"),
+     (("scripts/addons/animation_animall/__init__.py:343",
+       "scripts/addons/animation_animall/__init__.py:362"),
+      ()),
+     ("fr_FR", "Face %s",
+               (False, ())),
+    ),
+    (("*", "%s Point %s"),
+     (("scripts/addons/animation_animall/__init__.py:260",),
+      ()),
+     ("fr_FR", "%s Point %s",
+               (False, ())),
+    ),
+    (("*", "Loop %s"),
+     (("scripts/addons/animation_animall/__init__.py:364",),
+      ()),
+     ("fr_FR", "Boucle %s",
+               (False, ())),
+    ),
+    (("*", "UV layer %s"),
+     (("scripts/addons/animation_animall/__init__.py:379",),
+      ()),
+     ("fr_FR", "Calque UV %s",
+               (False, ())),
+    ),
+    (("*", "%s Vertex %s"),
+     (("scripts/addons/animation_animall/__init__.py:386",),
+      ()),
+     ("fr_FR", "%s Sommet %s",
+               (False, ())),
+    ),
+    (("*", "Spline %s CV %s"),
+     (("scripts/addons/animation_animall/__init__.py:283",
+       "scripts/addons/animation_animall/__init__.py:284",
+       "scripts/addons/animation_animall/__init__.py:285",
+       "scripts/addons/animation_animall/__init__.py:288",
+       "scripts/addons/animation_animall/__init__.py:291",
+       "scripts/addons/animation_animall/__init__.py:297",
+       "scripts/addons/animation_animall/__init__.py:300",
+       "scripts/addons/animation_animall/__init__.py:303"),
+      ()),
+     ("fr_FR", "Spline %s Point %s",
+               (False, ())),
+    ),
+    (("*", "%s Spline %s CV %s"),
+     (("scripts/addons/animation_animall/__init__.py:402",
+       "scripts/addons/animation_animall/__init__.py:403",
+       "scripts/addons/animation_animall/__init__.py:404",
+       "scripts/addons/animation_animall/__init__.py:405",
+       "scripts/addons/animation_animall/__init__.py:406",
+       "scripts/addons/animation_animall/__init__.py:414",
+       "scripts/addons/animation_animall/__init__.py:415",
+       "scripts/addons/animation_animall/__init__.py:416"),
+      ()),
+     ("fr_FR", "%s Spline %s Point %s",
+               (False, ())),
+    ),
+    (("*", "3D View > Toolbox > Animation tab > AnimAll"),
+     (("Add-on AnimAll info: location",),
+      ()),
+     ("fr_FR", "Vue 3D > Panneau N > Onglet Animer > AnimAll",
+               (False, ())),
+    ),
+    (("*", "Allows animation of mesh, lattice, curve and surface data"),
+     (("Add-on AnimAll info: description",),
+      ()),
+     ("fr_FR", "Permet d’animer les données de maillages, de lattices, de courbes et de surfaces",
+               (False, ())),
+    ),
 )
 
 translations_dict = {}
@@ -248,3 +360,5 @@ for msg in translations_tuple:
     for lang, trans, (is_fuzzy, comments) in msg[2:]:
         if trans and not is_fuzzy:
             translations_dict.setdefault(lang, {})[key] = trans
+
+# ##### END AUTOGENERATED I18N SECTION #####
diff --git a/sun_position/__init__.py b/sun_position/__init__.py
index 9a3e5b72649062e86fea690af656158cc87b8ea0..5b2a89cec5495eebac209a8d1984c9eb41a8f000 100644
--- a/sun_position/__init__.py
+++ b/sun_position/__init__.py
@@ -48,16 +48,13 @@ def register():
     register_classes()
     bpy.types.Scene.sun_pos_properties = (
         bpy.props.PointerProperty(type=properties.SunPosProperties,
-                        name="Sun Position",
-                        description="Sun Position Settings"))
-
-    bpy.app.translations.register(__name__, translations.translations_dict)
+                                  name="Sun Position",
+                                  description="Sun Position Settings"))
     bpy.app.handlers.frame_change_post.append(sun_calc.sun_handler)
-
+    bpy.app.translations.register(__name__, translations.translations_dict)
 
 def unregister():
-    del bpy.types.Scene.sun_pos_properties
-    unregister_classes()
-
     bpy.app.translations.unregister(__name__)
     bpy.app.handlers.frame_change_post.remove(sun_calc.sun_handler)
+    del bpy.types.Scene.sun_pos_properties
+    unregister_classes()
diff --git a/sun_position/properties.py b/sun_position/properties.py
index ac791d4391fdc7bf0b87ad00914e9ff8b02ec97b..af2734a4c0aa0ea6dbfcf017083bd3d2f8b4b724 100644
--- a/sun_position/properties.py
+++ b/sun_position/properties.py
@@ -174,6 +174,7 @@ class SunPosProperties(PropertyGroup):
         update=sun_update)
 
     bind_to_sun: BoolProperty(
+        name="Bind Texture to Sun",
         description="If true, Environment texture moves with sun",
         default=False,
         update=sun_update)
diff --git a/sun_position/translations.py b/sun_position/translations.py
index cd247ffd22e4103f928818668c4e23b9b84a15d8..c50b797cd2eac735e7209f6458f30de003a4cd04 100644
--- a/sun_position/translations.py
+++ b/sun_position/translations.py
@@ -1,11 +1,16 @@
 # SPDX-License-Identifier: GPL-2.0-or-later
 
+# ##### BEGIN AUTOGENERATED I18N SECTION #####
+# NOTE: You can safely move around this auto-generated block (with the begin/end markers!),
+#       and edit the translations by hand.
+#       Just carefully respect the format of the tuple!
+
 # Tuple of tuples:
 # ((msgctxt, msgid), (sources, gen_comments), (lang, translation, (is_fuzzy, comments)), ...)
 translations_tuple = (
     (("*", ""),
      ((), ()),
-     ("fr_FR", "Project-Id-Version: Sun Position 3.1.2 (0)\nReport-Msgid-Bugs-To: \nPOT-Creation-Date: 2022-06-30 15:02:06.261278\nPO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\nLast-Translator: FULL NAME <EMAIL@ADDRESS>\nLanguage-Team: LANGUAGE <LL@li.org>\nLanguage: __POT__\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit",
+     ("fr_FR", "Project-Id-Version: Sun Position 3.1.2 (0)\n",
                (False,
                 ("Blender's translation file (po format).",
                  "Copyright (C) 2022 The Blender Foundation.",
@@ -100,7 +105,8 @@ translations_tuple = (
     ),
     (("*", "Sun Position"),
      (("bpy.types.Scene.sun_pos_properties",
-       "bpy.types.SUNPOS_PT_Panel"),
+       "bpy.types.SUNPOS_PT_Panel",
+       "Add-on Sun Position info: name"),
       ()),
      ("fr_FR", "Position du Soleil",
                (False, ())),
@@ -117,10 +123,10 @@ translations_tuple = (
      ("fr_FR", "Préréglages de position du Soleil",
                (False, ())),
     ),
-    (("Operator", "Synchroniser Soleil et texture"),
+    (("Operator", "Sync Sun to Texture"),
      (("bpy.types.WORLD_OT_sunpos_show_hdr",),
       ()),
-     ("fr_FR", "",
+     ("fr_FR", "Synchroniser Soleil et texture",
                (False, ())),
     ),
     (("*", "UTC zone"),
@@ -135,6 +141,13 @@ translations_tuple = (
      ("fr_FR", "Fuseau horaire : différence avec Greenwich, Angleterre, en heures",
                (False, ())),
     ),
+    (("*", "Bind Texture to Sun"),
+     (("bpy.types.SunPosProperties.bind_to_sun",
+       "scripts/addons/sun_position/ui_sun.py:119"),
+      ()),
+     ("fr_FR", "Lier la texture au Soleil",
+               (False, ())),
+    ),
     (("*", "If true, Environment texture moves with sun"),
      (("bpy.types.SunPosProperties.bind_to_sun",),
       ()),
@@ -186,7 +199,6 @@ translations_tuple = (
     (("*", "Name of texture to use. World nodes must be enabled and color set to Environment Texture"),
      (("bpy.types.SunPosProperties.hdr_texture",),
       ()),
-     # TODO
      ("fr_FR", "Nom de la texture à utiliser. Les nœuds de shader du monde doivent être activés, et la couleur utiliser une texture d’environnement",
                (False, ())),
     ),
@@ -287,12 +299,6 @@ translations_tuple = (
      ("fr_FR", "Objet soleil à utiliser dans la scène",
                (False, ())),
     ),
-    (("*", "Day Time"),
-     (("bpy.types.SunPosProperties.UTC_zone",),
-      ()),
-     ("fr_FR", "Heure",
-               (False, ())),
-    ),
     (("*", "Time of the day"),
      (("bpy.types.SunPosProperties.time",),
       ()),
@@ -384,7 +390,7 @@ translations_tuple = (
                (False, ())),
     ),
     (("*", "Show options or labels:"),
-     (("scripts/addons/sun_position/properties.py:241",),
+     (("scripts/addons/sun_position/properties.py:242",),
       ()),
      ("fr_FR", "Afficher les options et étiquettes :",
                (False, ())),
@@ -414,42 +420,48 @@ translations_tuple = (
                (False, ())),
     ),
     (("*", "UTC:"),
-     (("scripts/addons/sun_position/ui_sun.py:270",),
+     (("scripts/addons/sun_position/ui_sun.py:272",),
       ()),
      ("fr_FR", "UTC : ",
                (False, ())),
     ),
-    (("*", "Sunrise:"),
-     (("scripts/addons/sun_position/ui_sun.py:285",),
-      ()),
-     ("fr_FR", "Lever : ",
-               (False, ())),
-    ),
-    (("*", "Sunset:"),
-     (("scripts/addons/sun_position/ui_sun.py:288",),
-      ()),
-     ("fr_FR", "Coucher : ",
-               (False, ())),
-    ),
     (("*", "Please select World in the World panel."),
      (("scripts/addons/sun_position/ui_sun.py:95",
        "scripts/addons/sun_position/ui_sun.py:153"),
       ()),
-     ("fr_FR", "Veuillez sélecttionner le monde dans le panneau Monde",
+     ("fr_FR", "Veuillez sélectionner le monde dans le panneau Monde",
+               (False, ())),
+    ),
+    (("*", "Release binding"),
+     (("scripts/addons/sun_position/ui_sun.py:116",),
+      ()),
+     ("fr_FR", "Annuler le lien",
                (False, ())),
     ),
     (("*", "Azimuth:"),
-     (("scripts/addons/sun_position/ui_sun.py:206",),
+     (("scripts/addons/sun_position/ui_sun.py:205",),
       ()),
      ("fr_FR", "Azimut :",
                (False, ())),
     ),
     (("*", "Elevation:"),
-     (("scripts/addons/sun_position/ui_sun.py:209",),
+     (("scripts/addons/sun_position/ui_sun.py:208",),
       ()),
      ("fr_FR", "Hauteur :",
                (False, ())),
     ),
+    (("*", "Sunrise:"),
+     (("scripts/addons/sun_position/ui_sun.py:284",),
+      ()),
+     ("fr_FR", "Lever : ",
+               (False, ())),
+    ),
+    (("*", "Sunset:"),
+     (("scripts/addons/sun_position/ui_sun.py:287",),
+      ()),
+     ("fr_FR", "Coucher : ",
+               (False, ())),
+    ),
     (("*", "Please activate Use Nodes in the World panel."),
      (("scripts/addons/sun_position/ui_sun.py:92",
        "scripts/addons/sun_position/ui_sun.py:150"),
@@ -457,6 +469,18 @@ translations_tuple = (
      ("fr_FR", "Veuillez activer Utiliser nœuds dans le panneau Monde",
                (False, ())),
     ),
+    (("*", "World > Sun Position"),
+     (("Add-on Sun Position info: location",),
+      ()),
+     ("fr_FR", "Monde > Position du Soleil",
+               (False, ())),
+    ),
+    (("*", "Show sun position with objects and/or sky texture"),
+     (("Add-on Sun Position info: description",),
+      ()),
+     ("fr_FR", "Afficher la position du Soleil avec des objets ou une texture de ciel",
+               (False, ())),
+    ),
 )
 
 translations_dict = {}
@@ -465,3 +489,5 @@ for msg in translations_tuple:
     for lang, trans, (is_fuzzy, comments) in msg[2:]:
         if trans and not is_fuzzy:
             translations_dict.setdefault(lang, {})[key] = trans
+
+# ##### END AUTOGENERATED I18N SECTION #####
diff --git a/sun_position/ui_sun.py b/sun_position/ui_sun.py
index 05f0dcabd02fc1f16652cf4e14cfc49ba3724a8b..c6eebc338e3aa4ae48a66f0916c5ff1e5229ecf2 100644
--- a/sun_position/ui_sun.py
+++ b/sun_position/ui_sun.py
@@ -112,11 +112,11 @@ class SUNPOS_PT_Panel(bpy.types.Panel):
 
         col = flow.column(align=True)
         if sp.bind_to_sun:
-            prop_text="Release binding"
+            col.prop(sp, "bind_to_sun", toggle=True, icon="CONSTRAINT",
+                     text="Release binding")
         else:
-            prop_text="Bind Texture to Sun "
-        col.prop(sp, "bind_to_sun", toggle=True, icon="CONSTRAINT",
-                 text=prop_text)
+            col.prop(sp, "bind_to_sun", toggle=True, icon="CONSTRAINT",
+                     text="Bind Texture to Sun")
 
         row = col.row(align=True)
         row.enabled = not sp.bind_to_sun