2 Commits

Author SHA1 Message Date
e9c75b998f chore(localization): update
All checks were successful
Check Translations (disabled until yaspeller is fixed) / check-translations (push) Has been skipped
Code check / Check code (push) Successful in 1m17s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-23 15:43:59 +05:00
bbfbc00c11 fix(settings): fix virtual keyboard
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-23 15:28:30 +05:00
12 changed files with 469 additions and 112 deletions

View File

@@ -20,3 +20,33 @@ Stop Game
Fullscreen Fullscreen
Fulscreen Fulscreen
\t \t
Горячая
vkbasalt
dgVoodoo2
Zink
Vulkan
VKD3D
DirectX12
Prev Dir
Forced
GOverlay
Glide
all
futex
DLSS
fullscreen
ProtonGE
window
compositing
Zink
Use
bundled
dxvk
older games
versions
DLL Overrides
COMP
VKD3D
Select needed
CPUs
cores

View File

@@ -21,9 +21,9 @@ Current translation status:
| Locale | Progress | Translated | | Locale | Progress | Translated |
| :----- | -------: | ---------: | | :----- | -------: | ---------: |
| [de_DE](./de_DE/LC_MESSAGES/messages.po) | 0% | 0 of 323 | | [de_DE](./de_DE/LC_MESSAGES/messages.po) | 0% | 0 of 339 |
| [es_ES](./es_ES/LC_MESSAGES/messages.po) | 0% | 0 of 323 | | [es_ES](./es_ES/LC_MESSAGES/messages.po) | 0% | 0 of 339 |
| [ru_RU](./ru_RU/LC_MESSAGES/messages.po) | 100% | 323 of 323 | | [ru_RU](./ru_RU/LC_MESSAGES/messages.po) | 100% | 339 of 339 |
--- ---

View File

@@ -21,9 +21,9 @@
| Локаль | Прогресс | Переведено | | Локаль | Прогресс | Переведено |
| :----- | -------: | ---------: | | :----- | -------: | ---------: |
| [de_DE](./de_DE/LC_MESSAGES/messages.po) | 0% | 0 из 323 | | [de_DE](./de_DE/LC_MESSAGES/messages.po) | 0% | 0 из 339 |
| [es_ES](./es_ES/LC_MESSAGES/messages.po) | 0% | 0 из 323 | | [es_ES](./es_ES/LC_MESSAGES/messages.po) | 0% | 0 из 339 |
| [ru_RU](./ru_RU/LC_MESSAGES/messages.po) | 100% | 323 из 323 | | [ru_RU](./ru_RU/LC_MESSAGES/messages.po) | 100% | 339 из 339 |
--- ---

View File

@@ -724,7 +724,7 @@ class InputManager(QObject):
logger.error(f"Error restoring gamepad handlers from Settings: {e}") logger.error(f"Error restoring gamepad handlers from Settings: {e}")
def handle_settings_button(self, button_code, value): def handle_settings_button(self, button_code, value):
if self.settings_dialog is None or value == 0: if self.settings_dialog is None:
return return
try: try:
@@ -732,111 +732,123 @@ class InputManager(QObject):
kb = getattr(self.settings_dialog, 'keyboard', None) kb = getattr(self.settings_dialog, 'keyboard', None)
if kb and kb.isVisible(): if kb and kb.isVisible():
if button_code in BUTTONS['back']: if button_code in BUTTONS['back']:
kb.hide() if value != 0: # Only handle press, not release
if kb.current_input_widget: kb.hide()
kb.current_input_widget.setFocus() if kb.current_input_widget:
kb.current_input_widget.setFocus()
return # Return early to avoid dialog closing logic
elif button_code in (BUTTONS['confirm'] | BUTTONS['context_menu']): elif button_code in (BUTTONS['confirm'] | BUTTONS['context_menu']):
kb.activateFocusedKey() if value != 0: # Only handle press, not release
kb.activateFocusedKey()
return
elif button_code in BUTTONS['prev_tab']: elif button_code in BUTTONS['prev_tab']:
kb.on_lang_click() if value != 0: # Only handle press, not release
kb.on_lang_click()
return
elif button_code in BUTTONS['next_tab']: elif button_code in BUTTONS['next_tab']:
kb.on_shift_click(not kb.shift_pressed) if value != 0: # Only handle press, not release
kb.on_shift_click(not kb.shift_pressed)
return
elif button_code in BUTTONS['add_game']: elif button_code in BUTTONS['add_game']:
kb.on_backspace_pressed() if value != 0: # Press event
return kb.on_backspace_pressed()
else: # Release event
kb.stop_backspace_repeat()
return
# Handle common UI elements like QMessageBox, QMenu, etc. # Handle common UI elements like QMessageBox, QMenu, etc.
if self._handle_common_ui_elements(button_code): if self._handle_common_ui_elements(button_code):
return return
# Handle other QDialogs # Handle other QDialogs
popup = QApplication.activePopupWidget() if value != 0: # Only handle press events, not releases
if isinstance(popup, QDialog): popup = QApplication.activePopupWidget()
if button_code in BUTTONS['confirm']: if isinstance(popup, QDialog):
popup.accept() if button_code in BUTTONS['confirm']:
elif button_code in BUTTONS['back']: popup.accept()
popup.reject() elif button_code in BUTTONS['back']:
return popup.reject()
# 3. Advanced Tab Combo Box Logic
table = self._get_current_settings_table()
open_combo = None
if table and table == self.settings_dialog.advanced_table:
for r in range(table.rowCount()):
w = table.cellWidget(r, 1)
if isinstance(w, QComboBox) and w.view().isVisible():
open_combo = w
break
# B Button - Close combo or dialog
if button_code in BUTTONS['back']:
if open_combo:
open_combo.hidePopup()
if table:
table.setFocus()
else:
self.settings_dialog.reject()
return
# A Button - Confirm
if button_code in BUTTONS['confirm']:
if open_combo:
view = open_combo.view()
if view.currentIndex().isValid():
open_combo.setCurrentIndex(view.currentIndex().row())
open_combo.hidePopup()
if table:
table.setFocus()
return return
# Standard interaction # 3. Advanced Tab Combo Box Logic
focused = QApplication.focusWidget() table = self._get_current_settings_table()
if isinstance(focused, QTableWidget) and table and focused.currentRow() >= 0: open_combo = None
row = focused.currentRow() if table and table == self.settings_dialog.advanced_table:
cell = focused.cellWidget(row, 1) for r in range(table.rowCount()):
w = table.cellWidget(r, 1)
if isinstance(w, QComboBox) and w.view().isVisible():
open_combo = w
break
# Main settings (checkboxes) # B Button - Close combo or dialog
if self.settings_dialog and table == self.settings_dialog.settings_table: if button_code in BUTTONS['back']:
item = focused.item(row, 1) if open_combo:
if item and (item.flags() & Qt.ItemFlag.ItemIsUserCheckable): open_combo.hidePopup()
new_state = Qt.CheckState.Checked if item.checkState() == Qt.CheckState.Unchecked else Qt.CheckState.Unchecked if table:
item.setCheckState(new_state) table.setFocus()
else:
self.settings_dialog.reject()
return
# A Button - Confirm
if button_code in BUTTONS['confirm']:
if open_combo:
view = open_combo.view()
if view.currentIndex().isValid():
open_combo.setCurrentIndex(view.currentIndex().row())
open_combo.hidePopup()
if table:
table.setFocus()
return return
# Advanced settings # Standard interaction
if isinstance(cell, QComboBox) and cell.isEnabled(): focused = QApplication.focusWidget()
cell.showPopup() if isinstance(focused, QTableWidget) and table and focused.currentRow() >= 0:
cell.setFocus() row = focused.currentRow()
return cell = focused.cellWidget(row, 1)
if isinstance(cell, QLineEdit):
cell.setFocus()
self.settings_dialog.show_virtual_keyboard(cell)
return
if isinstance(focused, QLineEdit): # Main settings (checkboxes)
self.settings_dialog.show_virtual_keyboard(focused) if self.settings_dialog and table == self.settings_dialog.settings_table:
return item = focused.item(row, 1)
if item and (item.flags() & Qt.ItemFlag.ItemIsUserCheckable):
new_state = Qt.CheckState.Checked if item.checkState() == Qt.CheckState.Unchecked else Qt.CheckState.Unchecked
item.setCheckState(new_state)
return
# 4. Global Shortcuts # Advanced settings
if button_code in BUTTONS['add_game']: # X: Apply if isinstance(cell, QComboBox) and cell.isEnabled():
self.settings_dialog.apply_changes() cell.showPopup()
cell.setFocus()
return
if isinstance(cell, QLineEdit):
cell.setFocus()
self.settings_dialog.show_virtual_keyboard(cell)
return
elif button_code in BUTTONS['prev_dir']: # Y: Search + Keyboard if isinstance(focused, QLineEdit):
self.settings_dialog.search_edit.setFocus() self.settings_dialog.show_virtual_keyboard(focused)
self.settings_dialog.show_virtual_keyboard(self.settings_dialog.search_edit) return
elif button_code in BUTTONS['prev_tab']: # LB # 4. Global Shortcuts
idx = max(0, self.settings_dialog.tab_widget.currentIndex() - 1) if button_code in BUTTONS['add_game']: # X: Apply
self.settings_dialog.tab_widget.setCurrentIndex(idx) self.settings_dialog.apply_changes()
self._focus_first_row_in_current_settings_table()
elif button_code in BUTTONS['next_tab']: # RB elif button_code in BUTTONS['prev_dir']: # Y: Search + Keyboard
idx = min(self.settings_dialog.tab_widget.count() - 1, self.settings_dialog.tab_widget.currentIndex() + 1) self.settings_dialog.search_edit.setFocus()
self.settings_dialog.tab_widget.setCurrentIndex(idx) self.settings_dialog.show_virtual_keyboard(self.settings_dialog.search_edit)
self._focus_first_row_in_current_settings_table()
else: elif button_code in BUTTONS['prev_tab']: # LB
self._parent.activateFocusedWidget() idx = max(0, self.settings_dialog.tab_widget.currentIndex() - 1)
self.settings_dialog.tab_widget.setCurrentIndex(idx)
self._focus_first_row_in_current_settings_table()
elif button_code in BUTTONS['next_tab']: # RB
idx = min(self.settings_dialog.tab_widget.count() - 1, self.settings_dialog.tab_widget.currentIndex() + 1)
self.settings_dialog.tab_widget.setCurrentIndex(idx)
self._focus_first_row_in_current_settings_table()
else:
self._parent.activateFocusedWidget()
except Exception as e: except Exception as e:
logger.error(f"Error in handle_settings_button: {e}") logger.error(f"Error in handle_settings_button: {e}")

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-11-11 17:00+0500\n" "POT-Creation-Date: 2025-11-23 15:42+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de_DE\n" "Language: de_DE\n"
@@ -279,6 +279,12 @@ msgstr ""
msgid "Next Tab" msgid "Next Tab"
msgstr "" msgstr ""
msgid "Save"
msgstr ""
msgid "Search"
msgstr ""
#, python-brace-format #, python-brace-format
msgid "Launching {0}" msgid "Launching {0}"
msgstr "" msgstr ""
@@ -368,6 +374,12 @@ msgstr ""
msgid "Exe Settings" msgid "Exe Settings"
msgstr "" msgstr ""
msgid "Search:"
msgstr ""
msgid "Search settings..."
msgstr ""
msgid "Main" msgid "Main"
msgstr "" msgstr ""
@@ -461,9 +473,6 @@ msgstr ""
msgid "Fullscreen" msgid "Fullscreen"
msgstr "" msgstr ""
msgid "Search"
msgstr ""
msgid "Installation already in progress." msgid "Installation already in progress."
msgstr "" msgstr ""
@@ -483,6 +492,12 @@ msgstr ""
msgid "Installation error." msgid "Installation error."
msgstr "" msgstr ""
msgid "Refresh Grid"
msgstr ""
msgid "Game library refreshed"
msgstr ""
msgid "Loading Steam games..." msgid "Loading Steam games..."
msgstr "" msgstr ""
@@ -495,6 +510,15 @@ msgstr ""
msgid "Find Games ..." msgid "Find Games ..."
msgstr "" msgstr ""
msgid "A refresh is already in progress..."
msgstr ""
msgid "Refreshing..."
msgstr ""
msgid "Refreshing game library..."
msgstr ""
#, python-brace-format #, python-brace-format
msgid "Added '{name}'" msgid "Added '{name}'"
msgstr "" msgstr ""
@@ -938,6 +962,55 @@ msgstr ""
msgid "Use async dxvk-sarek (experimental)" msgid "Use async dxvk-sarek (experimental)"
msgstr "" msgstr ""
msgid "Wine Version"
msgstr ""
msgid "Select the Wine or Proton version to use for this executable."
msgstr ""
msgid "Prefix Name"
msgstr ""
msgid "Select the Wine prefix to use."
msgstr ""
msgid "Latest"
msgstr ""
msgid "Stable"
msgstr ""
msgid "Vulkan Backend"
msgstr ""
msgid ""
"Select the rendering backend for translating DirectX → Vulkan/OpenGL:\n"
"\n"
"• Auto latest DXVK + VKD3D (recommended)\n"
" The newest versions from the developers. Give the best compatibility "
"and performance in modern games.\n"
" Require up-to-date drivers:\n"
" AMD: Mesa 25.0+ or proprietary AMDVLK 2024.Q4+\n"
" NVIDIA: driver 550.54.14 or newer\n"
" Intel: Mesa 24.2+\n"
"\n"
"• Stable proven DXVK + VKD3D\n"
" Older but extremely well-tested versions. Work on any drivers that "
"support Vulkan 1.3+.\n"
" The best choice if you have problems with the newest versions.\n"
"\n"
"• Sarek experimental DXVK-Sarek + VKD3D-Sarek\n"
" Work even on older drivers and video cards that support at least "
"Vulkan 1.1.\n"
"\n"
"• WINED3D OpenGL translation (fallback)\n"
" No DXVK/VKD3D used. DirectX is translated to OpenGL via built-in "
"WineD3D.\n"
" Works on absolutely any hardware, but performance is significantly "
"lower.\n"
" Use only as a last resort when nothing else starts."
msgstr ""
msgid "Windows version" msgid "Windows version"
msgstr "" msgstr ""

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-11-11 17:00+0500\n" "POT-Creation-Date: 2025-11-23 15:42+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: es_ES\n" "Language: es_ES\n"
@@ -279,6 +279,12 @@ msgstr ""
msgid "Next Tab" msgid "Next Tab"
msgstr "" msgstr ""
msgid "Save"
msgstr ""
msgid "Search"
msgstr ""
#, python-brace-format #, python-brace-format
msgid "Launching {0}" msgid "Launching {0}"
msgstr "" msgstr ""
@@ -368,6 +374,12 @@ msgstr ""
msgid "Exe Settings" msgid "Exe Settings"
msgstr "" msgstr ""
msgid "Search:"
msgstr ""
msgid "Search settings..."
msgstr ""
msgid "Main" msgid "Main"
msgstr "" msgstr ""
@@ -461,9 +473,6 @@ msgstr ""
msgid "Fullscreen" msgid "Fullscreen"
msgstr "" msgstr ""
msgid "Search"
msgstr ""
msgid "Installation already in progress." msgid "Installation already in progress."
msgstr "" msgstr ""
@@ -483,6 +492,12 @@ msgstr ""
msgid "Installation error." msgid "Installation error."
msgstr "" msgstr ""
msgid "Refresh Grid"
msgstr ""
msgid "Game library refreshed"
msgstr ""
msgid "Loading Steam games..." msgid "Loading Steam games..."
msgstr "" msgstr ""
@@ -495,6 +510,15 @@ msgstr ""
msgid "Find Games ..." msgid "Find Games ..."
msgstr "" msgstr ""
msgid "A refresh is already in progress..."
msgstr ""
msgid "Refreshing..."
msgstr ""
msgid "Refreshing game library..."
msgstr ""
#, python-brace-format #, python-brace-format
msgid "Added '{name}'" msgid "Added '{name}'"
msgstr "" msgstr ""
@@ -938,6 +962,55 @@ msgstr ""
msgid "Use async dxvk-sarek (experimental)" msgid "Use async dxvk-sarek (experimental)"
msgstr "" msgstr ""
msgid "Wine Version"
msgstr ""
msgid "Select the Wine or Proton version to use for this executable."
msgstr ""
msgid "Prefix Name"
msgstr ""
msgid "Select the Wine prefix to use."
msgstr ""
msgid "Latest"
msgstr ""
msgid "Stable"
msgstr ""
msgid "Vulkan Backend"
msgstr ""
msgid ""
"Select the rendering backend for translating DirectX → Vulkan/OpenGL:\n"
"\n"
"• Auto latest DXVK + VKD3D (recommended)\n"
" The newest versions from the developers. Give the best compatibility "
"and performance in modern games.\n"
" Require up-to-date drivers:\n"
" AMD: Mesa 25.0+ or proprietary AMDVLK 2024.Q4+\n"
" NVIDIA: driver 550.54.14 or newer\n"
" Intel: Mesa 24.2+\n"
"\n"
"• Stable proven DXVK + VKD3D\n"
" Older but extremely well-tested versions. Work on any drivers that "
"support Vulkan 1.3+.\n"
" The best choice if you have problems with the newest versions.\n"
"\n"
"• Sarek experimental DXVK-Sarek + VKD3D-Sarek\n"
" Work even on older drivers and video cards that support at least "
"Vulkan 1.1.\n"
"\n"
"• WINED3D OpenGL translation (fallback)\n"
" No DXVK/VKD3D used. DirectX is translated to OpenGL via built-in "
"WineD3D.\n"
" Works on absolutely any hardware, but performance is significantly "
"lower.\n"
" Use only as a last resort when nothing else starts."
msgstr ""
msgid "Windows version" msgid "Windows version"
msgstr "" msgstr ""

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PortProtonQt 0.1.1\n" "Project-Id-Version: PortProtonQt 0.1.1\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-11-11 17:00+0500\n" "POT-Creation-Date: 2025-11-23 15:43+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -277,6 +277,12 @@ msgstr ""
msgid "Next Tab" msgid "Next Tab"
msgstr "" msgstr ""
msgid "Save"
msgstr ""
msgid "Search"
msgstr ""
#, python-brace-format #, python-brace-format
msgid "Launching {0}" msgid "Launching {0}"
msgstr "" msgstr ""
@@ -366,6 +372,12 @@ msgstr ""
msgid "Exe Settings" msgid "Exe Settings"
msgstr "" msgstr ""
msgid "Search:"
msgstr ""
msgid "Search settings..."
msgstr ""
msgid "Main" msgid "Main"
msgstr "" msgstr ""
@@ -459,9 +471,6 @@ msgstr ""
msgid "Fullscreen" msgid "Fullscreen"
msgstr "" msgstr ""
msgid "Search"
msgstr ""
msgid "Installation already in progress." msgid "Installation already in progress."
msgstr "" msgstr ""
@@ -481,6 +490,12 @@ msgstr ""
msgid "Installation error." msgid "Installation error."
msgstr "" msgstr ""
msgid "Refresh Grid"
msgstr ""
msgid "Game library refreshed"
msgstr ""
msgid "Loading Steam games..." msgid "Loading Steam games..."
msgstr "" msgstr ""
@@ -493,6 +508,15 @@ msgstr ""
msgid "Find Games ..." msgid "Find Games ..."
msgstr "" msgstr ""
msgid "A refresh is already in progress..."
msgstr ""
msgid "Refreshing..."
msgstr ""
msgid "Refreshing game library..."
msgstr ""
#, python-brace-format #, python-brace-format
msgid "Added '{name}'" msgid "Added '{name}'"
msgstr "" msgstr ""
@@ -936,6 +960,55 @@ msgstr ""
msgid "Use async dxvk-sarek (experimental)" msgid "Use async dxvk-sarek (experimental)"
msgstr "" msgstr ""
msgid "Wine Version"
msgstr ""
msgid "Select the Wine or Proton version to use for this executable."
msgstr ""
msgid "Prefix Name"
msgstr ""
msgid "Select the Wine prefix to use."
msgstr ""
msgid "Latest"
msgstr ""
msgid "Stable"
msgstr ""
msgid "Vulkan Backend"
msgstr ""
msgid ""
"Select the rendering backend for translating DirectX → Vulkan/OpenGL:\n"
"\n"
"• Auto latest DXVK + VKD3D (recommended)\n"
" The newest versions from the developers. Give the best compatibility "
"and performance in modern games.\n"
" Require up-to-date drivers:\n"
" AMD: Mesa 25.0+ or proprietary AMDVLK 2024.Q4+\n"
" NVIDIA: driver 550.54.14 or newer\n"
" Intel: Mesa 24.2+\n"
"\n"
"• Stable proven DXVK + VKD3D\n"
" Older but extremely well-tested versions. Work on any drivers that "
"support Vulkan 1.3+.\n"
" The best choice if you have problems with the newest versions.\n"
"\n"
"• Sarek experimental DXVK-Sarek + VKD3D-Sarek\n"
" Work even on older drivers and video cards that support at least "
"Vulkan 1.1.\n"
"\n"
"• WINED3D OpenGL translation (fallback)\n"
" No DXVK/VKD3D used. DirectX is translated to OpenGL via built-in "
"WineD3D.\n"
" Works on absolutely any hardware, but performance is significantly "
"lower.\n"
" Use only as a last resort when nothing else starts."
msgstr ""
msgid "Windows version" msgid "Windows version"
msgstr "" msgstr ""

View File

@@ -9,8 +9,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-11-11 17:00+0500\n" "POT-Creation-Date: 2025-11-23 15:42+0500\n"
"PO-Revision-Date: 2025-11-11 17:00+0500\n" "PO-Revision-Date: 2025-11-23 15:42+0500\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language: ru_RU\n" "Language: ru_RU\n"
"Language-Team: ru_RU <LL@li.org>\n" "Language-Team: ru_RU <LL@li.org>\n"
@@ -286,6 +286,12 @@ msgstr "Предыдущая вкладка"
msgid "Next Tab" msgid "Next Tab"
msgstr "Следующая вкладка" msgstr "Следующая вкладка"
msgid "Save"
msgstr "Сохранить"
msgid "Search"
msgstr "Поиск"
#, python-brace-format #, python-brace-format
msgid "Launching {0}" msgid "Launching {0}"
msgstr "Идёт запуск {0}" msgstr "Идёт запуск {0}"
@@ -375,6 +381,12 @@ msgstr "Компоненты успешно установлены."
msgid "Exe Settings" msgid "Exe Settings"
msgstr "Настройки EXE" msgstr "Настройки EXE"
msgid "Search:"
msgstr "Поиск:"
msgid "Search settings..."
msgstr "Поиск настроек..."
msgid "Main" msgid "Main"
msgstr "Основные" msgstr "Основные"
@@ -468,9 +480,6 @@ msgstr "Назад"
msgid "Fullscreen" msgid "Fullscreen"
msgstr "Полный экран" msgstr "Полный экран"
msgid "Search"
msgstr "Поиск"
msgid "Installation already in progress." msgid "Installation already in progress."
msgstr "Установка уже выполняется." msgstr "Установка уже выполняется."
@@ -490,6 +499,12 @@ msgstr "Установка не удалась."
msgid "Installation error." msgid "Installation error."
msgstr "Ошибка установки." msgstr "Ошибка установки."
msgid "Refresh Grid"
msgstr "Обновить"
msgid "Game library refreshed"
msgstr "Игровая библиотека обновлена"
msgid "Loading Steam games..." msgid "Loading Steam games..."
msgstr "Загрузка игр из Steam..." msgstr "Загрузка игр из Steam..."
@@ -502,6 +517,15 @@ msgstr "Игровая библиотека"
msgid "Find Games ..." msgid "Find Games ..."
msgstr "Найти игры..." msgstr "Найти игры..."
msgid "A refresh is already in progress..."
msgstr "Обновление уже выполняется..."
msgid "Refreshing..."
msgstr "Обновление..."
msgid "Refreshing game library..."
msgstr "Обновление игровой библиотеки..."
#, python-brace-format #, python-brace-format
msgid "Added '{name}'" msgid "Added '{name}'"
msgstr "'{name}' добавлен(а)" msgstr "'{name}' добавлен(а)"
@@ -963,6 +987,78 @@ msgstr "Использовать встроенные dxvk/vkd3d из Wine/Proto
msgid "Use async dxvk-sarek (experimental)" msgid "Use async dxvk-sarek (experimental)"
msgstr "Использовать асинхронный dxvk-sarek (экспериментально)" msgstr "Использовать асинхронный dxvk-sarek (экспериментально)"
msgid "Wine Version"
msgstr "Версия Wine"
msgid "Select the Wine or Proton version to use for this executable."
msgstr "Выбор версии Wine или Proton для использования с этим исполняемым файлом."
msgid "Prefix Name"
msgstr "Имя префикса"
msgid "Select the Wine prefix to use."
msgstr "Выбор версии Wine для использования."
msgid "Latest"
msgstr "Последние"
msgid "Stable"
msgstr "Стабильные"
msgid "Vulkan Backend"
msgstr "Vulkan рендеринг"
msgid ""
"Select the rendering backend for translating DirectX → Vulkan/OpenGL:\n"
"\n"
"• Auto latest DXVK + VKD3D (recommended)\n"
" The newest versions from the developers. Give the best compatibility "
"and performance in modern games.\n"
" Require up-to-date drivers:\n"
" AMD: Mesa 25.0+ or proprietary AMDVLK 2024.Q4+\n"
" NVIDIA: driver 550.54.14 or newer\n"
" Intel: Mesa 24.2+\n"
"\n"
"• Stable proven DXVK + VKD3D\n"
" Older but extremely well-tested versions. Work on any drivers that "
"support Vulkan 1.3+.\n"
" The best choice if you have problems with the newest versions.\n"
"\n"
"• Sarek experimental DXVK-Sarek + VKD3D-Sarek\n"
" Work even on older drivers and video cards that support at least "
"Vulkan 1.1.\n"
"\n"
"• WINED3D OpenGL translation (fallback)\n"
" No DXVK/VKD3D used. DirectX is translated to OpenGL via built-in "
"WineD3D.\n"
" Works on absolutely any hardware, but performance is significantly "
"lower.\n"
" Use only as a last resort when nothing else starts."
msgstr ""
"Выбор рендеринга для трансляции DirectX → Vulkan/OpenGL:\n"
"\n"
"• Авто последние версии DXVK + VKD3D (рекомендуется)\n"
" Новейшие версии от разработчиков. Обеспечивают наилучшую совместимость и"
" производительность в современных играх.\n"
" Требуются актуальные драйверы:\n"
" AMD: Mesa 25.0+ или проприетарный AMDVLK 2024.Q4+\n"
" NVIDIA: 550.54.14 или новее\n"
" Intel: Mesa 24.2+\n"
"\n"
"• Стабильный проверенные версии DXVK + VKD3D\n"
" Более старые, но тщательно протестированные версии. Работают с любыми "
"драйверами, поддерживающие Vulkan 1.3+.\n"
" Лучший выбор, если у вас возникли проблемы с последними версиями.\n"
"\n"
"• Sarek экспериментальная версия DXVK-Sarek + VKD3D-Sarek\n"
"Работает даже на старых драйверах и видеокартах, поддерживающих как "
"минимум Vulkan 1.1.\n"
"• WINED3D трансляция OpenGL (для видеокарт без поддержки Vulkan)\n"
"DXVK/VKD3D не используется. DirectX транслируется в OpenGL через "
"встроенную WineD3D.Работает абсолютно на любом оборудовании, но "
"производительность значительно снижается.Используйте только в крайнем "
"случае, когда ничего другое не запускается."
msgid "Windows version" msgid "Windows version"
msgstr "Версия Windows" msgstr "Версия Windows"

View File

@@ -78,10 +78,10 @@ def get_advanced_settings(disabled_text, logical_core_options, locale_options,
# 3. Vulkan Backend # 3. Vulkan Backend
vulkan_options = [ vulkan_options = [
_("Auto latest DXVK + VKD3D (recommended)"), # → 6 _("Latest"), # → 6
_("Stable proven DXVK + VKD3D"), # → 2 _("Stable"), # → 2
_("Sarek experimental DXVK-Sarek + VKD3D-Sarek"), # → 1 ("Sarek"), # → 1
_("WINED3D OpenGL (fallback only)") # → 0 ("WINED3D OpenGL") # → 0
] ]
# Маппинг: отображаемый текст → реальное значение в ppdb # Маппинг: отображаемый текст → реальное значение в ppdb