Skip to content

Commit

Permalink
Add: localizations
Browse files Browse the repository at this point in the history
  • Loading branch information
DUB1401 committed Aug 11, 2023
1 parent 299c5ae commit a941e27
Show file tree
Hide file tree
Showing 4 changed files with 127 additions and 19 deletions.
3 changes: 1 addition & 2 deletions Build/metadata.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ VSVersionInfo(
StringStruct(u'OriginalFilename', u'PornHub Downloader.exe'),
StringStruct(u'ProductName', u'PornHub Downloader'),
StringStruct(u'ProductVersion', u'1.3.1')])
]),
VarFileInfo([VarStruct(u'Translation', [1033, 1200])])
])
]
)
11 changes: 8 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,25 @@ pip install -r requirements.txt
5. Дождаться скачивания видео в папку _Downloads_, в директории скрипта.

# Скриншот
![2023-07-31_19-22-56](https://github.com/DUB1401/PornHub-Downloader/assets/40277356/beec4c4e-ba0c-42d1-bff9-ce8fd7a7a3b4)
![2023-08-11_12-41-08](https://github.com/DUB1401/PornHub-Downloader/assets/40277356/c319a663-3969-4a2f-8b7b-94a3438b4e0c)

# Сборка
1. Подготовить скрипт Python к работе согласно инструкции из порядка установки и использования.
2. Перейти в папку _Build_, внутри директории скрипта.
3. Запустить файл _build.bat_ и дождаться завершения работы.
4. Исполняемая версия будет помещена по адресу _Build/Release_ вместе со всеми зависимостями.

## Локализация
Для добавления сторонней локализации необходимо отредактировать файл [Locale.py](Source/Locale.py): в `LOCALES` указываются списки используемых программой строк на целевом языке, ключём должен являться двухбуквенный тег языка в верхнем регистре по стандарту **ISO 639-1**.

Доступные локализации: `EN`, `DE`, `PL`, `RU`, `UK`.

## Версии поставляемых бинарных файлов
| Файл | Версия | Источник |
|---------|-------------------------------|--------------------------------------------------------------------|
| yt-dlp | _2023.07.06_ | [ссылка](https://github.com/yt-dlp/yt-dlp/releases/tag/2023.07.06) |
| ffmpeg | _6.0 2023-03-04_ (essentials) | [ссылка](https://github.com/GyanD/codexffmpeg/releases/tag/6.0) |
| ffprobe | _6.0 2023-03-04_ (essentials) | [ссылка](https://github.com/GyanD/codexffmpeg/releases/tag/6.0) |
| ffmpeg | _6.0 2023-03-04 (essentials)_ | [ссылка](https://github.com/GyanD/codexffmpeg/releases/tag/6.0) |
| ffprobe | _6.0 2023-03-04 (essentials)_ | [ссылка](https://github.com/GyanD/codexffmpeg/releases/tag/6.0) |

# Благодарность
* [@yt-dlp](https://github.com/yt-dlp) – библиотека загрузки потокового видео.
Expand Down
104 changes: 104 additions & 0 deletions Source/Locale.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
import ctypes
import locale
import sys

# Словарь локализаций.
LOCALES = {
"DE": [
"Werbung",
"Klar",
"Copy output",
"Ausgabe kopieren",
"Fügen sie hier links zu videos ein",
"Ausgabeprotokolle",
"Links einfügen",
"Einstellung",
"Qualität",
"Auflösung des heruntergeladenen videos.",
"Thema",
"Stil des programmfensters.",
"Sortieren nach modellen"
],
"EN": [
"Advertisement",
"Clear",
"Copy output",
"Download",
"Paste here links to videos",
"Output logs",
"Paste links",
"Settings",
"Cuality",
"Resolution of the downloaded video.",
"Theme",
"Style of the program window.",
"Sort by models"
],
"PL": [
"Reklama",
"Oczyścić",
"Kopiuj dzienniki",
"Pozbyć się",
"Wstaw tutaj linki do filmów",
"Logi",
"Wstaw linki",
"Konfiguracja",
"Jakość",
"Rozdzielczość pobieranego wideo.",
"Temat",
"Styl okna programu.",
"Sortuj według modeli"
],
"RU": [
"Реклама",
"Очистить",
"Копировать логи",
"Скачать",
"Вставьте сюда ссылки на видео",
"Логи",
"Вставить ссылки",
"Настройки",
"Качество",
"Разрешение загружаемого видео.",
"Тема",
"Стиль окна программы.",
"Сортировать по моделям"
],
"UK": [
"Реклама",
"Очистити",
"Копіювати логи",
"Скачати",
"Вставте сюди посилання на відео",
"Логи",
"Вставити посилання",
"Налаштування",
"Якість",
"Роздільна здатність завантажуваного відео.",
"Тема",
"Стиль вікна програми.",
"Сортувати за моделями"
]
}

# Текущая локализация.
CURRENT_LOCALE = LOCALES["EN"]
# Тег текущего языка.
LanguageTag = None

# Если устройство работает под управлением ОС семейства Linux.
if sys.platform in ["linux", "linux2"]:
# Получение тега текущего языка.
LanguageTag = locale.getlocale().split('_')[0].upper()

# Если устройство работает под управлением ОС семейства Windows.
elif sys.platform == "win32":
# Получение сведений о системе Windows.
WinDLL = ctypes.windll.kernel32
WinDLL.GetUserDefaultUILanguage()
# Получение тега текущего языка.
LanguageTag = locale.windows_locale[WinDLL.GetUserDefaultUILanguage()].split('_')[0].upper()

# Если существует локализация, переключиться на неё.
if LanguageTag in LOCALES.keys():
CURRENT_LOCALE = LOCALES[LanguageTag]
28 changes: 14 additions & 14 deletions Source/MainWindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
QTextEdit,
QVBoxLayout
)

from PyQt6.QtGui import QCursor, QDesktopServices, QMovie, QTextCursor
from Source.QLabelAdvertisement import QLabelAdvertisement
from PyQt6.QtCore import Qt,QSize, QThread, QUrl
from Source.Locale import CURRENT_LOCALE
from Source.yt_dlp import yt_dlp

import pyperclip
Expand Down Expand Up @@ -201,21 +201,21 @@ def __CreateBasicUI(self):
self.AdsBox.move(870, 170)
self.AdsBox.resize(200, 300)
self.AdsBox.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.AdsBox.setTitle("📰 Advertisement")
self.AdsBox.setTitle(f"📰 {CURRENT_LOCALE[0]}")

# Создание объекта GUI: кнока очистки вывода.
self.Clear = QPushButton(self)
self.Clear.clicked.connect(self.__Clear)
self.Clear.move(870, 590)
self.Clear.resize(200, 40)
self.Clear.setText("🧹 Clear")
self.Clear.setText(f"🧹 {CURRENT_LOCALE[1]}")

# Создание объекта GUI: кнока копирования вывода.
self.Copy = QPushButton(self)
self.Copy.clicked.connect(self.__CopyOutput)
self.Copy.move(870, 540)
self.Copy.resize(200, 40)
self.Copy.setText("📋 Copy output")
self.Copy.setText(f"📋 {CURRENT_LOCALE[2]}")

# Создание объекта GUI: подпись защиты прав.
self.Copyright = QLabel(self)
Expand All @@ -229,13 +229,13 @@ def __CreateBasicUI(self):
self.Download.move(870, 640)
self.Download.resize(200, 40)
self.Download.setEnabled(False)
self.Download.setText("⬇ Download")
self.Download.setText(f"⬇ {CURRENT_LOCALE[3]}")

# Создание объекта GUI: поле ввода ссылок на видео.
self.Input = QTextEdit(self)
self.Input.move(10, 10)
self.Input.resize(850, 420)
self.Input.setPlaceholderText("Paste here links to videos")
self.Input.setPlaceholderText(CURRENT_LOCALE[4])
self.Input.textChanged.connect(self.__FormatInput)

# Создание объекта GUI: ссылка на GitHub.
Expand All @@ -250,15 +250,15 @@ def __CreateBasicUI(self):
self.Output.move(10, 490)
self.Output.resize(850, 190)
self.Output.setReadOnly(True)
self.Output.setPlaceholderText("Output logs")
self.Output.setPlaceholderText(CURRENT_LOCALE[5])
self.Output.textChanged.connect(self.__ScrollOutputToEnd)

# Создание объекта GUI: кнока добавления ссылки в очередь.
self.Paste = QPushButton(self)
self.Paste.clicked.connect(self.__Paste)
self.Paste.move(870, 490)
self.Paste.resize(200, 40)
self.Paste.setText("📖 Paste link")
self.Paste.setText(f"📖 {CURRENT_LOCALE[6]}")

# Создание объекта GUI: индикатор прогресса.
self.ProgressBar = QProgressBar(self)
Expand All @@ -272,7 +272,7 @@ def __CreateBasicUI(self):
self.SettingsBox.move(870, 10)
self.SettingsBox.resize(200, 160)
self.SettingsBox.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.SettingsBox.setTitle("🔧 Settings")
self.SettingsBox.setTitle(f"🔧 {CURRENT_LOCALE[7]}")

# Создание группы GUI: настройки.
def __CreateSettingsGroupUI(self):
Expand All @@ -286,7 +286,7 @@ def __CreateSettingsGroupUI(self):

# Создание объекта GUI: заголовок выбора качества.
CualityTitle = QLabel(self)
CualityTitle.setText("Cuality:")
CualityTitle.setText(f"{CURRENT_LOCALE[8]}:")
CualityTitle.adjustSize()

# Создание объекта GUI: селектор качества.
Expand All @@ -295,11 +295,11 @@ def __CreateSettingsGroupUI(self):
CualitySelecter.setCurrentIndex(self.__Settings["cuality"])
CualitySelecter.currentIndexChanged.connect(lambda: self.__SaveSetting("cuality", CualitySelecter.currentIndex()))
CualitySelecter.resize(180, 40)
CualitySelecter.setToolTip("Resolution of the downloaded video.")
CualitySelecter.setToolTip(CURRENT_LOCALE[9])

# Создание объекта GUI: заголовок выбора темы.
ThemeTitle = QLabel(self)
ThemeTitle.setText("Theme:")
ThemeTitle.setText(f"{CURRENT_LOCALE[10]}:")
ThemeTitle.adjustSize()

# Создание объекта GUI: селектор темы.
Expand All @@ -309,13 +309,13 @@ def __CreateSettingsGroupUI(self):
ThemeSelecter.currentIndexChanged.connect(lambda: self.__SaveSetting("theme", ThemeSelecter.currentIndex()))
ThemeSelecter.currentIndexChanged.connect(self.__ChangeTheme)
ThemeSelecter.resize(180, 20)
ThemeSelecter.setToolTip("Sets the style of the program window.")
ThemeSelecter.setToolTip(CURRENT_LOCALE[11])

# Создание объекта GUI: флаговая кнопка включения сортировки по моделям.
SortByModel = QCheckBox(self)
SortByModel.clicked.connect(lambda: self.__SaveSetting("sort-by-models", SortByModel.isChecked()))
SortByModel.setChecked(self.__Settings["sort-by-models"])
SortByModel.setText("Sort by models")
SortByModel.setText(CURRENT_LOCALE[12])
SortByModel.setToolTip("Sorting videos into the folders by uploader nickname.")
SortByModel.adjustSize()

Expand Down

0 comments on commit a941e27

Please sign in to comment.