diff --git a/CHANGELOG.md b/CHANGELOG.md
index 395b1182..b0e5e8f9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
# Changelog
+### 2.13.0
+- Added Russian (Русский) translations
+
### 2.12.0
- [#211](https://github.com/brentvollebregt/auto-py-to-exe/pull/211): Added Traditional Chinese translations
- [#218](https://github.com/brentvollebregt/auto-py-to-exe/issues/218): Added build directory override argument (`--build-directory-override`)
diff --git a/README.md b/README.md
index f7562368..1016c616 100644
--- a/README.md
+++ b/README.md
@@ -91,6 +91,17 @@ If you need something visual to help you get started, [I made a video for the or
## Issues Using the Tool
If you're having issues with the packaged executable or using this tool in general, I recommend you read [my blog post on common issues when using auto-py-to-exe](https://nitratine.net/blog/post/issues-when-using-auto-py-to-exe/?utm_source=auto_py_to_exe&utm_medium=readme_link&utm_campaign=auto_py_to_exe_help). This post covers things you should know about packaging Python scripts and fixes for things that commonly go wrong.
+## Translations
+
+| Language | Translator | Translated |
+| ------------------------------ | ------------------------------------------- | ------------------------------------ |
+| English | - | UI and README |
+| Chinese Simplified (简体中文) | [jiangzhe11](https://github.com/jiangzhe11) | UI and [README](./README-Chinese.md) |
+| Chinese Traditional (繁體中文) | [startgo](https://github.com/ystartgo) | UI |
+| Russian (Русский) | Oleg | UI |
+
+> Want to add a translation for another language? Update [i18n.js](https://github.com/brentvollebregt/auto-py-to-exe/blob/master/auto_py_to_exe/web/js/i18n.js) and submit a PR or attach it in an issue.
+
## Python 2.7 Support
As of [PyInstaller v4.0](https://github.com/pyinstaller/pyinstaller/releases/tag/v4.0) released on Aug 9 2020, Python 2.7 is no longer supported; although you can still use this tool with Python 2.7 by installing an older version of PyInstaller. [PyInstaller v3.6](https://github.com/pyinstaller/pyinstaller/releases/tag/v3.6) was the last version that supported Python 2.7; to install this, first uninstall any existing versions of PyInstaller and then execute `python -m pip install pyinstaller==3.6`.
diff --git a/auto_py_to_exe/__init__.py b/auto_py_to_exe/__init__.py
index 0b288f83..2321a43e 100644
--- a/auto_py_to_exe/__init__.py
+++ b/auto_py_to_exe/__init__.py
@@ -1 +1 @@
-__version__ = '2.12.0'
+__version__ = '2.13.0'
diff --git a/auto_py_to_exe/web/js/i18n.js b/auto_py_to_exe/web/js/i18n.js
index 6cb9d28a..e6e2e835 100644
--- a/auto_py_to_exe/web/js/i18n.js
+++ b/auto_py_to_exe/web/js/i18n.js
@@ -4,190 +4,226 @@ const translationMap = {
scriptLocation: {
en: 'Script Location',
zh: '脚本位置',
- zh_tw: '腳本位置'
+ zh_tw: '腳本位置',
+ ru: 'Расположение скрипта'
},
oneFile: {
en: 'Onefile',
zh: '单文件',
- zh_tw: '單檔案'
+ zh_tw: '單檔案',
+ ru: 'Один файл'
},
consoleWindow: {
en: 'Console Window',
zh: '控制台窗口',
- zh_tw: '控制台視窗'
+ zh_tw: '控制台視窗',
+ ru: 'Консольное приложение'
},
icon: {
en: 'Icon',
zh: '图标',
- zh_tw: '圖示'
+ zh_tw: '圖示',
+ ru: 'Иконка'
},
additionalFiles: {
en: 'Additional Files',
zh: '附加文件',
- zh_tw: '附加檔案'
+ zh_tw: '附加檔案',
+ ru: 'Дополнительные файлы'
},
advanced: {
en: 'Advanced',
zh: '高级',
- zh_tw: '進階'
+ zh_tw: '進階',
+ ru: 'Расширенные'
},
settings: {
en: 'Settings',
zh: '设置',
- zh_tw: '設定'
+ zh_tw: '設定',
+ ru: 'Настройки'
},
currentCommand: {
en: 'Current Command',
zh: '当前命令',
- zh_tw: '當前命令'
+ zh_tw: '當前命令',
+ ru: 'Текущая команда'
},
output: {
en: 'Output',
zh: '输出',
- zh_tw: '輸出'
+ zh_tw: '輸出',
+ ru: 'Вывод'
},
specificOptions: {
en: 'auto-py-to-exe Specific Options',
zh: 'auto-py-to-exe 特定的选项',
- zh_tw: 'auto-py-to-exe 特定的選項'
+ zh_tw: 'auto-py-to-exe 特定的選項',
+ ru: 'Особые параметры auto-py-to-exe'
},
outputDirectory: {
en: 'Output Directory',
zh: '输出路径',
- zh_tw: '輸出路徑'
+ zh_tw: '輸出路徑',
+ ru: 'Папка Вывода'
},
increaseRecursionLimit: {
en: 'Increase Recursion Limit',
zh: '增加递归限制',
- zh_tw: '增加遞歸限制'
+ zh_tw: '增加遞歸限制',
+ ru: 'Увеличить Лимит Рекурсии'
},
manuallyProvideOptions: {
en: 'Manually Provide Options',
zh: '手动提供选项',
- zh_tw: '手動提供選項'
+ zh_tw: '手動提供選項',
+ ru: 'Вручную Указанные Параметры'
},
manualArgumentInput: {
en: 'Manual Argument Input',
zh: '手动参数输入',
- zh_tw: '手動參數輸入'
+ zh_tw: '手動參數輸入',
+ ru: 'Ручной Ввод Аргументов'
},
configuration: {
en: 'Configuration',
zh: '配置',
- zh_tw: '配置'
+ zh_tw: '配置',
+ ru: 'Конфигурация'
}
},
button: {
browse: {
en: 'Browse',
zh: '浏览',
- zh_tw: '瀏覽'
+ zh_tw: '瀏覽',
+ ru: 'Расположение'
},
oneDirectory: {
en: 'One Directory',
zh: '单目录',
- zh_tw: '單目錄'
+ zh_tw: '單目錄',
+ ru: 'Одна Папка'
},
oneFile: {
en: 'One File',
zh: '单文件',
- zh_tw: '單檔案'
+ zh_tw: '單檔案',
+ ru: 'Один файл'
},
consoleBased: {
en: 'Console Based',
zh: '基于控制台的',
- zh_tw: '基於控制台'
+ zh_tw: '基於控制台',
+ ru: 'Консольное Приложение'
},
windowBased: {
en: 'Window Based (hide the console)',
zh: '基于窗口的 (隐藏控制台)',
- zh_tw: '基於視窗 (隱藏控制台)'
+ zh_tw: '基於視窗 (隱藏控制台)',
+ ru: 'Оконное Приложение (скрыть консоль)'
},
addFiles: {
en: 'Add Files',
zh: '添加文件',
- zh_tw: '新增檔案'
+ zh_tw: '新增檔案',
+ ru: 'Добавить Файлы'
},
addFolder: {
en: 'Add Folder',
zh: '添加目录',
- zh_tw: '新增目錄'
+ zh_tw: '新增目錄',
+ ru: 'Добавить Папку'
},
addBlank: {
en: 'Add Blank',
zh: '添加空白',
zh_tw: '新增空白',
+ ru: 'Добавить шаблон'
},
importConfig: {
en: 'Import Config From JSON File',
zh: '从JSON文件导入配置',
- zh_tw: '從 JSON 檔案導入配置'
+ zh_tw: '從 JSON 檔案導入配置',
+ ru: 'Импортировать Конфигурацию из JSON Файла'
},
exportConfig: {
en: 'Export Config To JSON File',
zh: '将配置导出到JSON文件',
- zh_tw: '將配置導出到 JSON 檔案'
+ zh_tw: '將配置導出到 JSON 檔案',
+ ru: 'Экспортировать Конфигурацию в JSON Файл'
},
convert: {
en: 'Convert .py to .exe',
zh: '将.PY转换为.EXE',
- zh_tw: '將.PY 轉換為 .EXE'
+ zh_tw: '將.PY 轉換為 .EXE',
+ ru: 'Конвертировать .py В .exe'
},
openOutputFolder: {
en: 'Open Output Folder',
zh: '打开输出目录',
- zh_tw: '打開輸出目錄'
+ zh_tw: '打開輸出目錄',
+ ru: 'Открыть Папку Вывода'
},
enable: {
en: 'Enable',
zh: '开启',
- zh_tw: '開啟'
- }
+ zh_tw: '開啟',
+ ru: 'Включить'
+ },
},
links: {
helpPost: {
en: 'Help Post',
zh: '帮助帖子',
- zh_tw: '幫助文章'
+ zh_tw: '幫助文章',
+ ru: 'Справка'
}
},
placeholders: {
pathToFile: {
en: 'Path to file',
zh: '文件路径',
- zh_tw: '檔案路徑'
+ zh_tw: '檔案路徑',
+ ru: 'Путь к файлу'
},
icoFile: {
en: '.ico file',
zh: '图标路径',
- zh_tw: '圖示路徑'
+ zh_tw: '圖示路徑',
+ ru: '.ico файл'
},
directory: {
en: 'DIRECTORY',
zh: '目录',
- zh_tw: '目錄'
+ zh_tw: '目錄',
+ ru: 'Директория'
},
arguments: {
en: 'ARGUMENTS',
zh: '参数',
- zh_tw: '參數'
- },
+ zh_tw: '參數',
+ ru: 'Аргументы'
+ }
},
helpText: {
outputDirectory: {
en: 'The directory to put the output in. Will be created if it doesn\'t exist',
zh: '用于放置输出的目录。如果不存在,将创建该目录',
- zh_tw: '用於放置輸出的目錄如果不存在,將自動創建該目錄'
+ zh_tw: '用於放置輸出的目錄如果不存在,將自動創建該目錄',
+ ru: 'Папка, в которую переместиться итоговое приложение. Будет создано при необходимости.'
},
increaseRecursionLimit: {
en: 'Having this enabled will set the recursion limit to 5000 using sys.setrecursionlimit(5000).',
zh: '启用此功能将使用sys.setrecursionlimit(5000)将递归限制设置为5000。',
- zh_tw: '啟用此功能將使用 sys.setrecursionlimit(5000)將遞歸限制設置為5000。'
+ zh_tw: '啟用此功能將使用 sys.setrecursionlimit(5000)將遞歸限制設置為5000。',
+ ru: 'Если включено установит лимит рекурсии равный 5000 с помощью sys.setrecursionlimit(5000).'
},
manualArgumentInput: {
en: 'Inject raw text into the generated command.',
zh: '将原始文本插入到生成的命令中。',
- zh_tw: '將原始文字插入到產生的命令中。'
+ zh_tw: '將原始文字插入到產生的命令中。',
+ ru: 'Вставит текст в итоговую команду'
}
},
notes: {
@@ -200,12 +236,16 @@ const translationMap = {
'并更新您的代码以使用PyInstaller。',
zh_tw: '使用單檔案模式的附加檔案時要小心;\n'+
'read this\n' +
- '並更新您的代碼以使用 PyInstaller。'
+ '並更新您的代碼以使用 PyInstaller。',
+ ru: 'Будьте внимательны при использовании дополнительных файлов в режиме одного файла;\n' +
+ 'Прочитайте Это\n' +
+ 'и обновите свой код для работы с PyInstaller.',
},
rootDirectory: {
en: 'If you want to put files in the root directory, put a period (.) in the destination.',
zh: '如果要将文件放到根目录中,请在目标目录中输入句点(.)。',
- zh_tw: '如果要將檔案放到根目錄中,請在目標目錄中輸入句點(.)。'
+ zh_tw: '如果要將檔案放到根目錄中,請在目標目錄中輸入句點(.)。',
+ ru: 'Если вы хотите расположить файлы в главной директории, вставьте точку (.) в начале пути.'
},
somethingWrongWithOutput: {
en: 'Something wrong with your exe? Read\n' +
@@ -222,7 +262,12 @@ const translationMap = {
'\n' +
' 這篇文章是關於如何修復常見的問題\n' +
'\n' +
- '尋找可能的解決方案。'
+ '尋找可能的解決方案。',
+ ru: 'Что-то не так с вашим exe? Прочитайте\n' +
+ '\n' +
+ ' эту справку, с описанием большинства проблем\n' +
+ '\n' +
+ 'чтобы решить свою.',
}
}
},
@@ -233,47 +278,55 @@ const translationMap = {
generalOptions: {
en: 'General Options',
zh: '常规选项',
- zh_tw: '一般選項'
+ zh_tw: '一般選項',
+ ru: 'Основные Настройки'
},
whatToBundleWhereToSearch: {
en: 'What to bundle, where to search',
zh: '捆绑什么,搜索哪里',
- zh_tw: '怎樣捆綁,哪裡搜尋'
+ zh_tw: '怎樣捆綁,哪裡搜尋',
+ ru: 'Что используется и где это искать'
},
howToGenerate: {
en: 'How to generate',
zh: '如何生成',
- zh_tw: '如何產生'
+ zh_tw: '如何產生',
+ ru: 'Настройки генератора'
},
windowsAndMacOsXSpecificOptions: {
en: 'Windows And Mac Os X Specific Options',
- zh_tw: 'Windows 和 Mac Os X 特定選項'
+ zh_tw: 'Windows 和 Mac Os X 特定選項',
+ ru: 'Настройки для Windows и Mac Os X'
},
windowsSpecificOptions: {
en: 'Windows specific options',
zh: 'Windows特定选项',
- zh_tw: 'Windows 特定選項'
-
+ zh_tw: 'Windows 特定選項',
+ ru: 'Настройки для Windows'
},
windowsSideBySideAssemblySearchingOptions: {
en: 'Windows Side-by-side Assembly searching options (advanced)',
zh: '窗口并排汇编搜索选项(高级)',
- zh_tw: '視窗並排彙編搜尋選項(進階)'
+ zh_tw: '視窗並排彙編搜尋選項(進階)',
+ ru: 'Параметры поиска параллельных сборок Windows (дополнительно)'
},
macOsxSpecificOptions: {
en: 'Mac OS X specific options',
zh: 'Mac OS X特定选项',
- zh_tw: 'Mac OS X 特定選項'
+ zh_tw: 'Mac OS X 特定選項',
+ ru: 'Настройки для Mac OS X'
},
rarelyUsedSpecialOptions: {
en: 'Rarely used special options',
zh: '很少使用的特殊选项',
- zh_tw: '很少使用的特殊選項'
+ zh_tw: '很少使用的特殊選項',
+ ru: 'Редко используемые дополнительные опции'
},
other: {
en: 'Other',
zh: '其他',
- zh_tw: '其它'
+ zh_tw: '其它',
+ ru: 'Другое'
},
},
button: {
@@ -281,54 +334,64 @@ const translationMap = {
browseForFile: {
en: 'Browse for File',
zh: '浏览文件',
- zh_tw: '瀏覽檔案'
+ zh_tw: '瀏覽檔案',
+ ru: 'Поиск файла'
},
browseForFolder: {
en: 'Browse for Folder',
zh: '浏览文件夹',
- zh_tw: '瀏覽檔案夾'
+ zh_tw: '瀏覽檔案夾',
+ ru: 'Поиск Папки'
},
enable: {
en: 'Enable',
zh: '开启',
- zh_tw: '開啟'
+ zh_tw: '開啟',
+ ru: 'Включить'
},
disable: {
en: 'Disable',
zh: '关掉',
- zh_tw: '關閉'
+ zh_tw: '關閉',
+ ru: 'Выключить'
},
converting: {
en: 'Converting...',
zh: '转换中······',
- zh_tw: '轉換中······'
+ zh_tw: '轉換中······',
+ ru: 'Преобразование...'
},
clearOutput: {
en: 'Clear Output',
zh: '清除输出f',
- zh_tw: '清除輸出'
+ zh_tw: '清除輸出',
+ ru: 'Отчистить Вывод'
},
},
modal: {
configModalTitle: {
en: 'Override current configuration?',
zh: '覆盖当前配置?',
- zh_tw: '覆蓋當前配置?'
+ zh_tw: '覆蓋當前配置?',
+ ru: 'Перезаписать текущие настройки?'
},
configModalDescription: {
en: 'All previously inserted values will be erased.',
zh: '所有先前插入的值将被删除。',
- zh_tw: '所有先前插入的值將被刪除。'
+ zh_tw: '所有先前插入的值將被刪除。',
+ ru: 'Все ранее текущие значения будут удалены.'
},
configModalConfirmButton: {
en: 'Confirm',
zh: '确认',
- zh_tw: '確認'
+ zh_tw: '確認',
+ ru: 'Подтвердить'
},
configModalCancelButton: {
en: 'Cancel',
zh: '取消',
- zh_tw: '取消'
+ zh_tw: '取消',
+ ru: 'Отмена'
}
}
},
@@ -338,12 +401,14 @@ const translationMap = {
noScriptsLocationProvided: {
en: 'You have not provided your scripts location.\nPlease enter this at the top of the page.',
zh: '您尚未提供脚本位置。\n请在页面顶部输入。',
- zh_tw: '您尚未提供腳本位置。\n請在頁面頂部輸入。'
+ zh_tw: '您尚未提供腳本位置。\n請在頁面頂部輸入。',
+ ru: 'Вы не указали расположение скрипта.\nУкажите его в самом верху страницы'
},
overwritePreviousOutput: {
en: 'This action will overwrite a previous output in the output folder.\nContinue?',
zh: '此操作将覆盖输出文件夹中以前的输出。\n是否继续?',
- zh_tw: '此操作將覆蓋輸出檔案夾中以前的輸出。\n是否繼續?'
+ zh_tw: '此操作將覆蓋輸出檔案夾中以前的輸出。\n是否繼續?',
+ ru: 'Это действие перезапишет предыдущий вывод в папке вывода.\nПродолжить?'
}
},
}
@@ -448,5 +513,9 @@ const supportedLanguages = [
name: 'Chinese Traditional (繁體中文)',
code: 'zh_tw',
},
+ {
+ name: 'Russian (Русский)',
+ code: 'ru',
+ }
];
let currentLanguage = _checkLanguageIsSupportedOrDefault(_getLanguage()); // Keeps track of the current language