added english toggle + better russian font (ig) + all screens ratio sup

This commit is contained in:
iAmAsval
2020-05-20 19:08:22 +02:00
parent 0cb78ee0f2
commit a0f2bb5229
18 changed files with 921 additions and 19 deletions

View File

@@ -26,7 +26,8 @@ namespace FModel
{
StartTimer = Stopwatch.StartNew();
//Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
if (FModel.Properties.Settings.Default.UseEnglish)
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
DebugHelper.Init(LogsFilePath);
DebugHelper.WriteLine("{0} {1}", "[FModel]", "");

View File

@@ -11,10 +11,10 @@ namespace FModel.Creator.Texts
#pragma warning disable IDE0051
private const string _BASE_PATH = "/Game/UI/Foundation/Fonts/";
private const string _ASIA_ERINM = "AsiaERINM"; // korean fortnite
private const string _BURBANK_BIG_CONDENSED_BLACK = "BurbankBigCondensed-Black";
private const string _BURBANK_BIG_CONDENSED_BLACK = "BurbankBigCondensed-Black"; // russian
private readonly Uri _BURBANK_BIG_CONDENSED_BOLD = new Uri("pack://application:,,,/Resources/BurbankBigCondensed-Bold.ttf"); // other languages fortnite unofficial
private const string _BURBANK_BIG_REGULAR_BLACK = "BurbankBigRegular-Black";
private const string _BURBANK_BIG_REGULAR_BOLD = "BurbankBigRegular-Bold"; // official fortnite but it's too big so i use it for russian only
private const string _BURBANK_BIG_REGULAR_BOLD = "BurbankBigRegular-Bold"; // official fortnite ig
private const string _BURBANK_SMALL_MEDIUM = "BurbankSmall-Medium";
private const string _DROID_SANS_FORTNITE_SUBSET = "DroidSans-Fortnite-Subset";
private const string _NIS_JYAU = "NIS_JYAU"; // japanese fortnite
@@ -55,7 +55,7 @@ namespace FModel.Creator.Texts
string namePath = _BASE_PATH + (
Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Korean ? _ASIA_ERINM :
Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Russian ? _BURBANK_BIG_REGULAR_BOLD :
Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Russian ? _BURBANK_BIG_CONDENSED_BLACK :
Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Japanese ? _NIS_JYAU :
Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Arabic ? _NOTO_SANS_ARABIC_BLACK :
Properties.Settings.Default.AssetsLanguage == (long)ELanguage.TraditionalChinese ? _NOTO_SANS_TC_BLACK :
@@ -83,7 +83,7 @@ namespace FModel.Creator.Texts
string bundleNamePath = _BASE_PATH + (
Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Korean ? _ASIA_ERINM :
Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Russian ? _BURBANK_BIG_REGULAR_BOLD :
Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Russian ? _BURBANK_BIG_CONDENSED_BLACK :
Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Japanese ? _NIS_JYAU :
Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Arabic ? _NOTO_SANS_ARABIC_BLACK :
Properties.Settings.Default.AssetsLanguage == (long)ELanguage.TraditionalChinese ? _NOTO_SANS_TC_BLACK :

View File

@@ -9,7 +9,9 @@
xmlns:utils="clr-namespace:FModel.Utils"
mc:Ignorable="d"
Style="{StaticResource {x:Type Window}}"
Title="FModel" Height="800" MinHeight="800" Width="1300" MinWidth="1300"
Title="FModel"
Height="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenHeight}, Converter={utils:Screens}, ConverterParameter='0.80' }"
Width="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenWidth}, Converter={utils:Screens}, ConverterParameter='0.75' }"
WindowStartupLocation="CenterScreen" Icon="FModel.ico"
Loaded="OnLoaded" Closing="OnClosing">
<Window.CommandBindings>

View File

@@ -141,23 +141,24 @@ namespace PakReader.Parsers.Objects
{
var data = new byte[(Size & 15) == 0 ? Size : ((Size / 16) + 1) * 16];
stream.Read(data);
byte[] decrypted = AESDecryptor.DecryptAES(data, key);
if (CompressionMethodIndex == 1)
return new ArraySegment<byte>(AESDecryptor.DecryptAES(ZlibStream.UncompressBuffer(data), key), 0, (int)UncompressedSize);
else
return new ArraySegment<byte>(AESDecryptor.DecryptAES(data, key), 0, (int)UncompressedSize);
if ((ECompressionFlags)CompressionMethodIndex == ECompressionFlags.COMPRESS_ZLIB) // zlib and pray
decrypted = ZlibStream.UncompressBuffer(decrypted);
return new ArraySegment<byte>(decrypted, 0, (int)UncompressedSize);
}
else
{
var data = new byte[UncompressedSize];
stream.Read(data);
if (CompressionMethodIndex == 1)
if ((ECompressionFlags)CompressionMethodIndex == ECompressionFlags.COMPRESS_ZLIB) // zlib and pray
return new ArraySegment<byte>(ZlibStream.UncompressBuffer(data));
else
else if ((ECompressionFlags)CompressionMethodIndex == ECompressionFlags.COMPRESS_None)
return new ArraySegment<byte>(data);
}
}
throw new NotImplementedException("Decompression not yet implemented");
}
public static long GetSize(EPakVersion version, uint CompressionMethodIndex = 0, uint CompressionBlocksCount = 0)

View File

@@ -80,7 +80,7 @@ namespace PakReader.Parsers.Objects
{
if (Methods[i*COMPRESSION_METHOD_NAME_LEN] != 0)
{
MethodList.Add(Encoding.ASCII.GetString(Methods, i * COMPRESSION_METHOD_NAME_LEN, COMPRESSION_METHOD_NAME_LEN));
MethodList.Add(Encoding.ASCII.GetString(Methods, i * COMPRESSION_METHOD_NAME_LEN, COMPRESSION_METHOD_NAME_LEN).TrimEnd('\0'));
}
}
CompressionMethods = MethodList.ToArray();

View File

@@ -2721,6 +2721,15 @@ namespace FModel.Properties {
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Use FModel in English.
/// </summary>
public static string UseFEnglish {
get {
return ResourceManager.GetString("UseFEnglish", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Use game colors.
/// </summary>

View File

@@ -805,4 +805,19 @@ It's now the most used free software to leak on Fortnite.</value>
<data name="Yes" xml:space="preserve">
<value>نعم</value>
</data>
<data name="UseDiscordRpc" xml:space="preserve">
<value>استخدم Discord RPC</value>
</data>
<data name="SaveDirectory" xml:space="preserve">
<value>احفظ المجلد</value>
</data>
<data name="NoImageToCopy" xml:space="preserve">
<value>لا يوجد حاليا صورة لنسخها</value>
</data>
<data name="CopyImage" xml:space="preserve">
<value>انسخ الصورة</value>
</data>
<data name="UseFEnglish" xml:space="preserve">
<value>استخدم Fmodel باللغة الإنجليزية</value>
</data>
</root>

View File

@@ -841,6 +841,18 @@ Jetzt ist es die am häufigsten genutzte freie Software um mit Fortnite zu leake
<value>Ja (Änderungsprotokoll Anzeigen)</value>
</data>
<data name="UseDiscordRpc" xml:space="preserve">
<value>Verwende Discord RPC</value>
<value>Discord RPC benutzen</value>
</data>
<data name="SaveDirectory" xml:space="preserve">
<value>Speicherordner</value>
</data>
<data name="NoImageToCopy" xml:space="preserve">
<value>Es gibt aktuell kein Bild zum kopieren</value>
</data>
<data name="CopyImage" xml:space="preserve">
<value>Bild kopieren</value>
</data>
<data name="UseFEnglish" xml:space="preserve">
<value>FModel in Englisch benutzen</value>
</data>
</root>

View File

@@ -856,4 +856,10 @@ C'est maintenant le logiciel gratuit le plus utilisé pour leak sur Fortnite.</v
<data name="CopyImage" xml:space="preserve">
<value>Copier l'Image</value>
</data>
<data name="NoImageToCopy" xml:space="preserve">
<value>Il n'y a actuellement aucune image à copier</value>
</data>
<data name="UseFEnglish" xml:space="preserve">
<value>Utiliser FModel en Anglais</value>
</data>
</root>

View File

@@ -811,4 +811,13 @@ Col tempo sono state aggiunte nuove funzioni e molti altri utenti hanno comincia
<data name="SaveDirectory" xml:space="preserve">
<value>Salva Directory</value>
</data>
<data name="CopyImage" xml:space="preserve">
<value>Copia Immagine</value>
</data>
<data name="UseFEnglish" xml:space="preserve">
<value>Usa FModel in inglese</value>
</data>
<data name="NoImageToCopy" xml:space="preserve">
<value>Al momento non ci sono immagini da copiare</value>
</data>
</root>

View File

@@ -1094,4 +1094,7 @@ It's now the most used free software to leak on Fortnite.</value>
<data name="NoImageToCopy" xml:space="preserve">
<value>There is currently no image to copy</value>
</data>
<data name="UseFEnglish" xml:space="preserve">
<value>Use FModel in English</value>
</data>
</root>

View File

@@ -0,0 +1,792 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="AboutF" xml:space="preserve">
<value>О Fmodel</value>
</data>
<data name="Add" xml:space="preserve">
<value>Добавить</value>
</data>
<data name="AddDirectory" xml:space="preserve">
<value>Все директории</value>
</data>
<data name="AES" xml:space="preserve">
<value>AES</value>
</data>
<data name="AesKey" xml:space="preserve">
<value>Ключ AES</value>
</data>
<data name="AesKeysUpdated" xml:space="preserve">
<value>AES ключи были обновлены</value>
</data>
<data name="AesNotWorking" xml:space="preserve">
<value>'{0}' не работает с '{1}'</value>
</data>
<data name="AllDocuments" xml:space="preserve">
<value>Все документы</value>
</data>
<data name="AllFiles" xml:space="preserve">
<value>Все файлы</value>
</data>
<data name="Arabic" xml:space="preserve">
<value>Арабский</value>
</data>
<data name="Audio" xml:space="preserve">
<value>Аудио</value>
</data>
<data name="AudioDevices" xml:space="preserve">
<value>Звуковые устройства</value>
</data>
<data name="Auto" xml:space="preserve">
<value>Автоматически</value>
</data>
<data name="B" xml:space="preserve">
<value>B</value>
</data>
<data name="BackupPaks" xml:space="preserve">
<value>Создать бэкап паков</value>
</data>
<data name="Backups" xml:space="preserve">
<value>Бэкапы</value>
</data>
<data name="Banner" xml:space="preserve">
<value>Баннер</value>
</data>
<data name="BenBotApi" xml:space="preserve">
<value>BenBot API</value>
</data>
<data name="BugsReport" xml:space="preserve">
<value>Сообщить об ошибке</value>
</data>
<data name="BytesPerSecond" xml:space="preserve">
<value>Байтов в секунду</value>
</data>
<data name="Cancel" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="Canceled" xml:space="preserve">
<value>Отмененно!</value>
</data>
<data name="ChallengesCustomBanner" xml:space="preserve">
<value>Кастомный баннер для испытаний</value>
</data>
<data name="ChallengesThemeCreator" xml:space="preserve">
<value>Редактор тем для испытаний</value>
</data>
<data name="ChangeGame" xml:space="preserve">
<value>Изменить игру</value>
</data>
<data name="Changelog" xml:space="preserve">
<value>Список изменений</value>
</data>
<data name="Chinese" xml:space="preserve">
<value>Китайский (Упрощенный)</value>
</data>
<data name="Clear" xml:space="preserve">
<value>Очистить</value>
</data>
<data name="Colors" xml:space="preserve">
<value>Цвета</value>
</data>
<data name="CopySuccess" xml:space="preserve">
<value>Скопированно!</value>
</data>
<data name="CouldNotCreateDirectory" xml:space="preserve">
<value>Не удалось создать директорию</value>
</data>
<data name="CreateError" xml:space="preserve">
<value>Ошибка вовремя создания {0}</value>
</data>
<data name="CreateSuccess" xml:space="preserve">
<value>{0} успешно создан</value>
</data>
<data name="CurrentDocument" xml:space="preserve">
<value>Текщий документ</value>
</data>
<data name="CustomBannerNotFound" xml:space="preserve">
<value>Файлы не найден, кастомная тема для испытаний отключена</value>
</data>
<data name="DataExported" xml:space="preserve">
<value>{0} успешно экспортирован</value>
</data>
<data name="DataSaved" xml:space="preserve">
<value>Данные успешно сохранены</value>
</data>
<data name="Default" xml:space="preserve">
<value>Стандартный</value>
</data>
<data name="Design" xml:space="preserve">
<value>Дизайн</value>
</data>
<data name="Directories" xml:space="preserve">
<value>Директории</value>
</data>
<data name="DirectoryName" xml:space="preserve">
<value>Имя директории</value>
</data>
<data name="Disabled" xml:space="preserve">
<value>Отключено</value>
</data>
<data name="DiscordServer" xml:space="preserve">
<value>Discord сервер</value>
</data>
<data name="Donate" xml:space="preserve">
<value>Поддержка(донат)</value>
</data>
<data name="DonatorsF" xml:space="preserve">
<value>Донатеры</value>
</data>
<data name="DownloadError" xml:space="preserve">
<value>Ошибка во время загрузки {0}</value>
</data>
<data name="Downloading" xml:space="preserve">
<value>Загружается</value>
</data>
<data name="DownloadSuccess" xml:space="preserve">
<value>{0} усепшно загружен</value>
</data>
<data name="DynamicKeyNotWorking" xml:space="preserve">
<value>{0} не работает с {1}</value>
</data>
<data name="DynamicKeys" xml:space="preserve">
<value>Динамические ключи</value>
</data>
<data name="EditDirectory" xml:space="preserve">
<value>Изменить директорию</value>
</data>
<data name="Enabled" xml:space="preserve">
<value>Включено</value>
</data>
<data name="English" xml:space="preserve">
<value>Английский</value>
</data>
<data name="Error" xml:space="preserve">
<value>Ошибка</value>
</data>
<data name="Exit" xml:space="preserve">
<value>Выход</value>
</data>
<data name="Export" xml:space="preserve">
<value>Экспортировать</value>
</data>
<data name="FbkpFilter" xml:space="preserve">
<value>FBKP Файлы (*.fbkp)|*.fbkp|Все файлы (*.*)|*.*</value>
</data>
<data name="FCopy" xml:space="preserve">
<value>Скопировать</value>
</data>
<data name="FFile" xml:space="preserve">
<value>Файл</value>
</data>
<data name="FileCount" xml:space="preserve">
<value>Количество файлов</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Имя файла</value>
</data>
<data name="FileNameNoExt" xml:space="preserve">
<value>Имя файла без расширения</value>
</data>
<data name="Files" xml:space="preserve">
<value>Файлы</value>
</data>
<data name="Filter" xml:space="preserve">
<value>Фильтр</value>
</data>
<data name="Find" xml:space="preserve">
<value>Найти</value>
</data>
<data name="FindAndReplace" xml:space="preserve">
<value>Найти и заменить</value>
</data>
<data name="FindNext" xml:space="preserve">
<value>Найти следующий</value>
</data>
<data name="Flat" xml:space="preserve">
<value>Плоский</value>
</data>
<data name="FLauncher" xml:space="preserve">
<value>Лаунчер FModel</value>
</data>
<data name="French" xml:space="preserve">
<value>Французкий</value>
</data>
<data name="FyiDetails" xml:space="preserve">
<value>Выбранный язык будет использоваться во время создания иконок</value>
</data>
<data name="Games" xml:space="preserve">
<value>Игры</value>
</data>
<data name="GB" xml:space="preserve">
<value>GB</value>
</data>
<data name="General" xml:space="preserve">
<value>Основное</value>
</data>
<data name="GeneralSettings" xml:space="preserve">
<value>Основные настройки</value>
</data>
<data name="German" xml:space="preserve">
<value>Немецкий</value>
</data>
<data name="Hello" xml:space="preserve">
<value>Здравсвтуйте</value>
</data>
<data name="Help" xml:space="preserve">
<value>Помощь</value>
</data>
<data name="Icon" xml:space="preserve">
<value>Иконка</value>
</data>
<data name="IconCreator" xml:space="preserve">
<value>Редактор иконки</value>
</data>
<data name="IconWatermark" xml:space="preserve">
<value>Изображение водяного знака</value>
</data>
<data name="IconWatermarkNotFound" xml:space="preserve">
<value>Файл не найден, водяной знак отключен</value>
</data>
<data name="Images" xml:space="preserve">
<value>Изображение</value>
</data>
<data name="ImageSaved" xml:space="preserve">
<value>Изображение успешно сохранено</value>
</data>
<data name="ImagesMerger" xml:space="preserve">
<value>Редактор изображений</value>
</data>
<data name="Initializing" xml:space="preserve">
<value>Инициализация</value>
</data>
<data name="InternationalizationStatus" xml:space="preserve">
<value>Установлен {0} язык</value>
</data>
<data name="Italian" xml:space="preserve">
<value>Итальянский</value>
</data>
<data name="Japanese" xml:space="preserve">
<value>Японский</value>
</data>
<data name="JsonFilter" xml:space="preserve">
<value>Файлы JSON (*.json)|*.json</value>
</data>
<data name="KB" xml:space="preserve">
<value>KB</value>
</data>
<data name="Korean" xml:space="preserve">
<value>Корейский</value>
</data>
<data name="Language" xml:space="preserve">
<value>Язык</value>
</data>
<data name="LoadAll" xml:space="preserve">
<value>Загрузить все</value>
</data>
<data name="Loading" xml:space="preserve">
<value>Загрузка</value>
</data>
<data name="LoadingMode" xml:space="preserve">
<value>Режим загрузки</value>
</data>
<data name="LoadModifiedFiles" xml:space="preserve">
<value>Загрузить измененные файлы</value>
</data>
<data name="LoadNewFiles" xml:space="preserve">
<value>Загрузить новые файлы</value>
</data>
<data name="LoadNewModifiedFiles" xml:space="preserve">
<value>Загрузить новые и измененные файлы</value>
</data>
<data name="MainPaks" xml:space="preserve">
<value>Основные паки:</value>
</data>
<data name="MB" xml:space="preserve">
<value>MB</value>
</data>
<data name="Media" xml:space="preserve">
<value>Медиафайлы</value>
</data>
<data name="Minimalist" xml:space="preserve">
<value>Минималистичный</value>
</data>
<data name="ModifiedFiles" xml:space="preserve">
<value>Измененные файлы</value>
</data>
<data name="Name" xml:space="preserve">
<value>Имя</value>
</data>
<data name="NewFiles" xml:space="preserve">
<value>Новые файлы</value>
</data>
<data name="NewModifiedFiles" xml:space="preserve">
<value>Новые и измененные файлы</value>
</data>
<data name="No" xml:space="preserve">
<value>No</value>
</data>
<data name="NoText" xml:space="preserve">
<value>Нет текста</value>
</data>
<data name="OggFilter" xml:space="preserve">
<value>Файлы OGG (*.ogg)|*.ogg|Файлы WAV (*.wav)|*.wav|Все файлы (*.*)|*.*</value>
</data>
<data name="OK" xml:space="preserve">
<value>OK</value>
</data>
<data name="Opacity" xml:space="preserve">
<value>Прозрачность</value>
</data>
<data name="Open" xml:space="preserve">
<value>Открыть</value>
</data>
<data name="OpenImage" xml:space="preserve">
<value>Открыть изображение</value>
</data>
<data name="OpenOutputFolder" xml:space="preserve">
<value>Открыть папку экспорта</value>
</data>
<data name="Options" xml:space="preserve">
<value>Опции</value>
</data>
<data name="PAK" xml:space="preserve">
<value>PAK</value>
</data>
<data name="PakCanBeOpened" xml:space="preserve">
<value>{0} сейчас доступен</value>
</data>
<data name="PakFileLocked" xml:space="preserve">
<value>{0} заблокировано другим процессом</value>
</data>
<data name="PakFiles" xml:space="preserve">
<value>Файлы паков</value>
</data>
<data name="PakFilesAutoDetected" xml:space="preserve">
<value>Файлы паков Фортнайта автоматически найдены</value>
</data>
<data name="PathAutoDetected" xml:space="preserve">
<value>.PAK файлы обнаружены автоматически</value>
</data>
<data name="PngFilter" xml:space="preserve">
<value>PNG Файлы (*.png)|*.png|Все Файлы (*.*)|*.*</value>
</data>
<data name="Polish" xml:space="preserve">
<value>Польский</value>
</data>
<data name="PortugueseBrazil" xml:space="preserve">
<value>Португальский (Бразильский)</value>
</data>
<data name="Preview" xml:space="preserve">
<value>Предварительный просмотр</value>
</data>
<data name="Primary" xml:space="preserve">
<value>Начальный</value>
</data>
<data name="Rarity" xml:space="preserve">
<value>Редкость</value>
</data>
<data name="ReloadAesKeysAtLaunch" xml:space="preserve">
<value>Обновлять ключи AES во время запуска программы</value>
</data>
<data name="RememberGame" xml:space="preserve">
<value>Запомнить игру</value>
</data>
<data name="Remove" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="RemoveDirectory" xml:space="preserve">
<value>Удалить директорию</value>
</data>
<data name="RemovedRenamedCosmetics" xml:space="preserve">
<value>Удаленные или переименованные предметы:</value>
</data>
<data name="Replace" xml:space="preserve">
<value>Заменить</value>
</data>
<data name="ReplaceAll" xml:space="preserve">
<value>Заменить все</value>
</data>
<data name="RestoreLayout" xml:space="preserve">
<value>Восстановить расположение</value>
</data>
<data name="Rgba" xml:space="preserve">
<value>Красный, Зелёный, Синий, Прозрачность</value>
</data>
<data name="Russian" xml:space="preserve">
<value>Русский</value>
</data>
<data name="Save" xml:space="preserve">
<value>Сохранить</value>
</data>
<data name="SaveImage" xml:space="preserve">
<value>Сохранить изображение</value>
</data>
<data name="SaveSuccess" xml:space="preserve">
<value>{0} успешно сохранено</value>
</data>
<data name="Search" xml:space="preserve">
<value>Искать</value>
</data>
<data name="Secondary" xml:space="preserve">
<value>Вторичный</value>
</data>
<data name="SelectFile" xml:space="preserve">
<value>Найти файл</value>
</data>
<data name="SelectFolder" xml:space="preserve">
<value>Указать папку</value>
</data>
<data name="Settings" xml:space="preserve">
<value>Настройки</value>
</data>
<data name="Spanish" xml:space="preserve">
<value>Испанский</value>
</data>
<data name="SpanishLatin" xml:space="preserve">
<value>Испнский (Латиноамериканский)</value>
</data>
<data name="SRefresh" xml:space="preserve">
<value>Обновить</value>
</data>
<data name="StaticKey" xml:space="preserve">
<value>Статичкеский ключ</value>
</data>
<data name="StaticKeyNotWorking" xml:space="preserve">
<value>{0} не работает с вашими паками</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Остановить</value>
</data>
<data name="Success" xml:space="preserve">
<value>Успешно</value>
</data>
<data name="TB" xml:space="preserve">
<value>TB</value>
</data>
<data name="TextToFind" xml:space="preserve">
<value>Текст для поиска:</value>
</data>
<data name="TimeElapsed" xml:space="preserve">
<value>Прошло времени {0}мс</value>
</data>
<data name="TotalSize" xml:space="preserve">
<value>Общий размер</value>
</data>
<data name="TraditionalChinese" xml:space="preserve">
<value>Китайский (Традиционный)</value>
</data>
<data name="TranslatorsF" xml:space="preserve">
<value>Переводчики</value>
</data>
<data name="Turkish" xml:space="preserve">
<value>Турецкий</value>
</data>
<data name="Update" xml:space="preserve">
<value>Обновить</value>
</data>
<data name="UpdateAvailable" xml:space="preserve">
<value>Доступно обновление</value>
</data>
<data name="UpdateAvailableConfirm" xml:space="preserve">
<value>Доступна новая версия Fmodel {0}. Вы используйте версию {1}. Хотите обновить версию сейчас?</value>
</data>
<data name="UpdateCheckFailed" xml:space="preserve">
<value>При проверке обновления произошла ошибка</value>
</data>
<data name="UpdateReachServerProblem" xml:space="preserve">
<value>Возникла проблема при попытке подключения к серверу обновлений, пожалуйста проверьте своё соединение с интернетом или попробуйте позже</value>
</data>
<data name="UseGameColors" xml:space="preserve">
<value>Использовать цвета из игры</value>
</data>
<data name="UseItemShopIcon" xml:space="preserve">
<value>Использовать иконки магазина</value>
</data>
<data name="UseWatermark" xml:space="preserve">
<value>Использовать водяной знак</value>
</data>
<data name="Version" xml:space="preserve">
<value>Версия</value>
</data>
<data name="Volume" xml:space="preserve">
<value>Громкость звука</value>
</data>
<data name="Waiting" xml:space="preserve">
<value>Ожидание</value>
</data>
<data name="Warning" xml:space="preserve">
<value>Внимание</value>
</data>
<data name="Watermark" xml:space="preserve">
<value>Водяной знак</value>
</data>
<data name="YesShowChangelog" xml:space="preserve">
<value>Да (Посмотреть список изменений)</value>
</data>
<data name="Yes" xml:space="preserve">
<value>Да</value>
</data>
<data name="AboutToDownload" xml:space="preserve">
<value>Вы собираетесь загрузить {0}, размер которого {1}</value>
</data>
<data name="AddSeparator" xml:space="preserve">
<value>Добавить перегородку</value>
</data>
<data name="Analyzing" xml:space="preserve">
<value>Анализ {0}</value>
</data>
<data name="Asset" xml:space="preserve">
<value>Информация</value>
</data>
<data name="Assets" xml:space="preserve">
<value>Функции</value>
</data>
<data name="AudioPlayer" xml:space="preserve">
<value>Аудиоплеер</value>
</data>
<data name="AutoOpenSounds" xml:space="preserve">
<value>Автоматически открывать звуки</value>
</data>
<data name="CaseSensitive" xml:space="preserve">
<value>С учетом регистра</value>
</data>
<data name="Compression" xml:space="preserve">
<value>Сжатие</value>
</data>
<data name="ContributorsF" xml:space="preserve">
<value>Помощники</value>
</data>
<data name="Difference" xml:space="preserve">
<value>Отличающиеся</value>
</data>
<data name="DirectoryPath" xml:space="preserve">
<value>Путь директории</value>
</data>
<data name="Duration" xml:space="preserve">
<value>Длительность</value>
</data>
<data name="Encrypted" xml:space="preserve">
<value>Зашифрованный</value>
</data>
<data name="Extract" xml:space="preserve">
<value>Извлечь</value>
</data>
<data name="ExtractDirectory" xml:space="preserve">
<value>Открыть директорию</value>
</data>
<data name="Extraction" xml:space="preserve">
<value>Извлечение</value>
</data>
<data name="FilePath" xml:space="preserve">
<value>Путь файла</value>
</data>
<data name="GoTo" xml:space="preserve">
<value>Перейти</value>
</data>
<data name="Hsv" xml:space="preserve">
<value>Оттенок, Насыщенность, Значение</value>
</data>
<data name="Hue" xml:space="preserve">
<value>Оттенок</value>
</data>
<data name="Include" xml:space="preserve">
<value>Форматы</value>
</data>
<data name="IsPartOf" xml:space="preserve">
<value>Находится в</value>
</data>
<data name="Listening" xml:space="preserve">
<value>Прослушиватся - {0}</value>
</data>
<data name="MountedPakTo" xml:space="preserve">
<value>{0} пермещено в {1}</value>
</data>
<data name="MountPoint" xml:space="preserve">
<value>Путь к файлам</value>
</data>
<data name="NoDataToExport" xml:space="preserve">
<value>На данный момент нет данных для экспорта</value>
</data>
<data name="NoDataToSave" xml:space="preserve">
<value>В настоящее время нет данных для сохранения</value>
</data>
<data name="NoImageToSave" xml:space="preserve">
<value>На данный момент нет изображения для сохранения</value>
</data>
<data name="NoInternet" xml:space="preserve">
<value>У вас имеются пробелмы с подключением к интеренету</value>
</data>
<data name="Offsets" xml:space="preserve">
<value>Смещение</value>
</data>
<data name="ParsingNotSupported" xml:space="preserve">
<value>Просмотр {0} файлов на данный момент не поддерижвается.</value>
</data>
<data name="Path" xml:space="preserve">
<value>Путь</value>
</data>
<data name="PathChanged" xml:space="preserve">
<value>Путь к FModel был изменен</value>
</data>
<data name="PathChangedRestart" xml:space="preserve">
<value>FModel требует перезапуска, потому что вы указали новый путь</value>
</data>
<data name="Popup" xml:space="preserve">
<value>Всплывающее</value>
</data>
<data name="Processing" xml:space="preserve">
<value>Обработка</value>
</data>
<data name="ReplaceWith" xml:space="preserve">
<value>Заменить на</value>
</data>
<data name="Scale" xml:space="preserve">
<value>Размер</value>
</data>
<data name="SearchIn" xml:space="preserve">
<value>Поиск в</value>
</data>
<data name="SearchUp" xml:space="preserve">
<value>Поиск</value>
</data>
<data name="State" xml:space="preserve">
<value>Положение</value>
</data>
<data name="UnhandledExceptionOccured" xml:space="preserve">
<value>Произошла непредвиденная ошибка: {0}</value>
</data>
<data name="UseDiscordRpc" xml:space="preserve">
<value>Использовать Discord RPC</value>
</data>
<data name="SaveDirectory" xml:space="preserve">
<value>Сохранить дерикторию</value>
</data>
<data name="NoImageToCopy" xml:space="preserve">
<value>Нет изображения для копирования</value>
</data>
<data name="CopyImage" xml:space="preserve">
<value>Скопировать изображение</value>
</data>
<data name="FyiTitle" xml:space="preserve">
<value>Для Вашей информации:</value>
</data>
<data name="UseFEnglish" xml:space="preserve">
<value>Использовать FModel на Английском</value>
</data>
</root>

View File

@@ -299,6 +299,18 @@ namespace FModel.Properties {
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool UseEnglish {
get {
return ((bool)(this["UseEnglish"]));
}
set {
this["UseEnglish"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]

View File

@@ -71,6 +71,9 @@
<Setting Name="AssetsIconDesign" Type="System.Int64" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="UseEnglish" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="UseGameColors" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>

31
FModel/Utils/Screens.cs Normal file
View File

@@ -0,0 +1,31 @@
using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Markup;
namespace FModel.Utils
{
[ValueConversion(typeof(string), typeof(string))]
public class Screens : MarkupExtension, IValueConverter
{
private static Screens _instance;
public Screens() { }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{ // do not let the culture default to local to prevent variable outcome re decimal syntax
double size = System.Convert.ToDouble(value) * System.Convert.ToDouble(parameter, CultureInfo.InvariantCulture);
return size.ToString("G0", CultureInfo.InvariantCulture);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{ // read only converter...
throw new NotImplementedException();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return _instance ?? (_instance = new Screens());
}
}
}

View File

@@ -15,7 +15,6 @@ using PakReader.Parsers.Objects;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics.Eventing.Reader;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

View File

@@ -120,6 +120,7 @@
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<CheckBox Grid.Row="0" Margin="5"
@@ -128,7 +129,9 @@
<CheckBox Grid.Row="1" Margin="5"
Content="{x:Static properties:Resources.AutoOpenSounds}"
IsChecked="{Binding Source={x:Static properties:Settings.Default}, Path=AutoOpenSounds, Mode=TwoWay}"/>
<CheckBox Grid.Row="2" Margin="5"
<CheckBox Grid.Row="2" Margin="5" Content="{x:Static properties:Resources.UseFEnglish}"
IsChecked="{Binding Source={x:Static properties:Settings.Default}, Path=UseEnglish, Mode=TwoWay}"/>
<CheckBox Grid.Row="3" Margin="5"
Content="{x:Static properties:Resources.UseDiscordRpc}"
IsChecked="{Binding Source={x:Static properties:Settings.Default}, Path=UseDiscordRpc, Mode=TwoWay}"/>
</Grid>

View File

@@ -20,6 +20,7 @@ namespace FModel.Windows.Settings
private string _inputPath;
private string _outputPath;
private bool _useDiscordRpc;
private bool _useEnglish;
public General()
{
@@ -36,6 +37,7 @@ namespace FModel.Windows.Settings
_inputPath = Properties.Settings.Default.PakPath;
_outputPath = Properties.Settings.Default.OutputPath;
_useDiscordRpc = Properties.Settings.Default.UseDiscordRpc;
_useEnglish = Properties.Settings.Default.UseEnglish;
Languages_CbBox.ItemsSource = ComboBoxVm.languageCbViewModel;
Languages_CbBox.SelectedItem = ComboBoxVm.languageCbViewModel.Where(x => x.Id == Properties.Settings.Default.AssetsLanguage).FirstOrDefault();
}
@@ -51,8 +53,10 @@ namespace FModel.Windows.Settings
await Localizations.SetLocalization(Properties.Settings.Default.AssetsLanguage, true).ConfigureAwait(false);
}
bool restart = !_inputPath.Equals(Properties.Settings.Default.PakPath) || !_outputPath.Equals(Properties.Settings.Default.OutputPath);
if (restart)
if (!_inputPath.Equals(Properties.Settings.Default.PakPath) ||
!_outputPath.Equals(Properties.Settings.Default.OutputPath) ||
_useEnglish != Properties.Settings.Default.UseEnglish)
{
DarkMessageBoxHelper.Show(Properties.Resources.PathChangedRestart, Properties.Resources.PathChanged, MessageBoxButton.OK, MessageBoxImage.Information);
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Restarting]", "Path(s) changed");