options = Executor.GetJoinOptions(@params);
//Получаю параметры консоли
bool silent = @params.HasParam("--silent");
diff --git a/FileSplitter/help/english.html b/FileSplitter/help/english.html
new file mode 100644
index 0000000..ab6d57d
--- /dev/null
+++ b/FileSplitter/help/english.html
@@ -0,0 +1,369 @@
+
+
+
+
+
+
+ «ANB Software File Splitter» help
+
+
+
+
+
+ ANB Software File Splitter
+
+
+ Version 0.5 (2023.04.16)
+
+ Copyrights © 2023 by Alewxander Babaev.
+
+
+
+
+
+ Content
+
+
+ -
+ Description
+
+ -
+ License
+
+ -
+ How to use: Split file
+
+ -
+ How to use: Join Files
+
+ -
+ How to use: Application Parameters
+
+ -
+ How to use: Console Line Parameters
+
+
+
+
+
+
+ Description
+
+ ANB Software File Splitter allows you to divide a file into the nth number of files of a given
+ volume without archiving the data, and then assemble it into a single file, if you need it.
+
+
+
+ The program works in two modes: 1) using command line parameters; 2) interactive mode.
+
+
+
+
+ END USER LICENSE AGREEMENT (EULA)
+
+ (Version 1.0)
+
+ DEFINITIONS
+
+
+ ANB Software File Splitter (hereinafter referred to as "product") - a program and/or a component of the program
+ and/or other (game, image, film, etc.), to which this agreement applies.
+
+
+
+ End User (hereinafter referred to as "you" or "user") is a person and/or organization that uses the product,
+ provided under this license.
+
+
+
+ Alexander Babaev (hereinafter referred to as "Manufacturer") - the person and/or organization that produced the
+ product.
+
+
+
+ LIMITATIONS
+
+
+
+ Some States (districts, regions, states) do not allow the limitation or exclusion of liability for unforeseen
+ damage. If your country (district, region, state) does not imply limitation or exclusion of liability for
+ unforeseen damages, then this agreement cannot apply to you. In this case, refuse to use the product.
+
+
+
+ Some States (districts, regions, states) do not allow the exclusion of implied warranties. If your country
+ (district, region, state) does not imply the exclusion of implied warranties that this agreement may not apply
+ to you. In this case, refuse to use the product.
+
+
+
+ SUBJECT OF THE AGREEMENT
+
+
+
+ This agreement is concluded between the Manufacturer of the product and the User of the product. This agreement
+ defines the relationship between the Manufacturer and the User arising from the use of the product.
+
+
+
+ LICENSE
+
+
+
+ The product is distributed on the principle of "AS-IS" ("AS IS"). The author does not bear ANY RESPONSIBILITY in
+ case this program causes physical, material or any other harm to you and your computer. You install the product
+ at your own risk. The manufacturer and/or Distributor does not bear any responsibility for errors, malfunctions
+ (etc.) caused by the product to your computer.
+
+
+
+ You can use this program at your discretion, as well as copy and distribute with a link to the author and the
+ website "https://babaev-an.ru/". You are prohibited from copying, distributing the product without a link to the
+ author and the previously specified site. You are prohibited from copying and using the product if the copy of
+ the product you are installing does not have a link to the author and the previously specified site. You are
+ prohibited from changing the contents of the product, disassembling, disassembling and modifying the product,
+ using its components in other programs without the written agreement of the Manufacturer, removing or correcting
+ any proprietary and/or copyright marks in the product.
+
+
+
+ IF YOU DOWNLOAD, COPY THE PRODUCT OR USE IT IN ANY OTHER WAY, YOU HEREBY CONFIRM YOUR AGREEMENT TO COMPLY WITH
+ THE TERMS OF THIS END USER LICENSE AGREEMENT. IF YOU DO NOT AGREE, DO NOT INSTALL, COPY, OR USE THE PRODUCT.
+
+
+
+ COPYRIGHT
+
+
+
+ The copyright for all copies of the product belongs to the Manufacturer and is protected by the legislation of
+ the Russian Federation and a number of other countries.
+
+
+
+ LIMITED WARRANTY AND DISCLAIMER
+
+
+
+ You are not given any guarantees. All your possible demands, claims and claims (including on quality) will be
+ UNRECOGNIZED.
+
+
+
+ LIMITATION OF LIABILITY
+
+
+
+ You are not given any obligations. All your possible requirements will be UNRECOGNIZED.
+
+
+
+
+ How to use: Split file
+
+ The "File Splitting" operation is used to split a certain file (hereinafter, the source file) into n parts,
+ given size. It requires the following parameters:
+
+
+
+ -
+
-fn="file name"
- name of the source file.
+
+ -
+
-td="path"
- the folder where the parts of the file will be saved.
+
+ -
+
-ps=«number»
- the size of a part of the file in bytes.
+
+
+
+
+ In interactive mode, the user will be interviewed for each parameter.
+
+
+
+ The "File Splitting" operation may contain the following additional splitting parameters:
+
+
+
+ -
+
/NoCheckHash
- don't check parts for matching checksums.
+
+ -
+
/DeleteSource
- after splitting, the source file is deleted.
+
+ -
+
/EncryptInfoFile
- whether the information file needs to be encrypted.
+ ATTENTION! Enabling this parameter obliges you to specify the parameter in the additional
+ assembly parameters during assembly /DecryptInfoFile
. Otherwise, you will get return
+ code 3 when trying assemble the file.
+
+
+
+
+ Parameters are entered separated by a space, both in command-line parameters mode and in interactive mode.
+
+
+
+ For example, you need to split the C file:\MyFiles\myBigFile.mp4
to 10 MB files and save files
+ partitions to the C folder:\myFilesSplited\
by deleting the source code, encrypting the split
+ information file and not giving the user no requests. Then you should run the program in the following way:
+
+
+
+ FileSplitter split -fn="C:\myFiles\myBigFile.mp4" -td="C:\myFilesSplited" -ps=10485760 /DeleteSource /EncryptInfoFile --silent
+
+
+
+
+
+
+ How to use: Join Files
+
+ The "Join files" operation connects the file that was previously split using the "Split File" operation. She
+ demands the following parameters:
+
+
+
+ -
+
-ifn="Имя файла"
- the name of the file with information about the split.
+
+ -
+
-tfn="Путь"
- the file to build the split into.
+
+
+
+
+ In interactive mode, the user will be interviewed for each parameter.
+
+
+
+ The "Join Files" operation may contain the following additional assembly parameters:
+
+
+
+ -
+
/NoCheckHash
- don't check parts for matching checksums.
+
+ -
+
/DeleteSource
- after joining, the split files are deleted.
+
+ -
+
/DecryptInfoFile
- whether to decrypt the information file. ATTENTION!
+ Enabling this parameter obliges you to specify the parameter in the additional splitting parameters when
+ splitting /EncryptInfoFile
. Otherwise, you will get return code 3 when trying
+ joining the file.
+
+ -
+
/IgnoreVersion
- disable checking the version of the information file (NOT RECOMMENDED).
+
+ -
+
/SkipCheck
- disable checking the collected file for compliance with the original.
+
+
+
+
+ Parameters are entered separated by a space, both in command-line parameters mode and in interactive mode.
+
+
+
+ For example, you need to merge the file specified by the information
+ C:\myFilesSplitter\myBigFile.mp4.fsi
, to file C:\MyFiles\myBigFile.mp4
by deleting the
+ split files, decrypting the split information file and disabling checking the collected file for compliance with
+ the original. Then you should run the program in the following way:
+
+
+
+ FileSplitter join -ifn="C:\myFilesSplited\myBigFile.mp4.fsi" -tfn="C:\myFiles\myBigFile.mp4" /DeleteSource /DecryptInfoFile /SkipCheck
+
+
+
+
+
+
+ How to use: Application Parameters
+
+ The operation "Application Parameters" allows you to configure application parameters and works only in
+ interactive mode. It requires the following parameters:
+
+
+
+
+
+
+ Parameter
+ |
+
+ Possible values
+ |
+
+ Description
+ |
+
+ Example
+ |
+
+
+
+
+
+ language
+ |
+
+ String (language file name)
+ |
+
+ Sets the application language
+ |
+
+ language=russian
+ |
+
+
+
+
+
+
+ How to use: Console Line Parameters
+
+ To use the program in command line parameters mode, run the program by passing command line parameters in the
+ format:
+
+
+
+ FileSplitter [OPERATION] [OPERATION PARAMETERS] [ADDITIONAL PARAMETERS] [SILENT MODE]
+
+
+
+
+ [OPERATION] can take the following values:
+
+
+
+
+
+ [OPERATION PARAMETERS] and [ADDITIONAL PARAMETERS] are described in the corresponding help sections.
+
+
+
+ [SILENT MODE] works only in command line parameters mode and is enabled by specifying:
+
+
+ -
+
--silent
- the presence of this parameter indicates that no requests should be issued to the
+ user (the so-called "Silent mode").
+
+
+
+ To turn off the silent mode, simply do not specify this parameter.
+
+
+
+
\ No newline at end of file
diff --git a/FileSplitter/help/russian.html b/FileSplitter/help/russian.html
new file mode 100644
index 0000000..4e31122
--- /dev/null
+++ b/FileSplitter/help/russian.html
@@ -0,0 +1,372 @@
+
+
+
+
+
+
+ Справка по программе «ANB Software Делитель файлов»
+
+
+
+
+
+ ANB Software Делитель файлов
+
+
+ Версия 0.5 (2023.04.16)
+
+ Авторские права © 2023, Александр Бабаев.
+
+
+
+
+
+ Содержание
+
+
+ -
+ Описание
+
+ -
+ Лицензия
+
+ -
+ Как использовать: Разделение файлов
+
+ -
+ Как использовать: Объединение файлов
+
+ -
+ Как использовать: Параметры приложения
+
+ -
+ Как использовать: Параметры консольной строки
+
+
+
+
+
+
+ Описание
+
+ ANB Software Делитель Файлов позволяет разделить файл на n-ое количество файлов заданного
+ объема без архивации данных, а также потом собрать в единый файл, если вам понадобится.
+
+
+
+ Программа работает в двух режимах: 1) с помощью параметров командной строки; 2) интерактивный режим.
+
+
+
+
+ ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ С КОНЕЧНЫМ ПОЛЬЗОВАТЕЛЕМ (EULA)
+
+ (Версия 1.0)
+
+ ОПРЕДЕЛЕНИЯ
+
+
+ ANB Software File Splitter (далее "продукт") - программа и/или компонент программы и/или другое (игра,
+ изображение, фильм и т.п.), на которое распространяется данное соглашение.
+
+
+
+ Конечный пользователь (далее "вы" или "пользователь") - лицо и/или организация, которое(-ая) использует продукт,
+ предоставляемый под этой лицензией.
+
+
+
+ Александр Бабаев (далее "Производитель") - лицо и/или организация, которое(-ая) произвело продукт.
+
+
+
+ ОГРАНИЧЕНИЯ
+
+
+
+ В некоторых государствах (районах, областях, штатах) не позволяется ограничение или исключение ответственности
+ за непредвиденный ущерб. Если ваша страна (район, область, штат) не подразумевает ограничение или исключение
+ ответственности за непредвиденный ущерб, то данное соглашение не может применяться к вам. В этом случае
+ откажитесь от использования продукта.
+
+
+
+ В некоторых государствах (районах, областях, штатах) не позволяется исключение подразумеваемых гарантий. Если
+ ваша страна (район, область, штат) не подразумевает исключение подразумеваемых гарантий, то данное соглашение не
+ может применяться к вам. В этом случае откажитесь от использования продукта.
+
+
+
+ ПРЕДМЕТ СОГЛАШЕНИЯ
+
+
+
+ Данное соглашение заключается между Производителем продукта и Пользователем продукта. Данное соглашение
+ определяет отношения между Производителем и Пользователем, возникающие при использовании продукта.
+
+
+
+ ЛИЦЕНЗИЯ
+
+
+
+ Продукт распространяется по принципу "AS-IS" ("КАК ЕСТЬ"). Автор не несет НИКАКОЙ ОТВЕТСТВЕННОСТИ в случае
+ нанесения данной программой физического, материального или любого другого вреда вам и вашему компьютеру. Вы на
+ свой страх и риск устанавливаете продукт. Производитель и/или Распространитель не несет(-ут) никакой
+ ответственности за ошибки, неисправности (и т.п.), нанесенные продуктом вашему компьютеру.
+
+
+
+ Вы можете использовать данную программу на свое усмотрение, а также копировать и распространять со ссылкой на
+ автора и сайт "https://babaev-an.ru/". Вам запрещается копировать, распространять продукт без ссылки на автора и
+ указанный ранее сайт. Вам запрещается копирование и использование продукта, если устанавливаемая вами копия
+ продукта не имеет ссылки на автора и указанный ранее сайт. Вам запрещается изменять содержимое продукта,
+ разбирать, дизассемблировать и изменять продукт, использовать её компоненты в других программах без письменного
+ соглашения Производителя, удалять или исправлять в продукте любые знаки о праве собственности и/или авторском
+ праве на продукт.
+
+
+
+ ЕСЛИ ВЫ ЗАГРУЖАЕТЕ, КОПИРУЕТЕ ПРОДУКТ ИЛИ ИСПОЛЬЗУЕТЕ ЕГО КАКИМ-ЛИБО ДРУГИМ СПОСОБОМ, ЭТИМ ВЫ ПОДТВЕРЖДАЕТЕ СВОЕ
+ СОГЛАСИЕ СОБЛЮДАТЬ УСЛОВИЯ ДАННОГО ЛИЦЕНЗИОННОГО СОГЛАШЕНИЯ С КОНЕЧНЫМ ПОЛЬЗОВАТЕЛЕМ. ЕСЛИ ВЫ НЕ СОГЛАСНЫ, НЕ
+ УСТАНАВЛИВАЙТЕ, НЕ КОПИРУЙТЕ И НЕ ИСПОЛЬЗУЙТЕ ПРОДУКТ.
+
+
+
+ АВТОРСКОЕ ПРАВО
+
+
+
+ Авторское право на все копии продукта принадлежат Производителю и защищено законодательством РФ и ряда других
+ стран.
+
+
+
+ ОГРАНИЧЕННАЯ ГАРАНТИЯ И ПРАВОВАЯ ОГОВОРКА
+
+
+
+ Вам не дается никаких гарантий. Все ваши возможные требования, притязания и претензии (в том числе и по
+ качеству) будут НЕПРИЗНАННЫ.
+
+
+
+ ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ
+
+
+
+ Вам не дается никаких обязательств. Все ваши возможные требования будут НЕПРИЗНАННЫ.
+
+
+
+
+ Как использовать: Разделение файлов
+
+ Операция «Разделение файлов» служит для разбиения некоторого файла (далее, исходный файл) на n частей, заданного
+ размера. Она требует следующих параметров:
+
+
+
+ -
+
-fn="Имя файла"
- имя исходного файла.
+
+ -
+
-td="Путь"
- папка, в которую будут сохранены части файла.
+
+ -
+
-ps=«ЧИСЛО»>
- размер части файла в байтах.
+
+
+
+
+ В интерактивном режиме пользователь будет опрошен по каждому параметру.
+
+
+
+ Операция «Разделение файлов» может содержать следующие дополнительные параметры разбиения:
+
+
+
+ -
+
/NoCheckHash
- не проверять части на совпадение с контрольными суммами.
+
+ -
+
/DeleteSource
- после разбиения удаляется исходный файл.
+
+ -
+
/EncryptInfoFile
- нужно ли шифровать файл информации. ВНИМАНИЕ! Включение
+ этого параметра обязывает Вас при сборке указывать в дополнительных параметрах сборки параметр
+ /DecryptInfoFile
. В противном случае, вы словите код возврата 3 при попытке
+ собрать файл.
+
+
+
+
+ Параметры вводятся через пробел, как в режиме параметров командной строки, так и в интерактивномрежиме.
+
+
+
+ Например, нужно разбить файл C:\myFiles\myBigFile.mp4
на файлы размером 10 МБайт и сохранить файлы
+ разбиения в папку C:\myFilesSplited\
, удалив исходник, зашифровав файл информации о разбиении и не
+ выдавая пользователю никаких запросов. Тогда вы должны запустить программу следующим способом:
+
+
+
+ FileSplitter split -fn="C:\myFiles\myBigFile.mp4" -td="C:\myFilesSplited" -ps=10485760 /DeleteSource /EncryptInfoFile --silent
+
+
+
+
+
+
+ Как использовать: Объединение файлов
+
+ Операция «Объединение файлов» соединяет разбитый ранее с помощью операции «Разделения файла» файл. Она требует
+ следующих параметров:
+
+
+
+ -
+
-ifn="Имя файла"
- имя файла с информацией о разбиении.
+
+ -
+
-tfn="Путь"
- файл, в который нужно собрать разбиение.
+
+
+
+
+ В интерактивном режиме пользователь будет опрошен по каждому параметру.
+
+
+
+ Операция «Объединение файлов» может содержать следующие дополнительные параметры сборки:
+
+
+
+ -
+
/NoCheckHash
- не проверять части на совпадение с контрольными суммами.
+
+ -
+
/DeleteSource
- после объединения удаляются файлы разбиения.
+
+ -
+
/DecryptInfoFile
- нужно ли дешифровать файл информации. ВНИМАНИЕ! Включение
+ этого параметра обязывает Вас при разбивке указывать в дополнительных параметрах разбиения параметр
+ /EncryptInfoFile
. В противном случае, вы словите код возврата 3 при попытке
+ собрать файл.
+
+ -
+
/IgnoreVersion
- отключить проверку версии файла информации (НЕ РЕКОМЕНДУЕТСЯ).
+
+ -
+
/SkipCheck
- отключить проверку собранного файла на соответствие оригиналу.
+
+
+
+
+ Параметры вводятся через пробел, как в режиме параметров командной строки, так и в интерактивномрежиме.
+
+
+
+ Например, нужно объединить файл, заданный информацией C:\myFilesSplited\myBigFile.mp4.fsi
, в файл
+ C:\myFiles\myBigFile.mp4
, удалив файлы разбиения, дешифровав файл информации о разбиении и отключив
+ проверку собранного файла на соответствие оригиналу. Тогда вы должны
+ запустить программу следующим способом:
+
+
+
+ FileSplitter join -ifn="C:\myFilesSplited\myBigFile.mp4.fsi" -tfn="C:\myFiles\myBigFile.mp4" /DeleteSource /DecryptInfoFile /SkipCheck
+
+
+
+
+
+
+ Как использовать: Параметры приложения
+
+ Операция «Параметры приложения» позволяет настроить параметры приложения и работает только в
+ интерактивном режиме. Она требует
+ следующих параметров:
+
+
+
+
+
+
+ Параметр
+ |
+
+ Возможные значение
+ |
+
+ Описание
+ |
+
+ Пример
+ |
+
+
+
+
+
+ language
+ |
+
+ Строка (имя файла языка)
+ |
+
+ Задаёт язык приложения
+ |
+
+ language=russian
+ |
+
+
+
+
+
+
+ Как использовать: Параметры консольной строки
+
+ Для использования программы в режиме параметров командной строки запустите программу, передав параметры
+ командной строки в формате:
+
+
+
+ FileSplitter [ОПЕРАЦИЯ] [ПАРАМЕТРЫ ОПЕРАЦИИ] [ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ] [ТИХИЙ РЕЖИМ]
+
+
+
+
+ [ОПЕРАЦИЯ] может принимать следующие значения:
+
+
+
+
+
+ [ПАРАМЕТРЫ ОПЕРАЦИИ] и [ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ] описаны в соответствующих разделах справки.
+
+
+
+ [ТИХИЙ РЕЖИМ] работает только в режиме параметров командной строки и включается указанием:
+
+
+ -
+
--silent
- наличие этого параметра указывает, что не должны выдаваться никакие запросы
+ пользователю (так называемый «Тихий режим»).
+
+
+
+ Для выключения тихого режима просто не указывайте этот параметр.
+
+
+
+
+
\ No newline at end of file
diff --git a/FileSplitter/languages/english.json b/FileSplitter/languages/english.json
new file mode 100644
index 0000000..e184875
--- /dev/null
+++ b/FileSplitter/languages/english.json
@@ -0,0 +1,70 @@
+{
+ //This file was translated with Yandex Translator (https://translate.yandex.ru/)
+ //Application Parameters
+ "AppTitle": "ANB Software File Splitter",
+ "AppVersion": "Version: {0}",
+ "AppCopyrights": "Copyrights (C) {0} by Alexander Babaev.",
+
+ //Messages
+ "MessageNoParametersForSplit": "Split parameters are not set. For information about working with the program, see the file «\\Help\\English.html#ConsoleParams»",
+ "MessageSplitAsk": "Information about splitting file:\n***{0}\n***Size: {1}\n***File hash: {2}\n***It is assumed to split into {3} parts(s)\nDo you want to start split? [Y|y - yes, any other letter - no]",
+ "MessageStartSplit": "The splitting of the file {0} into parts of the size {1} and saving them in the directory {2} is started.",
+ "MessageSplitFilePart": "Processing part {0} of {1}...",
+ "MessageSplitComplete": "File splitting {0} is complete!",
+ "MessageHashCheckStart": "Starting check the hash of the splitting",
+ "MessageHashCheckFail": "Unfortunately, the file \"{0}\" did not pass the hash check!",
+ "MessageHashCheckComplete": "Hash verification is complete!",
+ "MessageJoinAsk": "Do you want to start joining file {0}? [Y|y - yes, any other letter - no]",
+ "MessageStartJoin": "Joining of files specified by the information file {0} into the file {1} has started.",
+ "MessageJoinUnsupportedFile": "Unfortunately, the version of the information file {0} is not supported!",
+ "MessageJoinUnknownFile": "Can't read the information file! Maybe it's encrypted?",
+ "MessageJoinHashError": "Unfortunately, the split files did not pass verification. Perhaps they are damaged?",
+ "MessageJoinCheckError": "Unfortunately, the joined file did not pass the validation of join. Perhaps there were any mistakes?",
+ "MessageJoinFilePart": "Processing part {0} of {1}...",
+ "MessageJoinComplete": "File joining {0} is complete!",
+ "MessagePleaseWaitToReady": "Please wait. Preparations for the operation are underway. This may take a long time, during which the program may seem to hang.",
+
+ //Interactive mode messages
+ "InteractiveStartAsk": "Choose one of the actions:\n* S|s - splitting\n* J|j - joining\n* O|o - program's options\n* E|e - exit\nYour choice:",
+ "InteractiveWrongInput": "Unknown action selected!",
+ "InteractiveOperationFinish": "The operation is completed! Exit code is: {0}",
+ "InteractiveFileNameNotExist": "The file does not exist! Repeat file entry? [Y|y - to repeat, any other letter - to abort operation]",
+ "InteractiveFileNameExist": "The file exists! You need to select a non-existent file! Repeat file entry? [Y|y - to repeat, any other letter - to abort operation]",
+
+ "InteractiveSplitFileNameAsk": "Enter the name of the file to split (or drag it here):",
+ "InteractiveSplitFileNameResult": "File selected for splitting: {0}",
+ "InteractiveSplitTargetDirAsk": "Select the folder where you want to save the parts of the file (or leave it empty to use the folder of the split file):",
+ "InteractiveSplitTargetDirResult": "The split files will be saved in the folder: {0}",
+ "InteractiveSplitPartSizeAsk": "Enter the size of the part (in bytes):",
+ "InteractiveSplitPartSizeAsk2": "You have selected the part size {0}. Is everything right? [Y|y - yes, continue; any other letter - no, repeat input]",
+ "InteractiveSplitPartSizeResult": "Selected part size: {0}",
+ "InteractiveSplitOptionsAsk": "Enter additional splitting parameters (space separator):",
+ "InteractiveSplitOptionsResult": "Additional splitting parameters are selected: [{0}]",
+
+ "InteractiveJoinFileNameAsk": "Enter the name of the split information file (or drag it here):",
+ "InteractiveJoinFileNameResult": "The file selected for the join is: {0}",
+ "InteractiveJoinTargetFileNameAsk": "Select the name and path to the file to be joined (for example, c:\\myFiles\\myFile.txt ):",
+ "InteractiveJoinTargetFileNameResult": "The file will be joined: {0}",
+ "InteractiveJoinOptionsAsk": "Enter additional join parameters (space delimiter):",
+ "InteractiveJoinOptionsResult": "Additional join parameters selected: [{0}]",
+
+ "InteractiveOptionsAsk": "Enter the program parameters (space delimiter):",
+ "InteractiveOptionsConfirm": "Program parameters selected:\n{0}\nDo you confirm them? [Y|y - yes, any other letter - to abort]",
+ "InteractiveOptionsResult": "The parameters are saved! To apply them, you need to restart the program...",
+
+ //Константы размеров
+ "FileSizeStringsByte": "byte",
+ "FileSizeStringsKByte": "KByte",
+ "FileSizeStringsMByte": "MByte",
+ "FileSizeStringsGByte": "GByte",
+ "FileSizeStringsTByte": "TByte",
+
+ //Переводы кодов возврата
+ "ExitCodeNamesAllDone": "Completed successfully",
+ "ExitCodeNamesInfoVersionUnsupported": "The version of the split information file is not supported",
+ "ExitCodeNamesInvalidParameters": "Invalid parameters",
+ "ExitCodeNamesSplitFileHashError": "Error checking the hash sum of split files",
+ "ExitCodeNamesTargetFileCheckError": "Error checking the integrity of joined file",
+ "ExitCodeNamesUnknownInfoFile": "Unknown partitioning information file",
+ "ExitCodeNamesUserAborted": "Aborted by the user"
+}
\ No newline at end of file
diff --git a/FileSplitter/languages/russian.json b/FileSplitter/languages/russian.json
new file mode 100644
index 0000000..73e90fd
--- /dev/null
+++ b/FileSplitter/languages/russian.json
@@ -0,0 +1,69 @@
+{
+ //Параметры приложения
+ "AppTitle": "ANB Software Делитель файлов",
+ "AppVersion": "Версия: {0}",
+ "AppCopyrights": "Авторские права (C) {0}, Александр Бабаев.",
+
+ //Сообщения
+ "MessageNoParametersForSplit": "Не заданы параметры разбиения. Информацию о работе с программой смотрите в файле «<папка с программой>\\Help\\Russian.html#ConsoleParams»\"",
+ "MessageSplitAsk": "Информация о разбиваемом файле:\n***{0}\n***Размер: {1}\n***Хэш файла: {2}\n***Предполагается разбиение на {3} части(-ей)\nВы хотите начать разбиение? [Y|y - да, Любая другая буква/слово/выражение - нет]",
+ "MessageStartSplit": "Запущено разбиение файла {0} на части размером {1} и сохранением их в директории {2}.",
+ "MessageSplitFilePart": "Идёт обработка части {0} из {1}...",
+ "MessageSplitComplete": "Разбиение файла {0} завершено!",
+ "MessageHashCheckStart": "Начинаю проверку хэша разбиения",
+ "MessageHashCheckFail": "К сожалению, файл \"{0}\" не прошёл проверку хэша!",
+ "MessageHashCheckComplete": "Проверка хэша завершена!",
+ "MessageJoinAsk": "Вы хотите начать сборку файла {0}? [Y|y - да, любая другая буква/слово/выражение - нет]",
+ "MessageStartJoin": "Запущено объединение файлов, заданных файлом информации {0}, в файл {1}.",
+ "MessageJoinUnsupportedFile": "К сожалению, версия файла информации {0} не поддерживается!",
+ "MessageJoinUnknownFile": "Не могу прочитать файл информации! Возможно он зашифрован?",
+ "MessageJoinHashError": "К сожалению, разделённые файлы не прошли проверку. Возможно они повреждены?",
+ "MessageJoinCheckError": "К сожалению, объединённый файл не прошли проверку корректности объединения. Возможно были какие-либо ошибки?",
+ "MessageJoinFilePart": "Идёт обработка части {0} из {1}...",
+ "MessageJoinComplete": "Объединение файла {0} завершено!",
+ "MessagePleaseWaitToReady": "Пожалуйста, подождите. Идёт подготовка к операции. Это может занять длительное время, в течении которого программа может казаться зависшей.",
+
+ //Сообщения интерактивного режима
+ "InteractiveStartAsk": "Выберете одно из действий:\n* S|s - разбиение\n* J|j - объединение\n* O|o - параметры программы\n* E|e - выход\nВаш выбор:",
+ "InteractiveWrongInput": "Выбрано неизвестное действие!",
+ "InteractiveOperationFinish": "Операция завершена с кодом: {0}",
+ "InteractiveFileNameNotExist": "Файл не существует! Повторить ввод файла? [Y|y - для повтора, любая другая буква - прерывание операции]",
+ "InteractiveFileNameExist": "Файл существует! Нужно выбрать несуществующий файл! Повторить ввод файла? [Y|y - для повтора, любая другая буква - прерывание операции]",
+
+ "InteractiveSplitFileNameAsk": "Введите имя разбиваемого файла (или перетащите его сюда):",
+ "InteractiveSplitFileNameResult": "Для разбиения выбран файл: {0}",
+ "InteractiveSplitTargetDirAsk": "Выберете папку, куда следует сохранить части файла (или оставьте пустым, чтобы использовать папку разбиваемого файла):",
+ "InteractiveSplitTargetDirResult": "Файлы разбиения будут сохранены в папке: {0}",
+ "InteractiveSplitPartSizeAsk": "Введите размер части (в байтах):",
+ "InteractiveSplitPartSizeAsk2": "Вы выбрали размер части {0}. Всё правильно? [Y|y - да, продолжить, любая другая буква - нет, повторить ввод]",
+ "InteractiveSplitPartSizeResult": "Выбран размер части: {0}",
+ "InteractiveSplitOptionsAsk": "Введите дополнительные параметры разбиения (разделитель - пробел):",
+ "InteractiveSplitOptionsResult": "Выбраны дополнительные параметры разбиения: [{0}]",
+
+ "InteractiveJoinFileNameAsk": "Введите имя файла информации о разбиении (или перетащите его сюда):",
+ "InteractiveJoinFileNameResult": "Для сборки выбран файл: {0}",
+ "InteractiveJoinTargetFileNameAsk": "Выберите имя и путь к собираемому файлу (например, c:\\myFiles\\myFile.txt):",
+ "InteractiveJoinTargetFileNameResult": "Будет собран файл: {0}",
+ "InteractiveJoinOptionsAsk": "Введите дополнительные параметры соединения (разделитель - пробел):",
+ "InteractiveJoinOptionsResult": "Выбраны дополнительные параметры соединения: [{0}]",
+
+ "InteractiveOptionsAsk": "Введите параметры программы (разделитель - пробел):",
+ "InteractiveOptionsConfirm": "Выбраны параметры программы:\n{0}\nВы их подтверждаете? [Y|y - да, любая другая буква - выход]",
+ "InteractiveOptionsResult": "Параметры сохранены! Для их применения требуется перезапуск программы...",
+
+ //Константы размеров
+ "FileSizeStringsByte": "байт",
+ "FileSizeStringsKByte": "Кб",
+ "FileSizeStringsMByte": "Мб",
+ "FileSizeStringsGByte": "Гб",
+ "FileSizeStringsTByte": "Тб",
+
+ //Переводы кодов возврата
+ "ExitCodeNamesAllDone": "Успешно завершено",
+ "ExitCodeNamesInfoVersionUnsupported": "Версия файла информации о разбиении не поддерживается",
+ "ExitCodeNamesInvalidParameters": "Неверные параметры",
+ "ExitCodeNamesSplitFileHashError": "Ошибка проверки хэш-суммы разделённых файлов",
+ "ExitCodeNamesTargetFileCheckError": "Ошибка проверки целостности собираемого файла",
+ "ExitCodeNamesUnknownInfoFile": "Неизвестный файл информации о разбиении",
+ "ExitCodeNamesUserAborted": "Прервано пользователем"
+}
\ No newline at end of file
diff --git a/FileSplitterProj.sln.DotSettings b/FileSplitterProj.sln.DotSettings
index c9a7ea6..ed7833c 100644
--- a/FileSplitterProj.sln.DotSettings
+++ b/FileSplitterProj.sln.DotSettings
@@ -1,7 +1,13 @@
+ True
+ True
True
+ True
+ True
+ True
True
True
+ True
True
True
True
diff --git a/FileSplitterShared/Classes/FileSplitterConsoleOptions.cs b/FileSplitterShared/Classes/FileSplitterConsoleOptions.cs
new file mode 100644
index 0000000..b0f5bd7
--- /dev/null
+++ b/FileSplitterShared/Classes/FileSplitterConsoleOptions.cs
@@ -0,0 +1,64 @@
+using Newtonsoft.Json;
+using System.Text;
+
+namespace FileSplitter.Shared.Classes;
+
+///
+/// Параметры консоли программы
+///
+public sealed class FileSplitterConsoleOptions
+{
+ ///
+ /// Конструктор
+ ///
+ public FileSplitterConsoleOptions () => Language = "russian";
+
+ ///
+ /// Язык приложения
+ ///
+ public string Language { get; set; }
+
+ ///
+ /// Сохранение параметров в файл
+ ///
+ public void Save ()
+ {
+ //Открываю файл
+ StreamWriter writer = new("settings.json", Encoding.UTF8,
+ new() { Access = FileAccess.Write, Mode = FileMode.Create });
+
+ //Записываю файл
+ writer.WriteLine(JsonConvert.SerializeObject(this));
+
+ //Закрываю файл
+ writer.Close();
+ //Освобождаю память
+ writer.Dispose();
+ }
+
+ ///
+ /// Загрузка параметров из файла
+ ///
+ public void Load ()
+ {
+ //Если файла опций не существует
+ if (!File.Exists("settings.json"))
+ //- то создаём
+ Save();
+
+ //Открываю файл
+ StreamReader reader = new("settings.json", Encoding.UTF8);
+
+ //Читаю файл
+ FileSplitterConsoleOptions options =
+ JsonConvert.DeserializeObject(reader.ReadLine() ?? "[]") ?? new();
+
+ //- закрываю файл
+ reader.Close();
+ //- освобождаю память
+ reader.Dispose();
+
+ //Устанавливаю параметры
+ Language = options.Language;
+ }
+}
\ No newline at end of file
diff --git a/FileSplitterShared/Classes/FileSplitterLanguage.cs b/FileSplitterShared/Classes/FileSplitterLanguage.cs
new file mode 100644
index 0000000..9bf5754
--- /dev/null
+++ b/FileSplitterShared/Classes/FileSplitterLanguage.cs
@@ -0,0 +1,134 @@
+namespace FileSplitter.Shared.Classes;
+
+///
+/// Класс json-представления языкового файла программы
+///
+public class FileSplitterLanguage
+{
+ //Параметры приложения
+ public FileSplitterLanguage()
+ {
+ AppTitle = string.Empty;
+ AppVersion = string.Empty;
+ AppCopyrights = string.Empty;
+ MessageNoParametersForSplit = string.Empty;
+ MessageSplitAsk = string.Empty;
+ MessageStartSplit = string.Empty;
+ MessageSplitFilePart = string.Empty;
+ MessageSplitComplete = string.Empty;
+ MessageHashCheckStart = string.Empty;
+ MessageHashCheckFail = string.Empty;
+ MessageHashCheckComplete = string.Empty;
+ MessageJoinAsk = string.Empty;
+ MessageStartJoin = string.Empty;
+ MessageJoinUnsupportedFile = string.Empty;
+ MessageJoinUnknownFile = string.Empty;
+ MessageJoinHashError = string.Empty;
+ MessageJoinCheckError = string.Empty;
+ MessageJoinFilePart = string.Empty;
+ MessageJoinComplete = string.Empty;
+ MessagePleaseWaitToReady = string.Empty;
+ InteractiveStartAsk = string.Empty;
+ InteractiveWrongInput = string.Empty;
+ InteractiveOperationFinish = string.Empty;
+ InteractiveFileNameNotExist = string.Empty;
+ InteractiveFileNameExist = string.Empty;
+ InteractiveSplitFileNameAsk = string.Empty;
+ InteractiveSplitFileNameResult = string.Empty;
+ InteractiveSplitTargetDirAsk = string.Empty;
+ InteractiveSplitTargetDirResult = string.Empty;
+ InteractiveSplitPartSizeAsk = string.Empty;
+ InteractiveSplitPartSizeAsk2 = string.Empty;
+ InteractiveSplitPartSizeResult = string.Empty;
+ InteractiveSplitOptionsAsk = string.Empty;
+ InteractiveSplitOptionsResult = string.Empty;
+ InteractiveJoinFileNameAsk = string.Empty;
+ InteractiveJoinFileNameResult = string.Empty;
+ InteractiveJoinTargetFileNameAsk = string.Empty;
+ InteractiveJoinTargetFileNameResult = string.Empty;
+ InteractiveJoinOptionsAsk = string.Empty;
+ InteractiveJoinOptionsResult = string.Empty;
+ InteractiveOptionsAsk = string.Empty;
+ InteractiveOptionsConfirm = string.Empty;
+ InteractiveOptionsResult = string.Empty;
+ FileSizeStringsByte = string.Empty;
+ FileSizeStringsKByte = string.Empty;
+ FileSizeStringsMByte = string.Empty;
+ FileSizeStringsGByte = string.Empty;
+ FileSizeStringsTByte = string.Empty;
+ ExitCodeNamesAllDone = string.Empty;
+ ExitCodeNamesInfoVersionUnsupported = string.Empty;
+ ExitCodeNamesInvalidParameters = string.Empty;
+ ExitCodeNamesSplitFileHashError = string.Empty;
+ ExitCodeNamesTargetFileCheckError = string.Empty;
+ ExitCodeNamesUnknownInfoFile = string.Empty;
+ ExitCodeNamesUserAborted = string.Empty;
+ }
+
+ public string AppTitle { get; set; }
+ public string AppVersion { get; set; }
+ public string AppCopyrights { get; set; }
+
+ //Сообщения
+ public string MessageNoParametersForSplit { get; set; }
+ public string MessageSplitAsk { get; set; }
+ public string MessageStartSplit { get; set; }
+ public string MessageSplitFilePart { get; set; }
+ public string MessageSplitComplete { get; set; }
+ public string MessageHashCheckStart { get; set; }
+ public string MessageHashCheckFail { get; set; }
+ public string MessageHashCheckComplete { get; set; }
+ public string MessageJoinAsk { get; set; }
+ public string MessageStartJoin { get; set; }
+ public string MessageJoinUnsupportedFile { get; set; }
+ public string MessageJoinUnknownFile { get; set; }
+ public string MessageJoinHashError { get; set; }
+ public string MessageJoinCheckError { get; set; }
+ public string MessageJoinFilePart { get; set; }
+ public string MessageJoinComplete { get; set; }
+ public string MessagePleaseWaitToReady { get; set; }
+
+ //Сообщения интерактивного режима
+ public string InteractiveStartAsk { get; set; }
+ public string InteractiveWrongInput { get; set; }
+ public string InteractiveOperationFinish { get; set; }
+ public string InteractiveFileNameNotExist { get; set; }
+ public string InteractiveFileNameExist { get; set; }
+
+ public string InteractiveSplitFileNameAsk { get; set; }
+ public string InteractiveSplitFileNameResult { get; set; }
+ public string InteractiveSplitTargetDirAsk { get; set; }
+ public string InteractiveSplitTargetDirResult { get; set; }
+ public string InteractiveSplitPartSizeAsk { get; set; }
+ public string InteractiveSplitPartSizeAsk2 { get; set; }
+ public string InteractiveSplitPartSizeResult { get; set; }
+ public string InteractiveSplitOptionsAsk { get; set; }
+ public string InteractiveSplitOptionsResult { get; set; }
+
+ public string InteractiveJoinFileNameAsk { get; set; }
+ public string InteractiveJoinFileNameResult { get; set; }
+ public string InteractiveJoinTargetFileNameAsk { get; set; }
+ public string InteractiveJoinTargetFileNameResult { get; set; }
+ public string InteractiveJoinOptionsAsk { get; set; }
+ public string InteractiveJoinOptionsResult { get; set; }
+
+ public string InteractiveOptionsAsk { get; set; }
+ public string InteractiveOptionsConfirm { get; set; }
+ public string InteractiveOptionsResult { get; set; }
+
+ //Константы размеров
+ public string FileSizeStringsByte { get; set; }
+ public string FileSizeStringsKByte { get; set; }
+ public string FileSizeStringsMByte { get; set; }
+ public string FileSizeStringsGByte { get; set; }
+ public string FileSizeStringsTByte { get; set; }
+
+ //Переводы кодов возврата
+ public string ExitCodeNamesAllDone { get; set; }
+ public string ExitCodeNamesInfoVersionUnsupported { get; set; }
+ public string ExitCodeNamesInvalidParameters { get; set; }
+ public string ExitCodeNamesSplitFileHashError { get; set; }
+ public string ExitCodeNamesTargetFileCheckError { get; set; }
+ public string ExitCodeNamesUnknownInfoFile { get; set; }
+ public string ExitCodeNamesUserAborted { get; set; }
+}
\ No newline at end of file
diff --git a/FileSplitterShared/Classes/Localization.cs b/FileSplitterShared/Classes/Localization.cs
index 93157e0..0a418d8 100644
--- a/FileSplitterShared/Classes/Localization.cs
+++ b/FileSplitterShared/Classes/Localization.cs
@@ -1,62 +1,117 @@
using FileSplitter.Shared.Enums;
+using Newtonsoft.Json;
+
namespace FileSplitter.Shared.Classes;
public static class Localization
{
+ //Содержимое языкового файла
+ private static readonly FileSplitterLanguage Language;
+
+ ///
+ /// Конструктор
+ ///
+ static Localization()
+ {
+ //Создаю опции приложения
+ FileSplitterConsoleOptions options = new();
+ //- и загружаю их
+ options.Load();
+
+ //Язык приложения
+ string language = options.Language;
+
+ //Если файла языка не существует
+ if (!File.Exists($"languages\\{language}.json"))
+ //- то используем русский
+ language = "russian";
+
+ //Читаю файл
+ string languageContent = File.ReadAllText($"languages\\{language}.json");
+
+ //Загружаю парсер
+ Language = JsonConvert.DeserializeObject(languageContent) ?? new ();
+
+ //Задаю массивы
+ //- размеров файлов
+ FileSizeStrings = new[]
+ {
+ Language.FileSizeStringsByte,
+ Language.FileSizeStringsKByte,
+ Language.FileSizeStringsMByte,
+ Language.FileSizeStringsGByte,
+ Language.FileSizeStringsTByte
+ };
+
+ //- кодов ответов
+ ExitCodeNames = new()
+ {
+ (FsExitCode.ecAllDone, Language.ExitCodeNamesAllDone),
+ (FsExitCode.ecInvalidParameters, Language.ExitCodeNamesInvalidParameters),
+ (FsExitCode.ecUserAborted, Language.ExitCodeNamesUserAborted),
+ (FsExitCode.ecUnknownInfoFile, Language.ExitCodeNamesUnknownInfoFile),
+ (FsExitCode.ecInfoVersionUnsupported, Language.ExitCodeNamesInfoVersionUnsupported),
+ (FsExitCode.ecSplitFileHashError, Language.ExitCodeNamesSplitFileHashError),
+ (FsExitCode.ecTargetFileCheckError, Language.ExitCodeNamesTargetFileCheckError)
+ };
+ }
+
//Параметры приложения
- public const string AppTitle = "ANB Software Делитель файлов";
- public const string AppVersion = "Версия: {0}";
- public const string AppCopyrights = "Авторские права (C) {0}, Александр Бабаев.";
+ public static string AppTitle => Language.AppTitle;
+ public static string AppVersion => Language.AppVersion;
+ public static string AppCopyrights => Language.AppCopyrights;
//Сообщения
- public const string MessageNoParametersForSplit =
- "Не заданы параметры разбиения. Информацию о работе с программой смотрите в файле \"Help\\Russian\\Console.html\"";
- public const string MessageSplitAsk =
- "Информация о разбиваемом файле:\n***{0}\n***Размер: {1}\n***Хэш файла: {2}\n***Предполагается разбиение на {3} части(-ей)\nВы хотите начать разбиение? [Y|y - да, Любая другая буква/слово/выражение - нет]";
- public const string MessageStartSplit = "Запущено разбиение файла {0} на части размером {1} и сохранением их в директории {2}.";
- public const string MessageSplitFilePart = "Идёт обработка части {0} из {1}...";
- public const string MessageSplitComplete = "Разбиение файла {0} завершено!";
- public const string MessageHashCheckStart = "Начинаю проверку хэша разбиения";
- public const string MessageHashCheckFail = "К сожалению, файл \"{0}\" не прошёл проверку хэша!";
- public const string MessageHashCheckComplete = "Проверка хэша завершена!";
- public const string MessageJoinAsk = "Вы хотите начать сборку файла {0}? [Y|y - да, любая другая буква/слово/выражение - нет]";
- public const string MessageStartJoin = "Запущено объединение файлов, заданных файлом информации {0}, в файл {1}.";
- public const string MessageJoinUnsupportedFile = "К сожалению, версия файла информации {0} не поддерживается!";
- public const string MessageJoinUnknownFile = "Не могу прочитать файл информации! Возможно он зашифрован?";
- public const string MessageJoinHashError = "К сожалению, разделённые файлы не прошли проверку. Возможно они повреждены?";
- public const string MessageJoinCheckError =
- "К сожалению, объединённый файл не прошли проверку корректности объединения. Возможно были какие-либо ошибки?";
- public const string MessageJoinFilePart = "Идёт обработка части {0} из {1}...";
- public const string MessageJoinComplete = "Объединение файла {0} завершено!";
+ public static string MessageNoParametersForSplit => Language.MessageNoParametersForSplit;
+ public static string MessageSplitAsk => Language.MessageSplitAsk;
+ public static string MessageStartSplit => Language.MessageStartSplit;
+ public static string MessageSplitFilePart => Language.MessageSplitFilePart;
+ public static string MessageSplitComplete => Language.MessageSplitComplete;
+ public static string MessageHashCheckStart => Language.MessageHashCheckStart;
+ public static string MessageHashCheckFail => Language.MessageHashCheckFail;
+ public static string MessageHashCheckComplete => Language.MessageHashCheckComplete;
+ public static string MessageJoinAsk => Language.MessageJoinAsk;
+ public static string MessageStartJoin => Language.MessageStartJoin;
+ public static string MessageJoinUnsupportedFile => Language.MessageJoinUnsupportedFile;
+ public static string MessageJoinUnknownFile => Language.MessageJoinUnknownFile;
+ public static string MessageJoinHashError => Language.MessageJoinHashError;
+ public static string MessageJoinCheckError => Language.MessageJoinCheckError;
+ public static string MessageJoinFilePart => Language.MessageJoinFilePart;
+ public static string MessageJoinComplete => Language.MessageJoinComplete;
+ public static string MessagePleaseWaitToReady => Language.MessagePleaseWaitToReady;
//Сообщения интерактивного режима
- public const string InteractiveStartAsk = "Выберете одно из действий:\n* S|s - разбиение\n* J|j - объединение\n* E|e - выход\nВаш выбор:";
- public const string InteractiveWrongInput = "Выбрано неизвестное действие!";
- public const string InteractiveOperationFinish = "Операция завершена с кодом: {0}";
- public const string InteractiveSplitFileNameAsk = "Введите имя разбиваемого файла (или перетащите его сюда):";
- public const string InteractiveFileNameNotExist = "Файл не существует! Повторить ввод файла? [Y|y - для повтора, любая другая буква - прерывание операции]";
- public const string InteractiveSplitFileNameResult = "Для разбиения выбран файл: {0}";
- public const string InteractiveSplitTargetDirAsk = "Выберете папку, куда следует сохранить части файла (или оставьте пустым, чтобы использовать папку разбиваемого файла):";
- public const string InteractiveSplitTargetDirResult = "Файлы разбиения будут сохранены в папке: {0}";
- public const string InteractiveSplitPartSizeAsk = "Введите размер части (в байтах):";
- public const string InteractiveSplitPartSizeAsk2 = "Вы выбрали размер части {0}. Всё правильно? [Y|y - да, продолжить, любая другая буква - нет, повторить ввод]";
- public const string InteractiveSplitPartSizeResult = "Выбран размер части: {0}";
- public const string InteractiveSplitOptionsAsk = "Введите дополнительные параметры разбиения (разделитель - пробел):";
- public const string InteractiveSplitOptionsResult = "Выбраны дополнительные параметры: [{0}]";
+ public static string InteractiveStartAsk => Language.InteractiveStartAsk;
+ public static string InteractiveWrongInput => Language.InteractiveWrongInput;
+ public static string InteractiveOperationFinish => Language.InteractiveOperationFinish;
+ public static string InteractiveFileNameNotExist => Language.InteractiveFileNameNotExist;
+ public static string InteractiveFileNameExist => Language.InteractiveFileNameExist;
+
+ public static string InteractiveSplitFileNameAsk => Language.InteractiveSplitFileNameAsk;
+ public static string InteractiveSplitFileNameResult => Language.InteractiveSplitFileNameResult;
+ public static string InteractiveSplitTargetDirAsk => Language.InteractiveSplitTargetDirAsk;
+ public static string InteractiveSplitTargetDirResult => Language.InteractiveSplitTargetDirResult;
+ public static string InteractiveSplitPartSizeAsk => Language.InteractiveSplitPartSizeAsk;
+ public static string InteractiveSplitPartSizeAsk2 => Language.InteractiveSplitPartSizeAsk2;
+ public static string InteractiveSplitPartSizeResult => Language.InteractiveSplitPartSizeResult;
+ public static string InteractiveSplitOptionsAsk => Language.InteractiveSplitOptionsAsk;
+ public static string InteractiveSplitOptionsResult => Language.InteractiveSplitOptionsResult;
+
+ public static string InteractiveJoinFileNameAsk => Language.InteractiveJoinFileNameAsk;
+ public static string InteractiveJoinFileNameResult => Language.InteractiveJoinFileNameResult;
+ public static string InteractiveJoinTargetFileNameAsk => Language.InteractiveJoinTargetFileNameAsk;
+ public static string InteractiveJoinTargetFileNameResult => Language.InteractiveJoinTargetFileNameResult;
+ public static string InteractiveJoinOptionsAsk => Language.InteractiveJoinOptionsAsk;
+ public static string InteractiveJoinOptionsResult => Language.InteractiveJoinOptionsResult;
+
+ public static string InteractiveOptionsAsk => Language.InteractiveOptionsAsk;
+ public static string InteractiveOptionsConfirm => Language.InteractiveOptionsConfirm;
+ public static string InteractiveOptionsResult => Language.InteractiveOptionsResult;
//Константы размеров
- public static readonly string[] FileSizeStrings = { "байт", "Кб", "Мб", "Гб", "Тб" };
+ public static string[] FileSizeStrings { get; }
//Переводы кодов возврата
- public static readonly List<(FsExitCode, string)> ExitCodeNames = new()
- {
- (FsExitCode.ecAllDone, "Успешно завершено"),
- (FsExitCode.ecInvalidParameters, "Неверные параметры"),
- (FsExitCode.ecUserAborted, "Прервано пользователем"),
- (FsExitCode.ecUnknownInfoFile, "Неизвестный файл информации о разбиении"),
- (FsExitCode.ecInfoVersionUnsupported, "Версия файла информации о разбиении не поддерживается"),
- (FsExitCode.ecSplitFileHashError, "Ошибка проверки хэш-суммы разделённых файлов"),
- (FsExitCode.ecTargetFileCheckError, "Ошибка проверки целостности собираемого файла")
- };
+ public static List<(FsExitCode, string)> ExitCodeNames { get; }
}
\ No newline at end of file
diff --git a/FileSplitterShared/FileSplitterShared.csproj b/FileSplitterShared/FileSplitterShared.csproj
index c96047f..14b4f8e 100644
--- a/FileSplitterShared/FileSplitterShared.csproj
+++ b/FileSplitterShared/FileSplitterShared.csproj
@@ -6,6 +6,16 @@
enable
FileSplitterShared
FileSplitter.Shared
+ FileSplitted Shared Library
+ 2023.04.16
+ Alexander Babaev
+
+ ANB Software FileSplitter
+ Support library for ANB Software FileSplitter
+ Alexander Babaev
+ https://git.babaev-an.ru/babaev-an/FileSplitter
+ https://git.babaev-an.ru/babaev-an/FileSplitter
+ ru
diff --git a/output/x32/FileSplitter.exe b/output/x32/FileSplitter.exe
index be9bc54..4a7e7a6 100644
Binary files a/output/x32/FileSplitter.exe and b/output/x32/FileSplitter.exe differ
diff --git a/output/x32/help/english.html b/output/x32/help/english.html
new file mode 100644
index 0000000..ab6d57d
--- /dev/null
+++ b/output/x32/help/english.html
@@ -0,0 +1,369 @@
+
+
+
+
+
+
+ «ANB Software File Splitter» help
+
+
+
+
+
+ ANB Software File Splitter
+
+
+ Version 0.5 (2023.04.16)
+
+ Copyrights © 2023 by Alewxander Babaev.
+
+
+
+
+
+ Content
+
+
+ -
+ Description
+
+ -
+ License
+
+ -
+ How to use: Split file
+
+ -
+ How to use: Join Files
+
+ -
+ How to use: Application Parameters
+
+ -
+ How to use: Console Line Parameters
+
+
+
+
+
+
+ Description
+
+ ANB Software File Splitter allows you to divide a file into the nth number of files of a given
+ volume without archiving the data, and then assemble it into a single file, if you need it.
+
+
+
+ The program works in two modes: 1) using command line parameters; 2) interactive mode.
+
+
+
+
+ END USER LICENSE AGREEMENT (EULA)
+
+ (Version 1.0)
+
+ DEFINITIONS
+
+
+ ANB Software File Splitter (hereinafter referred to as "product") - a program and/or a component of the program
+ and/or other (game, image, film, etc.), to which this agreement applies.
+
+
+
+ End User (hereinafter referred to as "you" or "user") is a person and/or organization that uses the product,
+ provided under this license.
+
+
+
+ Alexander Babaev (hereinafter referred to as "Manufacturer") - the person and/or organization that produced the
+ product.
+
+
+
+ LIMITATIONS
+
+
+
+ Some States (districts, regions, states) do not allow the limitation or exclusion of liability for unforeseen
+ damage. If your country (district, region, state) does not imply limitation or exclusion of liability for
+ unforeseen damages, then this agreement cannot apply to you. In this case, refuse to use the product.
+
+
+
+ Some States (districts, regions, states) do not allow the exclusion of implied warranties. If your country
+ (district, region, state) does not imply the exclusion of implied warranties that this agreement may not apply
+ to you. In this case, refuse to use the product.
+
+
+
+ SUBJECT OF THE AGREEMENT
+
+
+
+ This agreement is concluded between the Manufacturer of the product and the User of the product. This agreement
+ defines the relationship between the Manufacturer and the User arising from the use of the product.
+
+
+
+ LICENSE
+
+
+
+ The product is distributed on the principle of "AS-IS" ("AS IS"). The author does not bear ANY RESPONSIBILITY in
+ case this program causes physical, material or any other harm to you and your computer. You install the product
+ at your own risk. The manufacturer and/or Distributor does not bear any responsibility for errors, malfunctions
+ (etc.) caused by the product to your computer.
+
+
+
+ You can use this program at your discretion, as well as copy and distribute with a link to the author and the
+ website "https://babaev-an.ru/". You are prohibited from copying, distributing the product without a link to the
+ author and the previously specified site. You are prohibited from copying and using the product if the copy of
+ the product you are installing does not have a link to the author and the previously specified site. You are
+ prohibited from changing the contents of the product, disassembling, disassembling and modifying the product,
+ using its components in other programs without the written agreement of the Manufacturer, removing or correcting
+ any proprietary and/or copyright marks in the product.
+
+
+
+ IF YOU DOWNLOAD, COPY THE PRODUCT OR USE IT IN ANY OTHER WAY, YOU HEREBY CONFIRM YOUR AGREEMENT TO COMPLY WITH
+ THE TERMS OF THIS END USER LICENSE AGREEMENT. IF YOU DO NOT AGREE, DO NOT INSTALL, COPY, OR USE THE PRODUCT.
+
+
+
+ COPYRIGHT
+
+
+
+ The copyright for all copies of the product belongs to the Manufacturer and is protected by the legislation of
+ the Russian Federation and a number of other countries.
+
+
+
+ LIMITED WARRANTY AND DISCLAIMER
+
+
+
+ You are not given any guarantees. All your possible demands, claims and claims (including on quality) will be
+ UNRECOGNIZED.
+
+
+
+ LIMITATION OF LIABILITY
+
+
+
+ You are not given any obligations. All your possible requirements will be UNRECOGNIZED.
+
+
+
+
+ How to use: Split file
+
+ The "File Splitting" operation is used to split a certain file (hereinafter, the source file) into n parts,
+ given size. It requires the following parameters:
+
+
+
+ -
+
-fn="file name"
- name of the source file.
+
+ -
+
-td="path"
- the folder where the parts of the file will be saved.
+
+ -
+
-ps=«number»
- the size of a part of the file in bytes.
+
+
+
+
+ In interactive mode, the user will be interviewed for each parameter.
+
+
+
+ The "File Splitting" operation may contain the following additional splitting parameters:
+
+
+
+ -
+
/NoCheckHash
- don't check parts for matching checksums.
+
+ -
+
/DeleteSource
- after splitting, the source file is deleted.
+
+ -
+
/EncryptInfoFile
- whether the information file needs to be encrypted.
+ ATTENTION! Enabling this parameter obliges you to specify the parameter in the additional
+ assembly parameters during assembly /DecryptInfoFile
. Otherwise, you will get return
+ code 3 when trying assemble the file.
+
+
+
+
+ Parameters are entered separated by a space, both in command-line parameters mode and in interactive mode.
+
+
+
+ For example, you need to split the C file:\MyFiles\myBigFile.mp4
to 10 MB files and save files
+ partitions to the C folder:\myFilesSplited\
by deleting the source code, encrypting the split
+ information file and not giving the user no requests. Then you should run the program in the following way:
+
+
+
+ FileSplitter split -fn="C:\myFiles\myBigFile.mp4" -td="C:\myFilesSplited" -ps=10485760 /DeleteSource /EncryptInfoFile --silent
+
+
+
+
+
+
+ How to use: Join Files
+
+ The "Join files" operation connects the file that was previously split using the "Split File" operation. She
+ demands the following parameters:
+
+
+
+ -
+
-ifn="Имя файла"
- the name of the file with information about the split.
+
+ -
+
-tfn="Путь"
- the file to build the split into.
+
+
+
+
+ In interactive mode, the user will be interviewed for each parameter.
+
+
+
+ The "Join Files" operation may contain the following additional assembly parameters:
+
+
+
+ -
+
/NoCheckHash
- don't check parts for matching checksums.
+
+ -
+
/DeleteSource
- after joining, the split files are deleted.
+
+ -
+
/DecryptInfoFile
- whether to decrypt the information file. ATTENTION!
+ Enabling this parameter obliges you to specify the parameter in the additional splitting parameters when
+ splitting /EncryptInfoFile
. Otherwise, you will get return code 3 when trying
+ joining the file.
+
+ -
+
/IgnoreVersion
- disable checking the version of the information file (NOT RECOMMENDED).
+
+ -
+
/SkipCheck
- disable checking the collected file for compliance with the original.
+
+
+
+
+ Parameters are entered separated by a space, both in command-line parameters mode and in interactive mode.
+
+
+
+ For example, you need to merge the file specified by the information
+ C:\myFilesSplitter\myBigFile.mp4.fsi
, to file C:\MyFiles\myBigFile.mp4
by deleting the
+ split files, decrypting the split information file and disabling checking the collected file for compliance with
+ the original. Then you should run the program in the following way:
+
+
+
+ FileSplitter join -ifn="C:\myFilesSplited\myBigFile.mp4.fsi" -tfn="C:\myFiles\myBigFile.mp4" /DeleteSource /DecryptInfoFile /SkipCheck
+
+
+
+
+
+
+ How to use: Application Parameters
+
+ The operation "Application Parameters" allows you to configure application parameters and works only in
+ interactive mode. It requires the following parameters:
+
+
+
+
+
+
+ Parameter
+ |
+
+ Possible values
+ |
+
+ Description
+ |
+
+ Example
+ |
+
+
+
+
+
+ language
+ |
+
+ String (language file name)
+ |
+
+ Sets the application language
+ |
+
+ language=russian
+ |
+
+
+
+
+
+
+ How to use: Console Line Parameters
+
+ To use the program in command line parameters mode, run the program by passing command line parameters in the
+ format:
+
+
+
+ FileSplitter [OPERATION] [OPERATION PARAMETERS] [ADDITIONAL PARAMETERS] [SILENT MODE]
+
+
+
+
+ [OPERATION] can take the following values:
+
+
+
+
+
+ [OPERATION PARAMETERS] and [ADDITIONAL PARAMETERS] are described in the corresponding help sections.
+
+
+
+ [SILENT MODE] works only in command line parameters mode and is enabled by specifying:
+
+
+ -
+
--silent
- the presence of this parameter indicates that no requests should be issued to the
+ user (the so-called "Silent mode").
+
+
+
+ To turn off the silent mode, simply do not specify this parameter.
+
+
+
+
\ No newline at end of file
diff --git a/output/x32/help/russian.html b/output/x32/help/russian.html
new file mode 100644
index 0000000..4e31122
--- /dev/null
+++ b/output/x32/help/russian.html
@@ -0,0 +1,372 @@
+
+
+
+
+
+
+ Справка по программе «ANB Software Делитель файлов»
+
+
+
+
+
+ ANB Software Делитель файлов
+
+
+ Версия 0.5 (2023.04.16)
+
+ Авторские права © 2023, Александр Бабаев.
+
+
+
+
+
+ Содержание
+
+
+ -
+ Описание
+
+ -
+ Лицензия
+
+ -
+ Как использовать: Разделение файлов
+
+ -
+ Как использовать: Объединение файлов
+
+ -
+ Как использовать: Параметры приложения
+
+ -
+ Как использовать: Параметры консольной строки
+
+
+
+
+
+
+ Описание
+
+ ANB Software Делитель Файлов позволяет разделить файл на n-ое количество файлов заданного
+ объема без архивации данных, а также потом собрать в единый файл, если вам понадобится.
+
+
+
+ Программа работает в двух режимах: 1) с помощью параметров командной строки; 2) интерактивный режим.
+
+
+
+
+ ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ С КОНЕЧНЫМ ПОЛЬЗОВАТЕЛЕМ (EULA)
+
+ (Версия 1.0)
+
+ ОПРЕДЕЛЕНИЯ
+
+
+ ANB Software File Splitter (далее "продукт") - программа и/или компонент программы и/или другое (игра,
+ изображение, фильм и т.п.), на которое распространяется данное соглашение.
+
+
+
+ Конечный пользователь (далее "вы" или "пользователь") - лицо и/или организация, которое(-ая) использует продукт,
+ предоставляемый под этой лицензией.
+
+
+
+ Александр Бабаев (далее "Производитель") - лицо и/или организация, которое(-ая) произвело продукт.
+
+
+
+ ОГРАНИЧЕНИЯ
+
+
+
+ В некоторых государствах (районах, областях, штатах) не позволяется ограничение или исключение ответственности
+ за непредвиденный ущерб. Если ваша страна (район, область, штат) не подразумевает ограничение или исключение
+ ответственности за непредвиденный ущерб, то данное соглашение не может применяться к вам. В этом случае
+ откажитесь от использования продукта.
+
+
+
+ В некоторых государствах (районах, областях, штатах) не позволяется исключение подразумеваемых гарантий. Если
+ ваша страна (район, область, штат) не подразумевает исключение подразумеваемых гарантий, то данное соглашение не
+ может применяться к вам. В этом случае откажитесь от использования продукта.
+
+
+
+ ПРЕДМЕТ СОГЛАШЕНИЯ
+
+
+
+ Данное соглашение заключается между Производителем продукта и Пользователем продукта. Данное соглашение
+ определяет отношения между Производителем и Пользователем, возникающие при использовании продукта.
+
+
+
+ ЛИЦЕНЗИЯ
+
+
+
+ Продукт распространяется по принципу "AS-IS" ("КАК ЕСТЬ"). Автор не несет НИКАКОЙ ОТВЕТСТВЕННОСТИ в случае
+ нанесения данной программой физического, материального или любого другого вреда вам и вашему компьютеру. Вы на
+ свой страх и риск устанавливаете продукт. Производитель и/или Распространитель не несет(-ут) никакой
+ ответственности за ошибки, неисправности (и т.п.), нанесенные продуктом вашему компьютеру.
+
+
+
+ Вы можете использовать данную программу на свое усмотрение, а также копировать и распространять со ссылкой на
+ автора и сайт "https://babaev-an.ru/". Вам запрещается копировать, распространять продукт без ссылки на автора и
+ указанный ранее сайт. Вам запрещается копирование и использование продукта, если устанавливаемая вами копия
+ продукта не имеет ссылки на автора и указанный ранее сайт. Вам запрещается изменять содержимое продукта,
+ разбирать, дизассемблировать и изменять продукт, использовать её компоненты в других программах без письменного
+ соглашения Производителя, удалять или исправлять в продукте любые знаки о праве собственности и/или авторском
+ праве на продукт.
+
+
+
+ ЕСЛИ ВЫ ЗАГРУЖАЕТЕ, КОПИРУЕТЕ ПРОДУКТ ИЛИ ИСПОЛЬЗУЕТЕ ЕГО КАКИМ-ЛИБО ДРУГИМ СПОСОБОМ, ЭТИМ ВЫ ПОДТВЕРЖДАЕТЕ СВОЕ
+ СОГЛАСИЕ СОБЛЮДАТЬ УСЛОВИЯ ДАННОГО ЛИЦЕНЗИОННОГО СОГЛАШЕНИЯ С КОНЕЧНЫМ ПОЛЬЗОВАТЕЛЕМ. ЕСЛИ ВЫ НЕ СОГЛАСНЫ, НЕ
+ УСТАНАВЛИВАЙТЕ, НЕ КОПИРУЙТЕ И НЕ ИСПОЛЬЗУЙТЕ ПРОДУКТ.
+
+
+
+ АВТОРСКОЕ ПРАВО
+
+
+
+ Авторское право на все копии продукта принадлежат Производителю и защищено законодательством РФ и ряда других
+ стран.
+
+
+
+ ОГРАНИЧЕННАЯ ГАРАНТИЯ И ПРАВОВАЯ ОГОВОРКА
+
+
+
+ Вам не дается никаких гарантий. Все ваши возможные требования, притязания и претензии (в том числе и по
+ качеству) будут НЕПРИЗНАННЫ.
+
+
+
+ ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ
+
+
+
+ Вам не дается никаких обязательств. Все ваши возможные требования будут НЕПРИЗНАННЫ.
+
+
+
+
+ Как использовать: Разделение файлов
+
+ Операция «Разделение файлов» служит для разбиения некоторого файла (далее, исходный файл) на n частей, заданного
+ размера. Она требует следующих параметров:
+
+
+
+ -
+
-fn="Имя файла"
- имя исходного файла.
+
+ -
+
-td="Путь"
- папка, в которую будут сохранены части файла.
+
+ -
+
-ps=«ЧИСЛО»>
- размер части файла в байтах.
+
+
+
+
+ В интерактивном режиме пользователь будет опрошен по каждому параметру.
+
+
+
+ Операция «Разделение файлов» может содержать следующие дополнительные параметры разбиения:
+
+
+
+ -
+
/NoCheckHash
- не проверять части на совпадение с контрольными суммами.
+
+ -
+
/DeleteSource
- после разбиения удаляется исходный файл.
+
+ -
+
/EncryptInfoFile
- нужно ли шифровать файл информации. ВНИМАНИЕ! Включение
+ этого параметра обязывает Вас при сборке указывать в дополнительных параметрах сборки параметр
+ /DecryptInfoFile
. В противном случае, вы словите код возврата 3 при попытке
+ собрать файл.
+
+
+
+
+ Параметры вводятся через пробел, как в режиме параметров командной строки, так и в интерактивномрежиме.
+
+
+
+ Например, нужно разбить файл C:\myFiles\myBigFile.mp4
на файлы размером 10 МБайт и сохранить файлы
+ разбиения в папку C:\myFilesSplited\
, удалив исходник, зашифровав файл информации о разбиении и не
+ выдавая пользователю никаких запросов. Тогда вы должны запустить программу следующим способом:
+
+
+
+ FileSplitter split -fn="C:\myFiles\myBigFile.mp4" -td="C:\myFilesSplited" -ps=10485760 /DeleteSource /EncryptInfoFile --silent
+
+
+
+
+
+
+ Как использовать: Объединение файлов
+
+ Операция «Объединение файлов» соединяет разбитый ранее с помощью операции «Разделения файла» файл. Она требует
+ следующих параметров:
+
+
+
+ -
+
-ifn="Имя файла"
- имя файла с информацией о разбиении.
+
+ -
+
-tfn="Путь"
- файл, в который нужно собрать разбиение.
+
+
+
+
+ В интерактивном режиме пользователь будет опрошен по каждому параметру.
+
+
+
+ Операция «Объединение файлов» может содержать следующие дополнительные параметры сборки:
+
+
+
+ -
+
/NoCheckHash
- не проверять части на совпадение с контрольными суммами.
+
+ -
+
/DeleteSource
- после объединения удаляются файлы разбиения.
+
+ -
+
/DecryptInfoFile
- нужно ли дешифровать файл информации. ВНИМАНИЕ! Включение
+ этого параметра обязывает Вас при разбивке указывать в дополнительных параметрах разбиения параметр
+ /EncryptInfoFile
. В противном случае, вы словите код возврата 3 при попытке
+ собрать файл.
+
+ -
+
/IgnoreVersion
- отключить проверку версии файла информации (НЕ РЕКОМЕНДУЕТСЯ).
+
+ -
+
/SkipCheck
- отключить проверку собранного файла на соответствие оригиналу.
+
+
+
+
+ Параметры вводятся через пробел, как в режиме параметров командной строки, так и в интерактивномрежиме.
+
+
+
+ Например, нужно объединить файл, заданный информацией C:\myFilesSplited\myBigFile.mp4.fsi
, в файл
+ C:\myFiles\myBigFile.mp4
, удалив файлы разбиения, дешифровав файл информации о разбиении и отключив
+ проверку собранного файла на соответствие оригиналу. Тогда вы должны
+ запустить программу следующим способом:
+
+
+
+ FileSplitter join -ifn="C:\myFilesSplited\myBigFile.mp4.fsi" -tfn="C:\myFiles\myBigFile.mp4" /DeleteSource /DecryptInfoFile /SkipCheck
+
+
+
+
+
+
+ Как использовать: Параметры приложения
+
+ Операция «Параметры приложения» позволяет настроить параметры приложения и работает только в
+ интерактивном режиме. Она требует
+ следующих параметров:
+
+
+
+
+
+
+ Параметр
+ |
+
+ Возможные значение
+ |
+
+ Описание
+ |
+
+ Пример
+ |
+
+
+
+
+
+ language
+ |
+
+ Строка (имя файла языка)
+ |
+
+ Задаёт язык приложения
+ |
+
+ language=russian
+ |
+
+
+
+
+
+
+ Как использовать: Параметры консольной строки
+
+ Для использования программы в режиме параметров командной строки запустите программу, передав параметры
+ командной строки в формате:
+
+
+
+ FileSplitter [ОПЕРАЦИЯ] [ПАРАМЕТРЫ ОПЕРАЦИИ] [ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ] [ТИХИЙ РЕЖИМ]
+
+
+
+
+ [ОПЕРАЦИЯ] может принимать следующие значения:
+
+
+
+
+
+ [ПАРАМЕТРЫ ОПЕРАЦИИ] и [ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ] описаны в соответствующих разделах справки.
+
+
+
+ [ТИХИЙ РЕЖИМ] работает только в режиме параметров командной строки и включается указанием:
+
+
+ -
+
--silent
- наличие этого параметра указывает, что не должны выдаваться никакие запросы
+ пользователю (так называемый «Тихий режим»).
+
+
+
+ Для выключения тихого режима просто не указывайте этот параметр.
+
+
+
+
+
\ No newline at end of file
diff --git a/output/x32/languages/english.json b/output/x32/languages/english.json
new file mode 100644
index 0000000..e184875
--- /dev/null
+++ b/output/x32/languages/english.json
@@ -0,0 +1,70 @@
+{
+ //This file was translated with Yandex Translator (https://translate.yandex.ru/)
+ //Application Parameters
+ "AppTitle": "ANB Software File Splitter",
+ "AppVersion": "Version: {0}",
+ "AppCopyrights": "Copyrights (C) {0} by Alexander Babaev.",
+
+ //Messages
+ "MessageNoParametersForSplit": "Split parameters are not set. For information about working with the program, see the file «\\Help\\English.html#ConsoleParams»",
+ "MessageSplitAsk": "Information about splitting file:\n***{0}\n***Size: {1}\n***File hash: {2}\n***It is assumed to split into {3} parts(s)\nDo you want to start split? [Y|y - yes, any other letter - no]",
+ "MessageStartSplit": "The splitting of the file {0} into parts of the size {1} and saving them in the directory {2} is started.",
+ "MessageSplitFilePart": "Processing part {0} of {1}...",
+ "MessageSplitComplete": "File splitting {0} is complete!",
+ "MessageHashCheckStart": "Starting check the hash of the splitting",
+ "MessageHashCheckFail": "Unfortunately, the file \"{0}\" did not pass the hash check!",
+ "MessageHashCheckComplete": "Hash verification is complete!",
+ "MessageJoinAsk": "Do you want to start joining file {0}? [Y|y - yes, any other letter - no]",
+ "MessageStartJoin": "Joining of files specified by the information file {0} into the file {1} has started.",
+ "MessageJoinUnsupportedFile": "Unfortunately, the version of the information file {0} is not supported!",
+ "MessageJoinUnknownFile": "Can't read the information file! Maybe it's encrypted?",
+ "MessageJoinHashError": "Unfortunately, the split files did not pass verification. Perhaps they are damaged?",
+ "MessageJoinCheckError": "Unfortunately, the joined file did not pass the validation of join. Perhaps there were any mistakes?",
+ "MessageJoinFilePart": "Processing part {0} of {1}...",
+ "MessageJoinComplete": "File joining {0} is complete!",
+ "MessagePleaseWaitToReady": "Please wait. Preparations for the operation are underway. This may take a long time, during which the program may seem to hang.",
+
+ //Interactive mode messages
+ "InteractiveStartAsk": "Choose one of the actions:\n* S|s - splitting\n* J|j - joining\n* O|o - program's options\n* E|e - exit\nYour choice:",
+ "InteractiveWrongInput": "Unknown action selected!",
+ "InteractiveOperationFinish": "The operation is completed! Exit code is: {0}",
+ "InteractiveFileNameNotExist": "The file does not exist! Repeat file entry? [Y|y - to repeat, any other letter - to abort operation]",
+ "InteractiveFileNameExist": "The file exists! You need to select a non-existent file! Repeat file entry? [Y|y - to repeat, any other letter - to abort operation]",
+
+ "InteractiveSplitFileNameAsk": "Enter the name of the file to split (or drag it here):",
+ "InteractiveSplitFileNameResult": "File selected for splitting: {0}",
+ "InteractiveSplitTargetDirAsk": "Select the folder where you want to save the parts of the file (or leave it empty to use the folder of the split file):",
+ "InteractiveSplitTargetDirResult": "The split files will be saved in the folder: {0}",
+ "InteractiveSplitPartSizeAsk": "Enter the size of the part (in bytes):",
+ "InteractiveSplitPartSizeAsk2": "You have selected the part size {0}. Is everything right? [Y|y - yes, continue; any other letter - no, repeat input]",
+ "InteractiveSplitPartSizeResult": "Selected part size: {0}",
+ "InteractiveSplitOptionsAsk": "Enter additional splitting parameters (space separator):",
+ "InteractiveSplitOptionsResult": "Additional splitting parameters are selected: [{0}]",
+
+ "InteractiveJoinFileNameAsk": "Enter the name of the split information file (or drag it here):",
+ "InteractiveJoinFileNameResult": "The file selected for the join is: {0}",
+ "InteractiveJoinTargetFileNameAsk": "Select the name and path to the file to be joined (for example, c:\\myFiles\\myFile.txt ):",
+ "InteractiveJoinTargetFileNameResult": "The file will be joined: {0}",
+ "InteractiveJoinOptionsAsk": "Enter additional join parameters (space delimiter):",
+ "InteractiveJoinOptionsResult": "Additional join parameters selected: [{0}]",
+
+ "InteractiveOptionsAsk": "Enter the program parameters (space delimiter):",
+ "InteractiveOptionsConfirm": "Program parameters selected:\n{0}\nDo you confirm them? [Y|y - yes, any other letter - to abort]",
+ "InteractiveOptionsResult": "The parameters are saved! To apply them, you need to restart the program...",
+
+ //Константы размеров
+ "FileSizeStringsByte": "byte",
+ "FileSizeStringsKByte": "KByte",
+ "FileSizeStringsMByte": "MByte",
+ "FileSizeStringsGByte": "GByte",
+ "FileSizeStringsTByte": "TByte",
+
+ //Переводы кодов возврата
+ "ExitCodeNamesAllDone": "Completed successfully",
+ "ExitCodeNamesInfoVersionUnsupported": "The version of the split information file is not supported",
+ "ExitCodeNamesInvalidParameters": "Invalid parameters",
+ "ExitCodeNamesSplitFileHashError": "Error checking the hash sum of split files",
+ "ExitCodeNamesTargetFileCheckError": "Error checking the integrity of joined file",
+ "ExitCodeNamesUnknownInfoFile": "Unknown partitioning information file",
+ "ExitCodeNamesUserAborted": "Aborted by the user"
+}
\ No newline at end of file
diff --git a/output/x32/languages/russian.json b/output/x32/languages/russian.json
new file mode 100644
index 0000000..73e90fd
--- /dev/null
+++ b/output/x32/languages/russian.json
@@ -0,0 +1,69 @@
+{
+ //Параметры приложения
+ "AppTitle": "ANB Software Делитель файлов",
+ "AppVersion": "Версия: {0}",
+ "AppCopyrights": "Авторские права (C) {0}, Александр Бабаев.",
+
+ //Сообщения
+ "MessageNoParametersForSplit": "Не заданы параметры разбиения. Информацию о работе с программой смотрите в файле «<папка с программой>\\Help\\Russian.html#ConsoleParams»\"",
+ "MessageSplitAsk": "Информация о разбиваемом файле:\n***{0}\n***Размер: {1}\n***Хэш файла: {2}\n***Предполагается разбиение на {3} части(-ей)\nВы хотите начать разбиение? [Y|y - да, Любая другая буква/слово/выражение - нет]",
+ "MessageStartSplit": "Запущено разбиение файла {0} на части размером {1} и сохранением их в директории {2}.",
+ "MessageSplitFilePart": "Идёт обработка части {0} из {1}...",
+ "MessageSplitComplete": "Разбиение файла {0} завершено!",
+ "MessageHashCheckStart": "Начинаю проверку хэша разбиения",
+ "MessageHashCheckFail": "К сожалению, файл \"{0}\" не прошёл проверку хэша!",
+ "MessageHashCheckComplete": "Проверка хэша завершена!",
+ "MessageJoinAsk": "Вы хотите начать сборку файла {0}? [Y|y - да, любая другая буква/слово/выражение - нет]",
+ "MessageStartJoin": "Запущено объединение файлов, заданных файлом информации {0}, в файл {1}.",
+ "MessageJoinUnsupportedFile": "К сожалению, версия файла информации {0} не поддерживается!",
+ "MessageJoinUnknownFile": "Не могу прочитать файл информации! Возможно он зашифрован?",
+ "MessageJoinHashError": "К сожалению, разделённые файлы не прошли проверку. Возможно они повреждены?",
+ "MessageJoinCheckError": "К сожалению, объединённый файл не прошли проверку корректности объединения. Возможно были какие-либо ошибки?",
+ "MessageJoinFilePart": "Идёт обработка части {0} из {1}...",
+ "MessageJoinComplete": "Объединение файла {0} завершено!",
+ "MessagePleaseWaitToReady": "Пожалуйста, подождите. Идёт подготовка к операции. Это может занять длительное время, в течении которого программа может казаться зависшей.",
+
+ //Сообщения интерактивного режима
+ "InteractiveStartAsk": "Выберете одно из действий:\n* S|s - разбиение\n* J|j - объединение\n* O|o - параметры программы\n* E|e - выход\nВаш выбор:",
+ "InteractiveWrongInput": "Выбрано неизвестное действие!",
+ "InteractiveOperationFinish": "Операция завершена с кодом: {0}",
+ "InteractiveFileNameNotExist": "Файл не существует! Повторить ввод файла? [Y|y - для повтора, любая другая буква - прерывание операции]",
+ "InteractiveFileNameExist": "Файл существует! Нужно выбрать несуществующий файл! Повторить ввод файла? [Y|y - для повтора, любая другая буква - прерывание операции]",
+
+ "InteractiveSplitFileNameAsk": "Введите имя разбиваемого файла (или перетащите его сюда):",
+ "InteractiveSplitFileNameResult": "Для разбиения выбран файл: {0}",
+ "InteractiveSplitTargetDirAsk": "Выберете папку, куда следует сохранить части файла (или оставьте пустым, чтобы использовать папку разбиваемого файла):",
+ "InteractiveSplitTargetDirResult": "Файлы разбиения будут сохранены в папке: {0}",
+ "InteractiveSplitPartSizeAsk": "Введите размер части (в байтах):",
+ "InteractiveSplitPartSizeAsk2": "Вы выбрали размер части {0}. Всё правильно? [Y|y - да, продолжить, любая другая буква - нет, повторить ввод]",
+ "InteractiveSplitPartSizeResult": "Выбран размер части: {0}",
+ "InteractiveSplitOptionsAsk": "Введите дополнительные параметры разбиения (разделитель - пробел):",
+ "InteractiveSplitOptionsResult": "Выбраны дополнительные параметры разбиения: [{0}]",
+
+ "InteractiveJoinFileNameAsk": "Введите имя файла информации о разбиении (или перетащите его сюда):",
+ "InteractiveJoinFileNameResult": "Для сборки выбран файл: {0}",
+ "InteractiveJoinTargetFileNameAsk": "Выберите имя и путь к собираемому файлу (например, c:\\myFiles\\myFile.txt):",
+ "InteractiveJoinTargetFileNameResult": "Будет собран файл: {0}",
+ "InteractiveJoinOptionsAsk": "Введите дополнительные параметры соединения (разделитель - пробел):",
+ "InteractiveJoinOptionsResult": "Выбраны дополнительные параметры соединения: [{0}]",
+
+ "InteractiveOptionsAsk": "Введите параметры программы (разделитель - пробел):",
+ "InteractiveOptionsConfirm": "Выбраны параметры программы:\n{0}\nВы их подтверждаете? [Y|y - да, любая другая буква - выход]",
+ "InteractiveOptionsResult": "Параметры сохранены! Для их применения требуется перезапуск программы...",
+
+ //Константы размеров
+ "FileSizeStringsByte": "байт",
+ "FileSizeStringsKByte": "Кб",
+ "FileSizeStringsMByte": "Мб",
+ "FileSizeStringsGByte": "Гб",
+ "FileSizeStringsTByte": "Тб",
+
+ //Переводы кодов возврата
+ "ExitCodeNamesAllDone": "Успешно завершено",
+ "ExitCodeNamesInfoVersionUnsupported": "Версия файла информации о разбиении не поддерживается",
+ "ExitCodeNamesInvalidParameters": "Неверные параметры",
+ "ExitCodeNamesSplitFileHashError": "Ошибка проверки хэш-суммы разделённых файлов",
+ "ExitCodeNamesTargetFileCheckError": "Ошибка проверки целостности собираемого файла",
+ "ExitCodeNamesUnknownInfoFile": "Неизвестный файл информации о разбиении",
+ "ExitCodeNamesUserAborted": "Прервано пользователем"
+}
\ No newline at end of file
diff --git a/output/x32/settings.json b/output/x32/settings.json
new file mode 100644
index 0000000..036365a
--- /dev/null
+++ b/output/x32/settings.json
@@ -0,0 +1 @@
+{"Language":"russian"}
diff --git a/output/x32/sni.dll b/output/x32/sni.dll
deleted file mode 100644
index 5fc21ac..0000000
Binary files a/output/x32/sni.dll and /dev/null differ