Skip to content

Alternative translation method in Python #81

Open
@ostr00000

Description

@ostr00000
  1. In this markdown:

    ### Python
    In your Python code, import FreeCAD, then create a function called `translate` with the following code:
    ```python
    translate = FreeCAD.Qt.translate
    ```

    I only see Qt translation by function, but it is possible to translate using tr method from QObject.
    In my opinion, this is a much better option (especially when object-oriented style is used).
    Actually lupdate do not care about parent class, so it should be even possible to implement a custom method:

    class MyGreatClassAlsoExpandingAnotherClassSoItHasALongName:
        def tr(self, text: str) -> str:
            return translate('MyGreatClassAlsoExpandingAnotherClassSoItHasALongName', text)
    	def runTr(self):
    		print(self.tr("My transalted text"))

    Should this translation pattern be encouraged? Or there are reasons why this is not mentioned here?
    (There are problems with subclassing, but I know a workaround for this.)

  2. This is a very frustrating error:

    print(translate("MyMod", f"This won't {work}")) # NO!

    It is so frustrating that I created a flake8 plugin to detect these errors. Can I advertise this flake8 plugin/pre-commit check here?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions