1. Modification du programme principal
Pour que l'application soit internationalisable, le programme principal requiert
quelques adaptations. Il faut, dans l'ordre, créer un objet traducteur (instance de
QTranslator), y charger un fichier d'éléments textuels .qm pour la langue cible et
installer ce traducteur dans l'objet application. Nous donnons ci-après une méthode
pour faire cela, mais il est possible de le faire de nombreuses autres façons.
Le programme proposé ici aura deux modes de fonctionnement, selon qu'on le lance
avec un argument ou non :
sans argument : la langue à utiliser est déterminée selon l'environnement configuré
au niveau de l'OS ;
avec argument : la langue à utiliser est déterminée par l'argument (fr_FR ou en_US
dans notre cas).
L'option sans argument est la plus importante ; elle est utilisée pour l'application
déployée en production. L'option avec argument est juste une facilité qu'on se donne
pour tester les différentes traductions. Ainsi, à la fin du présent chapitre, on pourra
lancer l'application selon l'une des commandes suivantes :
python start_app.py
python start_app.py fr_FR
python start_app.py en_US
Voici le listing du programme principal de start_app.py adapté pour réaliser cela.
# start_app.py
# version internationale
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QTranslator, QLocale
from main_window_biblio import MainWindowBiblio
app = QApplication(sys.argv)
translator = QTranslator()
if len(sys.argv) == 1: locale = QLocale()
translator.load(locale,"biblioapp",".") else:
137
Pour que l'application soit internationalisable, le programme principal requiert
quelques adaptations. Il faut, dans l'ordre, créer un objet traducteur (instance de
QTranslator), y charger un fichier d'éléments textuels .qm pour la langue cible et
installer ce traducteur dans l'objet application. Nous donnons ci-après une méthode
pour faire cela, mais il est possible de le faire de nombreuses autres façons.
Le programme proposé ici aura deux modes de fonctionnement, selon qu'on le lance
avec un argument ou non :
sans argument : la langue à utiliser est déterminée selon l'environnement configuré
au niveau de l'OS ;
avec argument : la langue à utiliser est déterminée par l'argument (fr_FR ou en_US
dans notre cas).
L'option sans argument est la plus importante ; elle est utilisée pour l'application
déployée en production. L'option avec argument est juste une facilité qu'on se donne
pour tester les différentes traductions. Ainsi, à la fin du présent chapitre, on pourra
lancer l'application selon l'une des commandes suivantes :
python start_app.py
python start_app.py fr_FR
python start_app.py en_US
Voici le listing du programme principal de start_app.py adapté pour réaliser cela.
# start_app.py
# version internationale
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QTranslator, QLocale
from main_window_biblio import MainWindowBiblio
app = QApplication(sys.argv)
translator = QTranslator()
if len(sys.argv) == 1: locale = QLocale()
translator.load(locale,"biblioapp",".") else:
137
