Найти - Пользователи
Полная версия: Как изменить язык из нужной мне библиотеки?
Начало » Python для новичков » Как изменить язык из нужной мне библиотеки?
1 2
lubocka
Как изменить язык из нужной мне библиотеки

например:
 from tkinter import messagebox
messagebox.askyesno("Заголовок","Бажаєте зберегти?")

в всплывающем окне отображаются кнопки с надписями “да” , “нет”
а мне нужно “так” , “нi”
JOHN_16
Судя по всему это стандартный системный вызов окна посему ответ - делать свое собственное окошко с нужными кнопками и надписями.
FishHook
https://docs.python.org/3/library/gettext.html
lubocka
с gettext не разобралась, все время ошибки пишит, да и откуда там украинскому взяться

свое окно модальное впоследствии все равно пригодится, начала создавать и столкнулась с проблемой , как убрать верхние кнопки в модальном окне “свернуть”, “развернуть”
FishHook
lubocka
да и откуда там украинскому взяться
То есть? Вы сами создаете словарь переводов, если хотите там и суахили будет. Не понял ваших претензий к украинчкому
lubocka
Никак не получается самой разобраться с переводом на нужный мне язык стандартных библиотек.

Даю пример. Натыкайте носиком, что надо сделать. плиззззз!

 from PyQt5.Qt import *
class UkrColorDialog(QColorDialog):
    def __init__(self, parent=None):
        super().__init__()
class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initWindow()
    def initWindow(self):
        self.fontcolor = UkrColorDialog()
        layout = QHBoxLayout()
        layout.addWidget(self.fontcolor)
        self.setLayout(layout)
if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

Хочу все слова на английском, чтоб чудесным образом стали на украинском
py.user.next
lubocka
очу все слова на английском, чтоб чудесным образом стали на украинском :)
Для этого используют gettext. Тогда во всей программе пишут всё английскими фразами, но в обёртке, которая при выполнении мапится через файл перевода.

Например
  
print(_('hello'))
Вот она (функция с именем _ ) увидит hello, возьмёт локальный файл перевода, который у тебя выставлен, и в нём будет искать hello. А когда найдёт, выведет из этого файла украинское слово (или словосочетание), соответствующее слову hello. Так можно сделать много файлов перевода для разных языков и программа будет правильно говорить на любом компьютере в любой стране.

lubocka
в всплывающем окне отображаются кнопки с надписями “да” , “нет”
Это можно и без gettext заменить. Надо для кнопок свои названия подать, обычно это предусмотрено.
lubocka
py.user.next
обычно это предусмотрено.
если возможно пример

почитала я статью https://habrahabr.ru/post/73554/
и до последнего шага все получилось. Но то ли не могу разобраться с каталогами, то ли моя версия не подходит


в итоге не переводит.

——————————————————————-

Но впрочем мне и не нужен перевод того что сама пишу, мне нужен перевод стандартных библиотек, таких как MessageBox, QColorDialog, QFontDialog, QFileDialog и т.д.
Уверена, что есть простые способы перевода и думаю без танцев с компиляциями и т.д.
Rodegast
Как-то так:
 app = QtGui.QApplication(sys.argv)
translator = QtCore.QTranslator()
translator.load("перевод.qm")
app.installTranslator(translator)
Файлы переводов для стандартных диалогов поставляются вместе с Qt.
lubocka
спасибо, но почему-то не срабатывает. Надписи остались английскими.

 from PyQt5.Qt import *
class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initWindow()
    def initWindow(self):
        self.fontcolor = QColorDialog()
        layout = QHBoxLayout()
        layout.addWidget(self.fontcolor)
        self.setLayout(layout)
if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    translator = QTranslator()
    locale = QLocale.system().name()
    translator.load( locale,
                    QLibraryInfo.location(QLibraryInfo.TranslationsPath))
    app.installTranslator(translator)
    print(locale)
    # выводит 
    # ru_RU
    print(QLibraryInfo.location(QLibraryInfo.TranslationsPath))
    # выводит
    # C:/Users/WIN7/AppData/Local/Programs/Python/Python36-32/lib/site-packages/PyQt5/Qt/translations
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB