SoFunction
Updated on 2025-04-11

Python uses PyQt5 to realize Chinese and English switching function

1. Multi-language switching of UI interface

  1. Install the necessary tools and libraries

    Make sure you have installed PyQt5 and its related tools, such as Qt Designer, Qt Linguist, etc. These tools are usually provided with the PyQt5 installation package.

  2. Design the UI interface

    Use Qt Designer to design your UI interface and save it as.uidocument. For example, a simple interface that includes buttons and labels can be designed.

  3. Convert UI files to Python code

    usepyuic5The tool will.uiConvert files to Python code. For example, if your UI file name ismain_window.ui, you can use the following command to convert:

pyuic5 -o main_window_ui.py main_window.ui

Generate translation files

usepylupdate5Tools generate translation files (.tsdocument). This file contains all the strings that need to be translated in the UI interface. For example:

pylupdate5 main_window_ui.py -ts main_window_en.ts
  1. This will generate a name calledmain_window_en.tsEnglish translation document.

  2. Translate strings

    Open with Qt Linguist.tsFiles and translate the strings in them one by one. After the translation is complete, save and publish the translation file, which will generate a.qmFile, this file is the translation file that PyQt5 actually uses.

  3. Load the translation file

    In your Python code, useQTranslatorThe class loads the translation file and applies it to the application. For example:

from  import QTranslator, QCoreApplication
from  import QApplication, QMainWindow, QPushButton
import sys

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        (self)

        # Create a QTranslator object         = QTranslator()

        # Load the translation file        # Note: Here you need to load the .qm file according to the actual path        (':/translations/main_window_en')  # Assuming that the .qm file has been added to the resource file
        # Install the translator to the application        ()

        # Update the language of the UI interface        (self)

    def retranslateUi(self, MainWindow):
        _translate = 
        (_translate("MainWindow", "Main Window"))
        # ... Other strings that need to be translated
if __name__ == '__main__':
    app = QApplication()
    mainWindow = MainWindow()
    ()
    (app.exec_())
  • Note: In actual applications, you may need to dynamically load different translation files according to the user's language selection.

  • Implement language switching function

    You can use buttons or other controls to implement language switching function. When switching languages, you need to uninstall the current translator and load the new translator. For example:

def switch_to_chinese(self):
    # Uninstall the current translator    ()

    # Load Chinese translation file    (':/translations/main_window_zh_CN')

    # Install a new translator to the application    ()

    # Update the language of the UI interface    (self)

def switch_to_english(self):
    # Similarly, uninstall the current translator and load the English translation file    # ...

2. Multilingual switching of strings within the program

For strings inside the program (such as logs, error messages, etc.), you can use international tools such as gettext to achieve multi-language switching. Here is a brief step:

  • Install gettext

    You can install the gettext library via pip (if not already installed):

pip install gettext
  • But please note that gettext is usually a project for GNU, and you may need to refer to its official documentation for more detailed information and installation guides.

  • Extract strings

    usexgettextTools such as extract strings from the program source code to.poin the file. For example:

xgettext -o  your_script.py --from-code utf-8
  • Translate strings

    Open.poFiles and translate the strings in them one by one. After the translation is complete, save the file.

  • Compile the translated file

    usemsgfmtIf the tool will.poFile compiled into.modocument. For example:

msgfmt -o  

Loading and using translation files

In your Python code, use the gettext library to load and use the translation file. For example:

import gettext
import os

# Set locale directorylocale_dir = ((__file__), 'locale')

# Load the translation file according to the language selected by the userlanguage = 'en'  # or 'zh_CN' etc.t = ('messages', localedir=locale_dir, languages=[language])
_ = 

# Use translated stringsprint(_("Hello, world!"))

Please note that the above steps and code examples may need to be adjusted and extended to your specific application. In addition, in order to achieve more complex internationalization needs (such as supporting multiple languages, dynamically loading translation files, etc.), you may need to design more complex logic and code structures.

The above is the detailed content of Python using PyQt5 to implement Chinese and English switching functions. For more information about Python PyQt5, please pay attention to my other related articles!