using FileSplitter.Shared.Enums;

namespace FileSplitter.Shared.Classes;

public static class Localization
{
    //Параметры приложения
    public const string AppTitle = "ANB Software Делитель файлов";
    public const string AppVersion = "Версия: {0}";
    public const string AppCopyrights = "Авторские права (C) {0}, Александр Бабаев.";

    //Сообщения
    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 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 readonly string[] FileSizeStrings = { "байт", "Кб", "Мб", "Гб", "Тб" };

    //Переводы кодов возврата
    public static readonly List<(FsExitCode, string)> ExitCodeNames = new()
    {
        (FsExitCode.ecAllDone, "Успешно завершено"),
        (FsExitCode.ecInvalidParameters, "Неверные параметры"),
        (FsExitCode.ecUserAborted, "Прервано пользователем"),
        (FsExitCode.ecUnknownInfoFile, "Неизвестный файл информации о разбиении"),
        (FsExitCode.ecInfoVersionUnsupported, "Версия файла информации о разбиении не поддерживается"),
        (FsExitCode.ecSplitFileHashError, "Ошибка проверки хэш-суммы разделённых файлов"),
        (FsExitCode.ecTargetFileCheckError, "Ошибка проверки целостности собираемого файла")
    };
}