diff --git a/.gitignore b/.gitignore
index 6463666..f9a2ae7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -367,3 +367,4 @@ FodyWeavers.xsd
# IntelliJ
.idea/
/CompactGUI.WatcherCS
+/.history
diff --git a/CompactGUI/Application.xaml.vb b/CompactGUI/Application.xaml.vb
index 9c46d71..07ca15f 100644
--- a/CompactGUI/Application.xaml.vb
+++ b/CompactGUI/Application.xaml.vb
@@ -1,4 +1,4 @@
-Imports System.IO
+Imports System.IO
Imports System.IO.Pipes
Imports System.Threading
Imports System.Windows.Threading
@@ -31,7 +31,11 @@ Partial Public Class Application
End Sub
+ Private Sub Application_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
+ ' Call the language configuration at startup
+ LanguageHelper.Initialize()
+ End Sub
Private Shared Sub InitializeHost()
_host = Host.CreateDefaultBuilder() _
diff --git a/CompactGUI/CompactGUI.vbproj b/CompactGUI/CompactGUI.vbproj
index babeb9f..038ce5a 100644
--- a/CompactGUI/CompactGUI.vbproj
+++ b/CompactGUI/CompactGUI.vbproj
@@ -29,7 +29,6 @@
none
-
@@ -46,6 +45,7 @@
+
@@ -71,6 +71,22 @@
+
+
+ True
+ True
+ i18n.resx
+
+
+
+
+
+ i18n
+ PublicResXFileCodeGenerator
+ i18n.Designer.vb
+
+
+
diff --git a/CompactGUI/Components/Converters/IValueConverters.vb b/CompactGUI/Components/Converters/IValueConverters.vb
index eef23bb..ea7683a 100644
--- a/CompactGUI/Components/Converters/IValueConverters.vb
+++ b/CompactGUI/Components/Converters/IValueConverters.vb
@@ -1,4 +1,4 @@
-Imports System.Globalization
+Imports System.Globalization
Public Class DecimalToPercentageConverter : Implements IValueConverter
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert
@@ -88,20 +88,21 @@ End Class
Public Class RelativeDateConverter : Implements IValueConverter
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert
+
Dim dt = CType(value, DateTime)
Dim ts As TimeSpan = DateTime.Now - dt
If ts > TimeSpan.FromDays(19000) Then
- Return String.Format("Unknown")
+ Return LanguageHelper.GetString("Time_Unknown")
End If
If ts > TimeSpan.FromDays(2) Then
- Return String.Format("{0:0} days ago", ts.TotalDays)
+ Return String.Format(LanguageHelper.GetString("Time_DaysAgo"), ts.TotalDays)
ElseIf ts > TimeSpan.FromHours(2) Then
- Return String.Format("{0:0} hours ago", ts.TotalHours)
+ Return String.Format(LanguageHelper.GetString("Time_HoursAgo"), ts.TotalHours)
ElseIf ts > TimeSpan.FromMinutes(2) Then
- Return String.Format("{0:0} minutes ago", ts.TotalMinutes)
+ Return String.Format(LanguageHelper.GetString("Time_MinutesAgo"), ts.TotalMinutes)
Else
- Return "just now"
+ Return LanguageHelper.GetString("Time_Now")
End If
End Function
@@ -290,15 +291,15 @@ Public Class FolderStatusToStringConverter : Implements IValueConverter
Dim status = CType(value, ActionState)
Select Case status
Case ActionState.Idle
- Return "Awaiting Compression"
+ Return LanguageHelper.GetString("Status_AwaitingCompression")
Case ActionState.Analysing
- Return "Analysing"
+ Return LanguageHelper.GetString("Status_Analysing")
Case ActionState.Working, ActionState.Paused
- Return "Working"
+ Return LanguageHelper.GetString("Status_Working")
Case ActionState.Results
- Return "Compressed"
+ Return LanguageHelper.GetString("Status_Compressed")
Case Else
- Return "Unknown"
+ Return LanguageHelper.GetString("Status_Unknown")
End Select
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack
diff --git a/CompactGUI/Components/Settings/Settings_skiplistflyout.xaml b/CompactGUI/Components/Settings/Settings_skiplistflyout.xaml
index 4049144..cca0717 100644
--- a/CompactGUI/Components/Settings/Settings_skiplistflyout.xaml
+++ b/CompactGUI/Components/Settings/Settings_skiplistflyout.xaml
@@ -1,4 +1,4 @@
-
-
diff --git a/CompactGUI/LanguageHelper.vb b/CompactGUI/LanguageHelper.vb
new file mode 100644
index 0000000..f373aba
--- /dev/null
+++ b/CompactGUI/LanguageHelper.vb
@@ -0,0 +1,139 @@
+Imports System.Globalization
+Imports System.Resources
+Imports System.Threading
+Imports System.Windows.Markup
+Imports System.Windows.Data
+Imports System.Reflection
+
+Public Class LanguageHelper
+ ' Supported language list
+ ' @i18n
+ Private Shared ReadOnly SupportedCultures As String() = {"en-US", "zh-CN"}
+ Private Shared resourceManager As ResourceManager = i18n.i18n.ResourceManager
+ Private Shared currentCulture As CultureInfo = Nothing
+
+ Public Shared Function GetText(key As String) As String
+ Return GetString(key)
+ End Function
+
+ Public Shared Sub Initialize()
+ Dim savedLanguage As String = ReadAppConfig("language")
+ If Not String.IsNullOrEmpty(savedLanguage) AndAlso SupportedCultures.Contains(savedLanguage) Then
+ ApplyCulture(savedLanguage)
+ Else
+ SetDefaultLanguage()
+ End If
+ End Sub
+
+ Public Shared Sub ChangeLanguage()
+ If currentCulture Is Nothing Then
+ currentCulture = Thread.CurrentThread.CurrentUICulture
+ End If
+ Dim currentLang As String = currentCulture.Name
+ Dim nextLang As String = GetNextLanguage(currentLang)
+
+ ApplyCulture(nextLang)
+ WriteAppConfig("language", nextLang)
+ End Sub
+
+ Public Shared Function GetString(key As String, ParamArray args As Object()) As String
+ Try
+ Dim cultureToUse = If(currentCulture, Thread.CurrentThread.CurrentUICulture)
+ Dim rawValue As String = resourceManager.GetString(key, cultureToUse)
+
+ If String.IsNullOrEmpty(rawValue) Then
+ Return key
+ ElseIf args IsNot Nothing AndAlso args.Length > 0 Then
+ Return String.Format(cultureToUse, rawValue, args)
+ Else
+ Return rawValue
+ End If
+ Catch ex As Exception
+ Debug.WriteLine($"Failed to get multilingual text:{key},Error:{ex.Message}")
+ Return key
+ End Try
+ End Function
+
+ Public Shared Sub ApplyCulture(cultureName As String)
+ Try
+ Dim culture As New CultureInfo(cultureName)
+ Thread.CurrentThread.CurrentUICulture = culture
+ Thread.CurrentThread.CurrentCulture = culture
+ currentCulture = culture
+
+ Catch ex As Exception
+ Debug.WriteLine($"Application language failure:{cultureName},Error:{ex.Message}")
+ SetDefaultLanguage()
+ End Try
+ End Sub
+
+ Private Shared Function GetNextLanguage(currentLanguage As String) As String
+ Dim currentTwoLetter = New CultureInfo(currentLanguage).TwoLetterISOLanguageName
+ For i As Integer = 0 To SupportedCultures.Length - 1
+ Dim langTwoLetter = New CultureInfo(SupportedCultures(i)).TwoLetterISOLanguageName
+ If langTwoLetter = currentTwoLetter Then
+ Return SupportedCultures((i + 1) Mod SupportedCultures.Length)
+ End If
+ Next
+ Return SupportedCultures(0)
+ End Function
+
+ Private Shared Sub SetDefaultLanguage()
+ ' Set the default language according to the system language.
+ '@i18n
+ Dim langMapping As New Dictionary(Of String, String) From {
+ {"en", "en-US"},
+ {"zh", "zh-CN"}
+ }
+
+ Dim systemLang As String = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName.ToLower()
+ Dim defaultLang As String = If(langMapping.ContainsKey(systemLang), langMapping(systemLang), "en-US")
+
+ ApplyCulture(defaultLang)
+ WriteAppConfig("language", defaultLang)
+ End Sub
+
+ Public Shared Function GetCurrentLanguage() As String
+ Return If(currentCulture, Thread.CurrentThread.CurrentUICulture).Name
+ End Function
+
+ Public Shared Function ReadAppConfig(key As String) As String
+ Try
+ Dim config = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None)
+ Return If(config.AppSettings.Settings(key)?.Value, String.Empty)
+ Catch ex As Exception
+ Debug.WriteLine($"Read configuration failed:{key},Error:{ex.Message}")
+ Return String.Empty
+ End Try
+ End Function
+
+ Public Shared Sub WriteAppConfig(key As String, value As String)
+ Try
+ Dim config = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None)
+ If config.AppSettings.Settings(key) IsNot Nothing Then
+ config.AppSettings.Settings(key).Value = value
+ Else
+ config.AppSettings.Settings.Add(key, value)
+ End If
+ config.Save(System.Configuration.ConfigurationSaveMode.Modified)
+ System.Configuration.ConfigurationManager.RefreshSection("appSettings")
+ Catch ex As Exception
+ Debug.WriteLine($"Write configuration failed:{key},Error:{ex.Message}")
+ End Try
+ End Sub
+End Class
+
+
+Public Class LocalizeExtension
+ Inherits MarkupExtension
+
+ Private _key As String
+
+ Public Sub New(key As String)
+ _key = key
+ End Sub
+
+ Public Overrides Function ProvideValue(serviceProvider As IServiceProvider) As Object
+ Return LanguageHelper.GetString(_key)
+ End Function
+End Class
\ No newline at end of file
diff --git a/CompactGUI/MainWindow.xaml b/CompactGUI/MainWindow.xaml
index 6f25c61..1487863 100644
--- a/CompactGUI/MainWindow.xaml
+++ b/CompactGUI/MainWindow.xaml
@@ -1,4 +1,4 @@
-
-
-
-
-
-
@@ -256,8 +259,8 @@
FocusOnLeftClick="True" MenuOnRightClick="True" TooltipText="CompactGUI">
-
-
+
+
diff --git a/CompactGUI/Models/CompressableFolders/CompressableFolder.vb b/CompactGUI/Models/CompressableFolders/CompressableFolder.vb
index da797f7..815050f 100644
--- a/CompactGUI/Models/CompressableFolders/CompressableFolder.vb
+++ b/CompactGUI/Models/CompressableFolders/CompressableFolder.vb
@@ -1,4 +1,4 @@
-Imports System.Collections.ObjectModel
+Imports System.Collections.ObjectModel
Imports System.IO
Imports System.Threading
@@ -10,7 +10,7 @@ Imports CompactGUI.Core.WOFHelper
Imports Microsoft.Extensions.Logging
-Imports PropertyChanged
+'Imports PropertyChanged
'Need this abstract class so we can use it in XAML
diff --git a/CompactGUI/Services/CompressableFolderService.vb b/CompactGUI/Services/CompressableFolderService.vb
index af01bcd..594c344 100644
--- a/CompactGUI/Services/CompressableFolderService.vb
+++ b/CompactGUI/Services/CompressableFolderService.vb
@@ -1,10 +1,10 @@
-Imports System.Collections.ObjectModel
+Imports System.Collections.ObjectModel
Imports System.Threading
Imports CompactGUI.Core
Imports CompactGUI.Core.Settings
-Imports Microsoft.CodeAnalysis.Diagnostics
+'Imports Microsoft.CodeAnalysis.Diagnostics
Imports Microsoft.Extensions.Logging
diff --git a/CompactGUI/Services/CustomSnackBarService.vb b/CompactGUI/Services/CustomSnackBarService.vb
index f448b15..66d663a 100644
--- a/CompactGUI/Services/CustomSnackBarService.vb
+++ b/CompactGUI/Services/CustomSnackBarService.vb
@@ -20,7 +20,7 @@ Public Class CustomSnackBarService
Public Sub ShowCustom(message As UIElement, title As String, appearance As ControlAppearance, Optional icon As IconElement = Nothing, Optional timeout As TimeSpan = Nothing)
- If GetSnackbarPresenter() Is Nothing Then Throw New InvalidOperationException("The SnackbarPresenter was never set")
+ If GetSnackbarPresenter() Is Nothing Then Throw New InvalidOperationException(LanguageHelper.GetString("SnackBar_SnackbarPresenter")) 'The SnackbarPresenter was never set
If _snackbar Is Nothing Then _snackbar = New Snackbar(GetSnackbarPresenter())
_snackbar.SetCurrentValue(Snackbar.TitleProperty, title)
@@ -52,20 +52,21 @@ Public Class CustomSnackBarService
Public Sub ShowInsufficientPermission(folderName As String)
Dim button = New Button With {
- .Content = "Restart as Admin",
+ .Content = LanguageHelper.GetString("SnackBar_RestartAdmin"), '"Restart as Admin"
.Command = New RelayCommand(Sub() RunAsAdmin(folderName)),
.Margin = New Thickness(-3, 10, 0, 0)
}
- ShowCustom(button, "Insufficient permission to access this folder.", ControlAppearance.Danger, timeout:=TimeSpan.FromSeconds(60))
+ ShowCustom(button, LanguageHelper.GetString("SnackBar_RestartAdminTip"), ControlAppearance.Danger, timeout:=TimeSpan.FromSeconds(60)) '"Insufficient permission to access this folder."
End Sub
Public Sub ShowUpdateAvailable(newVersion As String, isPreRelease As Boolean)
Dim textBlock = New TextBlock
- textBlock.Text = "Click to download"
+ textBlock.Text = LanguageHelper.GetString("SnackBar_UpdateDownload") '"Click to download"
' Show the custom snackbar
SnackbarServiceLog.ShowUpdateAvailable(logger, newVersion, isPreRelease)
- ShowCustom(textBlock, $"Update Available ▸ Version {newVersion}", If(isPreRelease, ControlAppearance.Info, ControlAppearance.Success), timeout:=TimeSpan.FromSeconds(10))
+ Dim title As String = String.Format(LanguageHelper.GetString("SnackBar_UpdateAvailable"), newVersion) 'Update Available ▸ Version {newVersion}
+ ShowCustom(textBlock, title, If(isPreRelease, ControlAppearance.Info, ControlAppearance.Success), timeout:=TimeSpan.FromSeconds(10))
Dim handler As MouseButtonEventHandler = Nothing
Dim closedHandler As TypedEventHandler(Of Snackbar, RoutedEventArgs) = Nothing
@@ -86,37 +87,49 @@ Public Class CustomSnackBarService
End Sub
Public Sub ShowFailedToSubmitToWiki()
- Show("Failed to submit to wiki", "Please check your internet connection and try again", Wpf.Ui.Controls.ControlAppearance.Danger, Nothing, TimeSpan.FromSeconds(5))
+ Show(LanguageHelper.GetString("SnackBar_SubmitWikiFailed"), LanguageHelper.GetString("SnackBar_SubmitWikiFailedTip"), Wpf.Ui.Controls.ControlAppearance.Danger, Nothing, TimeSpan.FromSeconds(5))
+ '"Failed to submit to wiki", "Please check your internet connection and try again"
SnackbarServiceLog.ShowFailedToSubmitToWiki(logger)
End Sub
Public Sub ShowSubmittedToWiki(steamsubmitdata As SteamSubmissionData, compressionMode As Integer)
- Show("Submitted to wiki", $"UID: {steamsubmitdata.UID}{vbCrLf}Game: {steamsubmitdata.GameName}{vbCrLf}SteamID: {steamsubmitdata.SteamID}{vbCrLf}Compression: {[Enum].GetName(GetType(Core.WOFCompressionAlgorithm), Core.WOFHelper.WOFConvertCompressionLevel(compressionMode))}", Wpf.Ui.Controls.ControlAppearance.Success, Nothing, TimeSpan.FromSeconds(10))
+ Dim compressionName As String = [Enum].GetName(GetType(Core.WOFCompressionAlgorithm), Core.WOFHelper.WOFConvertCompressionLevel(compressionMode))
+ Dim message As String = $"{LanguageHelper.GetString("SnackBar_SubmitWiki_UID")}: {steamsubmitdata.UID}{vbCrLf}" &
+ $"{LanguageHelper.GetString("SnackBar_SubmitWiki_Game")}: {steamsubmitdata.GameName}{vbCrLf}" &
+ $"{LanguageHelper.GetString("SnackBar_SubmitWiki_SteamID")}: {steamsubmitdata.SteamID}{vbCrLf}" &
+ $"{LanguageHelper.GetString("SnackBar_SubmitWiki_Compression")}: {compressionName}"
+ 'Show("Submitted to wiki", $"UID: {0}{1}Game: {2}{1}SteamID: {3}{1}Compression: {4}
+
+ Show(LanguageHelper.GetString("SnackBar_SubmitWikiTitle"), message, Wpf.Ui.Controls.ControlAppearance.Success, Nothing, TimeSpan.FromSeconds(10))
SnackbarServiceLog.ShowSubmittedToWiki(logger, steamsubmitdata.UID, steamsubmitdata.GameName, steamsubmitdata.SteamID, steamsubmitdata.CompressionMode)
End Sub
Public Sub ShowAppliedToAllFolders()
- Show("Applied to all folders", "Compression options have been applied to all folders", Wpf.Ui.Controls.ControlAppearance.Success, Nothing, TimeSpan.FromSeconds(5))
+ Show(LanguageHelper.GetString("SnackBar_AppliedAllFolders"), LanguageHelper.GetString("SnackBar_AppliedAllFoldersTip"), Wpf.Ui.Controls.ControlAppearance.Success, Nothing, TimeSpan.FromSeconds(5))
+ '"Applied to all folders", "Compression options have been applied to all folders"
SnackbarServiceLog.ShowAppliedToAllFolders(logger)
End Sub
Public Sub ShowCannotRemoveFolder()
- Show("Cannot remove folder", "Please wait until the current operation is finished", Wpf.Ui.Controls.ControlAppearance.Caution, Nothing, TimeSpan.FromSeconds(5))
+ Show(LanguageHelper.GetString("SnackBar_CannotRemoveFolder"), LanguageHelper.GetString("SnackBar_CannotRemoveFolderTip"), Wpf.Ui.Controls.ControlAppearance.Caution, Nothing, TimeSpan.FromSeconds(5))
+ '"Cannot remove folder", "Please wait until the current operation is finished"
SnackbarServiceLog.ShowCannotRemoveFolder(logger)
End Sub
Public Sub ShowAddedToQueue()
- Show("Success", "Added to Queue", Wpf.Ui.Controls.ControlAppearance.Success, Nothing, TimeSpan.FromSeconds(5))
+ Show(LanguageHelper.GetString("SnackBar_Success"), LanguageHelper.GetString("SnackBar_SuccessTip"), Wpf.Ui.Controls.ControlAppearance.Success, Nothing, TimeSpan.FromSeconds(5))
+ '"Success", "Added to Queue"
SnackbarServiceLog.ShowAddedToQueue(logger)
End Sub
Public Sub ShowDirectStorageWarning(displayName As String)
Show(displayName,
- "This game uses DirectStorage technology. If you are using this feature, you should not compress this game.",
+ LanguageHelper.GetString("SnackBar_DirectStorageTechnology"),
Wpf.Ui.Controls.ControlAppearance.Info,
Nothing,
TimeSpan.FromSeconds(20))
+ '"This game uses DirectStorage technology. If you are using this feature, you should not compress this game.",
SnackbarServiceLog.ShowDirectStorageWarning(logger, displayName)
End Sub
End Class
\ No newline at end of file
diff --git a/CompactGUI/Services/WindowService.vb b/CompactGUI/Services/WindowService.vb
index fab6e09..764aefe 100644
--- a/CompactGUI/Services/WindowService.vb
+++ b/CompactGUI/Services/WindowService.vb
@@ -33,8 +33,8 @@ Public Class WindowService
.Title = title,
.Content = content,
.IsPrimaryButtonEnabled = True,
- .PrimaryButtonText = "Yes",
- .CloseButtonText = "Cancel"
+ .PrimaryButtonText = LanguageHelper.GetString("UniYes"),
+ .CloseButtonText = LanguageHelper.GetString("UniCancel")
}
Dim result = Await msgBox.ShowDialogAsync()
Return result = Wpf.Ui.Controls.MessageBoxResult.Primary
diff --git a/CompactGUI/ViewModels/FolderViewModel.vb b/CompactGUI/ViewModels/FolderViewModel.vb
index 76bb4c3..a8d96cf 100644
--- a/CompactGUI/ViewModels/FolderViewModel.vb
+++ b/CompactGUI/ViewModels/FolderViewModel.vb
@@ -58,10 +58,10 @@ Public NotInheritable Class FolderViewModel : Inherits ObservableObject : Implem
Public ReadOnly Property CompressionDisplayLevel As String
Get
If Folder.AnalysisResults Is Nothing OrElse
- Not Folder.AnalysisResults.Any(Function(x) x.CompressionMode <> Core.WOFCompressionAlgorithm.NO_COMPRESSION) Then
- Return "Not Compressed"
+ Not Folder.AnalysisResults.Any(Function(x) x.CompressionMode <> Core.WOFCompressionAlgorithm.NO_COMPRESSION) Then
+ Return LanguageHelper.GetString("Status_NotCompressed") 'Not Compressed
End If
- Return "Compressed"
+ Return LanguageHelper.GetString("Status_Compressed") 'Compressed
End Get
End Property
diff --git a/CompactGUI/ViewModels/MainWindowViewModel.vb b/CompactGUI/ViewModels/MainWindowViewModel.vb
index 7cc23ad..ffcd00c 100644
--- a/CompactGUI/ViewModels/MainWindowViewModel.vb
+++ b/CompactGUI/ViewModels/MainWindowViewModel.vb
@@ -39,7 +39,8 @@ Partial Public Class MainWindowViewModel : Inherits ObservableRecipient : Implem
Private Async Function NotifyIconExit() As Task
If _watcher.WatchedFolders.Count = 0 Then Application.Current.Shutdown()
- Dim confirmed = Await _windowService.ShowMessageBox("CompactGUI", $"You currently have {_watcher.WatchedFolders.Count} folders being watched. Closing CompactGUI will stop them from being monitored.{Environment.NewLine}{Environment.NewLine}Are you sure you want to exit?")
+ Dim message As String = String.Format(LanguageHelper.GetString("MessageBox_ExitText"), _watcher.WatchedFolders.Count)
+ Dim confirmed = Await _windowService.ShowMessageBox(LanguageHelper.GetString("Title_CompactGUI"), message)
If Not confirmed Then Return
_watcher.WriteToFile()
Application.Current.Shutdown()
diff --git a/CompactGUI/Views/Components/CompressionMode_Radio.xaml b/CompactGUI/Views/Components/CompressionMode_Radio.xaml
index 9cbb4ea..85dfc35 100644
--- a/CompactGUI/Views/Components/CompressionMode_Radio.xaml
+++ b/CompactGUI/Views/Components/CompressionMode_Radio.xaml
@@ -1,4 +1,4 @@
-
+ FontSize="14" FontWeight="SemiBold">
@@ -41,7 +41,8 @@
-
diff --git a/CompactGUI/Views/Components/FolderWatcherCard.xaml b/CompactGUI/Views/Components/FolderWatcherCard.xaml
index 287c234..1efd4ed 100644
--- a/CompactGUI/Views/Components/FolderWatcherCard.xaml
+++ b/CompactGUI/Views/Components/FolderWatcherCard.xaml
@@ -1,4 +1,4 @@
-
-
-
+
-
@@ -70,16 +71,23 @@
FontSize="18" FontWeight="SemiBold"
Foreground="#40FFFFFF">
-
+
-
+
+
+
+
+
+
+
+
-
@@ -104,8 +112,8 @@
-
-
+
+
@@ -228,11 +236,11 @@
-
-
@@ -270,7 +280,7 @@
-
@@ -293,7 +303,7 @@
-
@@ -307,7 +317,7 @@
Glyph="" />
-
diff --git a/CompactGUI/Views/Components/FolderWatcherCard.xaml.vb b/CompactGUI/Views/Components/FolderWatcherCard.xaml.vb
index d0abc1f..bbebe73 100644
--- a/CompactGUI/Views/Components/FolderWatcherCard.xaml.vb
+++ b/CompactGUI/Views/Components/FolderWatcherCard.xaml.vb
@@ -1,4 +1,4 @@
-Imports System.Windows.Media.Animation
+Imports System.Windows.Media.Animation
Public Class FolderWatcherCard : Inherits UserControl
Private currentlyExpandedBorder As Border = Nothing
diff --git a/CompactGUI/Views/Pages/DatabasePage.xaml b/CompactGUI/Views/Pages/DatabasePage.xaml
index 6cb309d..c8f861e 100644
--- a/CompactGUI/Views/Pages/DatabasePage.xaml
+++ b/CompactGUI/Views/Pages/DatabasePage.xaml
@@ -1,4 +1,4 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-->
-
+
@@ -43,41 +48,42 @@
-
+
-
+
-
-
-
+
+
-
+
-
+
-
+
@@ -141,98 +147,98 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
diff --git a/CompactGUI/Views/Pages/FolderView.xaml b/CompactGUI/Views/Pages/FolderView.xaml
index 783bc61..3960489 100644
--- a/CompactGUI/Views/Pages/FolderView.xaml
+++ b/CompactGUI/Views/Pages/FolderView.xaml
@@ -1,4 +1,4 @@
-
-
+
-
+
diff --git a/CompactGUI/Views/Pages/HomePage.xaml b/CompactGUI/Views/Pages/HomePage.xaml
index ba83406..8539d03 100644
--- a/CompactGUI/Views/Pages/HomePage.xaml
+++ b/CompactGUI/Views/Pages/HomePage.xaml
@@ -1,4 +1,4 @@
-
-
-
+
@@ -61,10 +62,10 @@
Margin="0,-90,0,0" HorizontalAlignment="Center" VerticalAlignment="Center"
Visibility="{Binding HomeViewIsFresh, Converter={StaticResource BooleanToVisibilityConverter}, Mode=OneWay}">
-
+
@@ -174,7 +175,8 @@
Background="{StaticResource CardBackgroundFillColorSecondaryBrush}">
-
diff --git a/CompactGUI/Views/Pages/PendingCompression.xaml b/CompactGUI/Views/Pages/PendingCompression.xaml
index 8c82aa8..6122a9d 100644
--- a/CompactGUI/Views/Pages/PendingCompression.xaml
+++ b/CompactGUI/Views/Pages/PendingCompression.xaml
@@ -1,4 +1,4 @@
-
-
@@ -30,7 +31,8 @@
-->
-
@@ -110,36 +115,33 @@
FontSize="14" Foreground="#FF98A9B9">
- Skip file types likely to compress poorly
+
-
-
-
- For Steam Games:
- skips files based on database results
-
- For Non-Steam Folders:
- skips files based on compression estimate
-
-
+ Cursor="Hand" Foreground="#FF98A9B9" TextDecorations="Underline">
+
+
+
+
+
@@ -148,19 +150,22 @@
FontSize="14" Foreground="#FF98A9B9">
-
@@ -168,7 +173,8 @@
-
-
@@ -43,7 +44,7 @@
-
@@ -54,7 +55,7 @@
-
@@ -70,7 +71,7 @@
Margin="0,0,20,20" Padding="10,20,10,20"
Background="#30FFFFFF" BorderThickness="0">
-
-
-
-
-
-
+ Title="{local:Localize PageNameWatcher}"
+ d:Title="WatcherPage">
diff --git a/CompactGUI/Views/SettingsPage.xaml b/CompactGUI/Views/SettingsPage.xaml
index cf52af3..2599257 100644
--- a/CompactGUI/Views/SettingsPage.xaml
+++ b/CompactGUI/Views/SettingsPage.xaml
@@ -1,4 +1,4 @@
-
-
@@ -95,7 +96,8 @@
FlowDirection="RightToLeft" IsExpanded="True"
Style="{StaticResource CustomCardExpanderStyle}">
-
@@ -114,28 +116,29 @@
-
+
-
-
@@ -145,15 +148,15 @@
Grid.Row="2" Grid.Column="1"
Foreground="#98A9B9" IsEnabled="False" SelectedIndex="0">
-
-
-
@@ -171,7 +174,8 @@
FlowDirection="RightToLeft" IsExpanded="True"
Style="{StaticResource CustomCardExpanderStyle}">
-
@@ -180,19 +184,23 @@
@@ -210,7 +218,8 @@
FlowDirection="RightToLeft" IsExpanded="True"
Style="{StaticResource CustomCardExpanderStyle}">
-
@@ -234,7 +243,7 @@
-
+
@@ -251,13 +260,15 @@
@@ -282,7 +293,8 @@
FlowDirection="RightToLeft" IsExpanded="True"
Style="{StaticResource CustomCardExpanderStyle}">
-
@@ -292,7 +304,8 @@
@@ -306,32 +319,32 @@
-
+
-
-
-
-
+
+
+
+
-
-
-
-
+
-
-
@@ -388,7 +401,8 @@
FlowDirection="RightToLeft" IsExpanded="True"
Style="{StaticResource CustomCardExpanderStyle}">
-
@@ -398,7 +412,8 @@
@@ -414,7 +429,8 @@
FlowDirection="RightToLeft" IsExpanded="True"
Style="{StaticResource CustomCardExpanderStyle}">
-
@@ -422,12 +438,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ Content="{local:Localize SetUi_CompressionDetails}"
+ d:Content="Always show details on Compression Mode buttons"
+ Margin="0,-3"
+ IsChecked="{Binding AppSettings.AlwaysShowDetailedCompressionMode}" />
diff --git a/CompactGUI/Views/SettingsPage.xaml.vb b/CompactGUI/Views/SettingsPage.xaml.vb
index 6524a37..6dfb903 100644
--- a/CompactGUI/Views/SettingsPage.xaml.vb
+++ b/CompactGUI/Views/SettingsPage.xaml.vb
@@ -1,5 +1,6 @@
-Public Class SettingsPage
+Imports System.Windows.Data
+Partial Public Class SettingsPage
Sub New(settingsviewmodel As SettingsViewModel)
InitializeComponent()
@@ -13,6 +14,51 @@
End Sub
+ Public Property LanguageChangedLabelContent As String
+ Get
+ Return CType(GetValue(LanguageChangedLabelContentProperty), String)
+ End Get
+ Set(value As String)
+ SetValue(LanguageChangedLabelContentProperty, value)
+ End Set
+ End Property
+ Public Shared ReadOnly LanguageChangedLabelContentProperty As DependencyProperty =
+ DependencyProperty.Register("SetUi_LanguageChanged", GetType(String), GetType(SettingsPage),
+ New PropertyMetadata("Language (Requires Restart)"))
-End Class
+ Private Sub SettingsPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
+ ' Set the currently selected language
+ Dim currentLanguage As String = LanguageHelper.GetCurrentLanguage()
+
+ For i As Integer = 0 To UiLanguageComboBox.Items.Count - 1
+ Dim item As ComboBoxItem = CType(UiLanguageComboBox.Items(i), ComboBoxItem)
+ If CStr(item.Tag) = currentLanguage Then
+ UiLanguageComboBox.SelectedIndex = i
+ Exit For
+ End If
+ Next
+ End Sub
+
+ Private Sub UpdateLocalizedText()
+ ' Update language tag content
+ LanguageChangedLabelContent = LanguageHelper.GetString("SetUi_LanguageChanged")
+
+ End Sub
+
+ Private Sub UiLanguageComboBox_SelectionChanged(sender As Object, e As SelectionChangedEventArgs)
+ Dim comboBox As ComboBox = CType(sender, ComboBox)
+ If comboBox.IsDropDownOpen AndAlso UiLanguageComboBox.SelectedItem IsNot Nothing Then
+ Dim selectedLanguage As ComboBoxItem = CType(UiLanguageComboBox.SelectedItem, ComboBoxItem)
+ Dim languageCode As String = CStr(selectedLanguage.Tag)
+
+ LanguageHelper.ApplyCulture(languageCode)
+ LanguageHelper.WriteAppConfig("language", languageCode)
+ UpdateLocalizedText()
+
+ MessageBox.Show(LanguageHelper.GetString("SetUi_LanguageChangedMsg"),
+ LanguageHelper.GetString("SetUi_LanguageChangedTitle"),
+ MessageBoxButton.OK, MessageBoxImage.Information)
+ End If
+ End Sub
+End Class
\ No newline at end of file
diff --git a/CompactGUI/i18n/i18n.Designer.vb b/CompactGUI/i18n/i18n.Designer.vb
new file mode 100644
index 0000000..9df116b
--- /dev/null
+++ b/CompactGUI/i18n/i18n.Designer.vb
@@ -0,0 +1,1308 @@
+'------------------------------------------------------------------------------
+'
+' 此代码由工具生成。
+' 运行时版本:4.0.30319.42000
+'
+' 对此文件的更改可能会导致不正确的行为,并且如果
+' 重新生成代码,这些更改将会丢失。
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+Imports System
+
+Namespace i18n
+
+ '此类是由 StronglyTypedResourceBuilder
+ '类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+ '若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+ '(以 /str 作为命令选项),或重新生成 VS 项目。
+ '''
+ ''' 一个强类型的资源类,用于查找本地化的字符串等。
+ '''
+ _
+ Public Class i18n
+
+ Private Shared resourceMan As Global.System.Resources.ResourceManager
+
+ Private Shared resourceCulture As Global.System.Globalization.CultureInfo
+
+ _
+ Friend Sub New()
+ MyBase.New
+ End Sub
+
+ '''
+ ''' 返回此类使用的缓存的 ResourceManager 实例。
+ '''
+ _
+ Public Shared ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
+ Get
+ If Object.ReferenceEquals(resourceMan, Nothing) Then
+ Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("CompactGUI.i18n", GetType(i18n).Assembly)
+ resourceMan = temp
+ End If
+ Return resourceMan
+ End Get
+ End Property
+
+ '''
+ ''' 重写当前线程的 CurrentUICulture 属性,对
+ ''' 使用此强类型资源类的所有资源查找执行重写。
+ '''
+ _
+ Public Shared Property Culture() As Global.System.Globalization.CultureInfo
+ Get
+ Return resourceCulture
+ End Get
+ Set
+ resourceCulture = value
+ End Set
+ End Property
+
+ '''
+ ''' 查找类似 Settings 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property _Set() As String
+ Get
+ Return ResourceManager.GetString("Set", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Configuration 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionConfiguration() As String
+ Get
+ Return ResourceManager.GetString("CompressionConfiguration", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Apply to all 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionConfiguration_ApplyAll() As String
+ Get
+ Return ResourceManager.GetString("CompressionConfiguration_ApplyAll", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 files will be skipped 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionConfiguration_SkipFile() As String
+ Get
+ Return ResourceManager.GetString("CompressionConfiguration_SkipFile", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Skip file types specified in settings 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionConfiguration_SkipFileTypes() As String
+ Get
+ Return ResourceManager.GetString("CompressionConfiguration_SkipFileTypes", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Skip file types likely to compress poorly 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionConfiguration_SkipFileTypesLikelyPoorly() As String
+ Get
+ Return ResourceManager.GetString("CompressionConfiguration_SkipFileTypesLikelyPoorly", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 For Steam Games:
+ '''skips files based on database results
+ '''
+ '''For Non-Steam Folders:
+ '''skips files based on compression estimate 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionConfiguration_SkipFileTypesLikelyPoorlyTip() As String
+ Get
+ Return ResourceManager.GetString("CompressionConfiguration_SkipFileTypesLikelyPoorlyTip", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Watch folder for changes 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionConfiguration_WatchFolderChanges() As String
+ Get
+ Return ResourceManager.GetString("CompressionConfiguration_WatchFolderChanges", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Database Results 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionDB_DatabaseResults() As String
+ Get
+ Return ResourceManager.GetString("CompressionDB_DatabaseResults", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Games 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionDB_DatabaseResults_Games() As String
+ Get
+ Return ResourceManager.GetString("CompressionDB_DatabaseResults_Games", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Search by game name or SteamID... 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionDB_DatabaseResults_SearchSteamID() As String
+ Get
+ Return ResourceManager.GetString("CompressionDB_DatabaseResults_SearchSteamID", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Sort By 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionDB_DatabaseResults_Sort() As String
+ Get
+ Return ResourceManager.GetString("CompressionDB_DatabaseResults_Sort", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Ascending 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionDB_DatabaseResults_SortAscending() As String
+ Get
+ Return ResourceManager.GetString("CompressionDB_DatabaseResults_SortAscending", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Descending 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionDB_DatabaseResults_SortDescending() As String
+ Get
+ Return ResourceManager.GetString("CompressionDB_DatabaseResults_SortDescending", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Game Name 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionDB_DatabaseResults_SortGameName() As String
+ Get
+ Return ResourceManager.GetString("CompressionDB_DatabaseResults_SortGameName", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Max Savings 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionDB_DatabaseResults_SortMaxSavings() As String
+ Get
+ Return ResourceManager.GetString("CompressionDB_DatabaseResults_SortMaxSavings", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 SteamID 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionDB_DatabaseResults_SortSteamID() As String
+ Get
+ Return ResourceManager.GetString("CompressionDB_DatabaseResults_SortSteamID", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Compression Mode 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionMode() As String
+ Get
+ Return ResourceManager.GetString("CompressionMode", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 LZX 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionMode_LZX() As String
+ Get
+ Return ResourceManager.GetString("CompressionMode_LZX", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 XPRESS 16K 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionMode_XPRESS16K() As String
+ Get
+ Return ResourceManager.GetString("CompressionMode_XPRESS16K", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 XPRESS 4K 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionMode_XPRESS4K() As String
+ Get
+ Return ResourceManager.GetString("CompressionMode_XPRESS4K", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 XPRESS 8K 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionMode_XPRESS8K() As String
+ Get
+ Return ResourceManager.GetString("CompressionMode_XPRESS8K", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Estimated size 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionModeRadio_EstimatedSize() As String
+ Get
+ Return ResourceManager.GetString("CompressionModeRadio_EstimatedSize", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Savings 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionModeRadio_Savings() As String
+ Get
+ Return ResourceManager.GetString("CompressionModeRadio_Savings", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 TOTAL RESULTS 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionModeRadio_TotalResults() As String
+ Get
+ Return ResourceManager.GetString("CompressionModeRadio_TotalResults", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 unknown 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property CompressionModeRadio_Unknown() As String
+ Get
+ Return ResourceManager.GetString("CompressionModeRadio_Unknown", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Add Folder to Queue 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Home_AddFolder() As String
+ Get
+ Return ResourceManager.GetString("Home_AddFolder", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Compress Again 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Home_CompressAgain() As String
+ Get
+ Return ResourceManager.GetString("Home_CompressAgain", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Compress Selected 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Home_CompressSelected() As String
+ Get
+ Return ResourceManager.GetString("Home_CompressSelected", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 select a folder 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Home_SelectFolder() As String
+ Get
+ Return ResourceManager.GetString("Home_SelectFolder", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Submit Results 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Home_SubmitResults() As String
+ Get
+ Return ResourceManager.GetString("Home_SubmitResults", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Uncompress 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Home_Uncompress() As String
+ Get
+ Return ResourceManager.GetString("Home_Uncompress", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Welcome 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Message_Welcome() As String
+ Get
+ Return ResourceManager.GetString("Message_Welcome", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 You currently have {0} folders being watched. Closing CompactGUI will stop them from being monitored.
+ '''
+ '''Are you sure you want to exit? 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property MessageBox_ExitText() As String
+ Get
+ Return ResourceManager.GetString("MessageBox_ExitText", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 WatcherPage 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property PageNameWatcher() As String
+ Get
+ Return ResourceManager.GetString("PageNameWatcher", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Background Watcher Settings 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetBackgroundWatch() As String
+ Get
+ Return ResourceManager.GetString("SetBackgroundWatch", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Compress folders: 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetBackgroundWatch_CompressFolders() As String
+ Get
+ Return ResourceManager.GetString("SetBackgroundWatch_CompressFolders", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 When System is Idle 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetBackgroundWatch_CompressFolders_Idle() As String
+ Get
+ Return ResourceManager.GetString("SetBackgroundWatch_CompressFolders_Idle", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Last ran: {0:dd MMM yyyy \a\t HH:mm:ss} 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetBackgroundWatch_CompressFolders_LastRanFormat() As String
+ Get
+ Return ResourceManager.GetString("SetBackgroundWatch_CompressFolders_LastRanFormat", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Never 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetBackgroundWatch_CompressFolders_Never() As String
+ Get
+ Return ResourceManager.GetString("SetBackgroundWatch_CompressFolders_Never", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Next scheduled: {0:dd MMM yyyy \a\t HH:mm:ss} 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetBackgroundWatch_CompressFolders_NextScheduledFormat() As String
+ Get
+ Return ResourceManager.GetString("SetBackgroundWatch_CompressFolders_NextScheduledFormat", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 On Schedule 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetBackgroundWatch_CompressFolders_OnSchedule() As String
+ Get
+ Return ResourceManager.GetString("SetBackgroundWatch_CompressFolders_OnSchedule", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 On Schedule if system is also idle 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetBackgroundWatch_CompressFolders_OnScheduleIdle() As String
+ Get
+ Return ResourceManager.GetString("SetBackgroundWatch_CompressFolders_OnScheduleIdle", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Monitor compressed folders for changes 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetBackgroundWatch_FoldersChanges() As String
+ Get
+ Return ResourceManager.GetString("SetBackgroundWatch_FoldersChanges", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 at 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetBackgroundWatch_Time_At() As String
+ Get
+ Return ResourceManager.GetString("SetBackgroundWatch_Time_At", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 day(s) 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetBackgroundWatch_Time_Day() As String
+ Get
+ Return ResourceManager.GetString("SetBackgroundWatch_Time_Day", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 every 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetBackgroundWatch_Time_Every() As String
+ Get
+ Return ResourceManager.GetString("SetBackgroundWatch_Time_Every", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Compression Settings 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetCompression() As String
+ Get
+ Return ResourceManager.GetString("SetCompression", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 HDDs only use 1 thread 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetCompression_HDDThread() As String
+ Get
+ Return ResourceManager.GetString("SetCompression_HDDThread", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Maximum Compression Threads 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetCompression_MaxThreads() As String
+ Get
+ Return ResourceManager.GetString("SetCompression_MaxThreads", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Estimate Compression for non-Steam Folders (beta) 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetCompression_NonSteamFolders() As String
+ Get
+ Return ResourceManager.GetString("SetCompression_NonSteamFolders", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Filetype Management 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetFiletypeManagement() As String
+ Get
+ Return ResourceManager.GetString("SetFiletypeManagement", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Manage local skipped filetypes 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetFiletypeManagement_LocalSkipFiletypes() As String
+ Get
+ Return ResourceManager.GetString("SetFiletypeManagement_LocalSkipFiletypes", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 edit skipped filetypes 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetFiletypeManagement_LocalSkipFiletypesEdit() As String
+ Get
+ Return ResourceManager.GetString("SetFiletypeManagement_LocalSkipFiletypesEdit", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Agression of online skiplist 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetFiletypeManagement_OnlineSkiplistAgression() As String
+ Get
+ Return ResourceManager.GetString("SetFiletypeManagement_OnlineSkiplistAgression", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 high 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetFiletypeManagement_OnlineSkiplistAgressionHigh() As String
+ Get
+ Return ResourceManager.GetString("SetFiletypeManagement_OnlineSkiplistAgressionHigh", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 low 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetFiletypeManagement_OnlineSkiplistAgressionLow() As String
+ Get
+ Return ResourceManager.GetString("SetFiletypeManagement_OnlineSkiplistAgressionLow", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 medium 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetFiletypeManagement_OnlineSkiplistAgressionMedium() As String
+ Get
+ Return ResourceManager.GetString("SetFiletypeManagement_OnlineSkiplistAgressionMedium", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 For Steam games only.
+ '''When choosing to skip user-submitted filetypes, this setting determines how many submissions are required for each filetype to consider skipping it.
+ ''''low' is generally best, as higher options run the risk of skipping files that would otherwise compress well. 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetFiletypeManagement_OnlineSkiplistAgressionTip() As String
+ Get
+ Return ResourceManager.GetString("SetFiletypeManagement_OnlineSkiplistAgressionTip", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 System Integration 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetSystemIntegration() As String
+ Get
+ Return ResourceManager.GetString("SetSystemIntegration", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Show notification on completion 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetSystemIntegration_CompletionNotification() As String
+ Get
+ Return ResourceManager.GetString("SetSystemIntegration_CompletionNotification", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Add to right-click context menu 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetSystemIntegration_RightClickMenu() As String
+ Get
+ Return ResourceManager.GetString("SetSystemIntegration_RightClickMenu", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Add to start menu 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetSystemIntegration_StartMenu() As String
+ Get
+ Return ResourceManager.GetString("SetSystemIntegration_StartMenu", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Start CompactGUI in system tray 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetSystemIntegration_Startup() As String
+ Get
+ Return ResourceManager.GetString("SetSystemIntegration_Startup", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 UI Settings 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetUi() As String
+ Get
+ Return ResourceManager.GetString("SetUi", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Always show details on Compression Mode buttons 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetUi_CompressionDetails() As String
+ Get
+ Return ResourceManager.GetString("SetUi_CompressionDetails", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Language (Requires Restart) 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetUi_LanguageChanged() As String
+ Get
+ Return ResourceManager.GetString("SetUi_LanguageChanged", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Language changed successfully. You may need to restart the application for all changes to take effect. 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetUi_LanguageChangedMsg() As String
+ Get
+ Return ResourceManager.GetString("SetUi_LanguageChangedMsg", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Language Changed 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetUi_LanguageChangedTitle() As String
+ Get
+ Return ResourceManager.GetString("SetUi_LanguageChangedTitle", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Update Settings 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetUpdate() As String
+ Get
+ Return ResourceManager.GetString("SetUpdate", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Check for pre-release updates 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SetUpdate_CheckPreUpdates() As String
+ Get
+ Return ResourceManager.GetString("SetUpdate_CheckPreUpdates", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Applied to all folders 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_AppliedAllFolders() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_AppliedAllFolders", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Compression options have been applied to all folders 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_AppliedAllFoldersTip() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_AppliedAllFoldersTip", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Cannot remove folder 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_CannotRemoveFolder() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_CannotRemoveFolder", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Please wait until the current operation is finished 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_CannotRemoveFolderTip() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_CannotRemoveFolderTip", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 This game uses DirectStorage technology. If you are using this feature, you should not compress this game. 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_DirectStorageTechnology() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_DirectStorageTechnology", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Restart as Admin 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_RestartAdmin() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_RestartAdmin", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Insufficient permission to access this folder 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_RestartAdminTip() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_RestartAdminTip", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 The SnackbarPresenter was never set 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_SnackbarPresenter() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_SnackbarPresenter", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Compression 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_SubmitWiki_Compression() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_SubmitWiki_Compression", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Game 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_SubmitWiki_Game() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_SubmitWiki_Game", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 SteamID 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_SubmitWiki_SteamID() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_SubmitWiki_SteamID", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 UID 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_SubmitWiki_UID() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_SubmitWiki_UID", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Failed to submit to wiki 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_SubmitWikiFailed() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_SubmitWikiFailed", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Please check your internet connection and try again 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_SubmitWikiFailedTip() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_SubmitWikiFailedTip", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Submitted to wiki 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_SubmitWikiTitle() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_SubmitWikiTitle", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Success 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_Success() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_Success", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Added to Queue 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_SuccessTip() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_SuccessTip", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Update Available ▸ Version {0} 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_UpdateAvailable() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_UpdateAvailable", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Click to download 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property SnackBar_UpdateDownload() As String
+ Get
+ Return ResourceManager.GetString("SnackBar_UpdateDownload", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 After 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_After() As String
+ Get
+ Return ResourceManager.GetString("Status_After", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Analysing 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_Analysing() As String
+ Get
+ Return ResourceManager.GetString("Status_Analysing", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Awaiting Compression 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_AwaitingCompression() As String
+ Get
+ Return ResourceManager.GetString("Status_AwaitingCompression", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Before 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_Before() As String
+ Get
+ Return ResourceManager.GetString("Status_Before", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Compressed 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_Compressed() As String
+ Get
+ Return ResourceManager.GetString("Status_Compressed", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Compression Mode 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_CompressionMode() As String
+ Get
+ Return ResourceManager.GetString("Status_CompressionMode", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Compression Summary 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_CompressionSummary() As String
+ Get
+ Return ResourceManager.GetString("Status_CompressionSummary", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 contained files 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_ContainedFiles() As String
+ Get
+ Return ResourceManager.GetString("Status_ContainedFiles", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Files Compressed 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_FilesCompressed() As String
+ Get
+ Return ResourceManager.GetString("Status_FilesCompressed", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Last Fetched: {0:dd MMM yyyy HH:mm:ss} 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_LastFetched() As String
+ Get
+ Return ResourceManager.GetString("Status_LastFetched", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Not Compressed 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_NotCompressed() As String
+ Get
+ Return ResourceManager.GetString("Status_NotCompressed", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Results State 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_ResultsState() As String
+ Get
+ Return ResourceManager.GetString("Status_ResultsState", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Space Saved 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_SpaceSaved() As String
+ Get
+ Return ResourceManager.GetString("Status_SpaceSaved", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 uncompressed size 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_UncompressedSize() As String
+ Get
+ Return ResourceManager.GetString("Status_UncompressedSize", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Unknown 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_Unknown() As String
+ Get
+ Return ResourceManager.GetString("Status_Unknown", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Working 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Status_Working() As String
+ Get
+ Return ResourceManager.GetString("Status_Working", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 {0:0} days ago 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Time_DaysAgo() As String
+ Get
+ Return ResourceManager.GetString("Time_DaysAgo", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 {0:0} hours ago 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Time_HoursAgo() As String
+ Get
+ Return ResourceManager.GetString("Time_HoursAgo", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 {0:0} minutes ago 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Time_MinutesAgo() As String
+ Get
+ Return ResourceManager.GetString("Time_MinutesAgo", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 just now 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Time_Now() As String
+ Get
+ Return ResourceManager.GetString("Time_Now", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Unknown 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Time_Unknown() As String
+ Get
+ Return ResourceManager.GetString("Time_Unknown", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 CompactGUI 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Title_CompactGUI() As String
+ Get
+ Return ResourceManager.GetString("Title_CompactGUI", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Compression DB 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Title_CompressionDB() As String
+ Get
+ Return ResourceManager.GetString("Title_CompressionDB", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Home 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Title_Home() As String
+ Get
+ Return ResourceManager.GetString("Title_Home", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Watcher 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Title_Watcher() As String
+ Get
+ Return ResourceManager.GetString("Title_Watcher", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Add 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property UniAdd() As String
+ Get
+ Return ResourceManager.GetString("UniAdd", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Admin 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property UniAdmin() As String
+ Get
+ Return ResourceManager.GetString("UniAdmin", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Cancel 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property UniCancel() As String
+ Get
+ Return ResourceManager.GetString("UniCancel", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 edit 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property UniEdit() As String
+ Get
+ Return ResourceManager.GetString("UniEdit", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Exit 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property UniExit() As String
+ Get
+ Return ResourceManager.GetString("UniExit", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Open 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property UniOpen() As String
+ Get
+ Return ResourceManager.GetString("UniOpen", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Reset 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property UniReset() As String
+ Get
+ Return ResourceManager.GetString("UniReset", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Save 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property UniSave() As String
+ Get
+ Return ResourceManager.GetString("UniSave", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Yes 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property UniYes() As String
+ Get
+ Return ResourceManager.GetString("UniYes", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Add to compression queue 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_AddQueue() As String
+ Get
+ Return ResourceManager.GetString("Watcher_AddQueue", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Add a custom folder to the watchlist 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_AddTip() As String
+ Get
+ Return ResourceManager.GetString("Watcher_AddTip", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Cancel Background Compressor 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_CancelBackgroundCompressor() As String
+ Get
+ Return ResourceManager.GetString("Watcher_CancelBackgroundCompressor", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Compress All Now 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_CompressAllNow() As String
+ Get
+ Return ResourceManager.GetString("Watcher_CompressAllNow", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Last analysed 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_LastAnalysed() As String
+ Get
+ Return ResourceManager.GetString("Watcher_LastAnalysed", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 last compressed: 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_LastCompressed() As String
+ Get
+ Return ResourceManager.GetString("Watcher_LastCompressed", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 last modified: 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_LastModified() As String
+ Get
+ Return ResourceManager.GetString("Watcher_LastModified", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Re-analyse all watched folders 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_ReAnalyse() As String
+ Get
+ Return ResourceManager.GetString("Watcher_ReAnalyse", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Re-analyse this folder 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_ReAnalyseFolder() As String
+ Get
+ Return ResourceManager.GetString("Watcher_ReAnalyseFolder", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Remove from Watchlist 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_RemoveWatchlist() As String
+ Get
+ Return ResourceManager.GetString("Watcher_RemoveWatchlist", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 decayed 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_WatchedDecayed() As String
+ Get
+ Return ResourceManager.GetString("Watcher_WatchedDecayed", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 Watched Folders 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_WatchedFolders() As String
+ Get
+ Return ResourceManager.GetString("Watcher_WatchedFolders", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' 查找类似 saved 的本地化字符串。
+ '''
+ Public Shared ReadOnly Property Watcher_WatchedSaved() As String
+ Get
+ Return ResourceManager.GetString("Watcher_WatchedSaved", resourceCulture)
+ End Get
+ End Property
+ End Class
+End Namespace
diff --git a/CompactGUI/i18n/i18n.resx b/CompactGUI/i18n/i18n.resx
new file mode 100644
index 0000000..2a41297
--- /dev/null
+++ b/CompactGUI/i18n/i18n.resx
@@ -0,0 +1,547 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Welcome
+
+
+ Language (Requires Restart)
+
+
+ Language changed successfully. You may need to restart the application for all changes to take effect.
+
+
+ Language Changed
+
+
+ UI Settings
+
+
+ Always show details on Compression Mode buttons
+
+
+ Update Settings
+
+
+ Check for pre-release updates
+
+
+ Background Watcher Settings
+
+
+ Monitor compressed folders for changes
+
+
+ Compress folders:
+ @MutedRule(WhiteSpaceTail)
+
+
+ every
+
+
+ day(s)
+
+
+ at
+ @MutedRule(WhiteSpaceLead)@MutedRule(WhiteSpaceTail)
+
+
+ Compression Settings
+
+
+ Maximum Compression Threads
+
+
+ HDDs only use 1 thread
+
+
+ Estimate Compression for non-Steam Folders (beta)
+
+
+ System Integration
+
+
+ Add to right-click context menu
+
+
+ Add to start menu
+
+
+ Show notification on completion
+
+
+ Start CompactGUI in system tray
+
+
+ Filetype Management
+
+
+ Manage local skipped filetypes
+
+
+ edit
+
+
+ Agression of online skiplist
+
+
+ For Steam games only.
+When choosing to skip user-submitted filetypes, this setting determines how many submissions are required for each filetype to consider skipping it.
+'low' is generally best, as higher options run the risk of skipping files that would otherwise compress well.
+
+
+ low
+
+
+ medium
+
+
+ high
+
+
+ Settings
+
+
+ WatcherPage
+
+
+ Database Results
+
+
+ Search by game name or SteamID...
+
+
+ Sort By
+
+
+ Game Name
+
+
+ SteamID
+
+
+ Max Savings
+
+
+ Games
+
+
+ uncompressed size
+
+
+ contained files
+
+
+ Add Folder to Queue
+
+
+ Compress Selected
+
+
+ Working
+
+
+ Results State
+
+
+ Compression Mode
+
+
+ XPRESS 4K
+ @Invariant
+
+
+ XPRESS 8K
+ @Invariant
+
+
+ XPRESS 16K
+ @Invariant
+
+
+ LZX
+ @Invariant
+
+
+ Configuration
+
+
+ Skip file types specified in settings
+
+
+ Skip file types likely to compress poorly
+
+
+ For Steam Games:
+skips files based on database results
+
+For Non-Steam Folders:
+skips files based on compression estimate
+
+
+ Watch folder for changes
+
+
+ Apply to all
+
+
+ Estimated size
+
+
+ Savings
+
+
+ unknown
+
+
+ Watched Folders
+
+
+ saved
+
+
+ Cancel Background Compressor
+
+
+ Compress All Now
+
+
+ Last analysed
+
+
+ Unknown
+
+
+ {0:0} days ago
+
+
+ {0:0} hours ago
+
+
+ {0:0} minutes ago
+
+
+ just now
+
+
+ Compression Summary
+
+
+ Space Saved
+
+
+ Files Compressed
+
+
+ Compression Mode
+
+
+ Uncompress
+
+
+ Compress Again
+
+
+ Submit Results
+
+
+ Before
+
+
+ After
+
+
+ TOTAL RESULTS
+
+
+ Ascending
+
+
+ Descending
+
+
+ edit skipped filetypes
+
+
+ Save
+
+
+ Reset
+
+
+ Never
+
+
+ When System is Idle
+
+
+ On Schedule
+
+
+ On Schedule if system is also idle
+
+
+ Last ran: {0:dd MMM yyyy \a\t HH:mm:ss}
+
+
+ Next scheduled: {0:dd MMM yyyy \a\t HH:mm:ss}
+
+
+ CompactGUI
+
+
+ select a folder
+
+
+ Admin
+
+
+ Compression DB
+
+
+ Watcher
+
+
+ Home
+
+
+ Last Fetched: {0:dd MMM yyyy HH:mm:ss}
+
+
+ Re-analyse all watched folders
+
+
+ last modified:
+
+
+ last compressed:
+
+
+ Remove from Watchlist
+
+
+ Add to compression queue
+
+
+ Re-analyse this folder
+
+
+ decayed
+
+
+ Add
+
+
+ Add a custom folder to the watchlist
+
+
+ Awaiting Compression
+
+
+ Analysing
+
+
+ Compressed
+
+
+ Unknown
+
+
+ files will be skipped
+
+
+ The SnackbarPresenter was never set
+
+
+ Restart as Admin
+
+
+ Insufficient permission to access this folder
+
+
+ Click to download
+
+
+ Update Available ▸ Version {0}
+
+
+ Failed to submit to wiki
+
+
+ Please check your internet connection and try again
+
+
+ Applied to all folders
+
+
+ Compression options have been applied to all folders
+
+
+ Cannot remove folder
+
+
+ Please wait until the current operation is finished
+
+
+ Success
+
+
+ Added to Queue
+
+
+ This game uses DirectStorage technology. If you are using this feature, you should not compress this game.
+
+
+ Submitted to wiki
+
+
+ UID
+ @Invariant
+
+
+ Game
+
+
+ SteamID
+ @Invariant
+
+
+ Compression
+
+
+ Not Compressed
+
+
+ You currently have {0} folders being watched. Closing CompactGUI will stop them from being monitored.
+
+Are you sure you want to exit?
+
+
+ Open
+
+
+ Exit
+
+
+ Yes
+
+
+ Cancel
+
+
\ No newline at end of file
diff --git a/CompactGUI/i18n/i18n.zh-CN.resx b/CompactGUI/i18n/i18n.zh-CN.resx
new file mode 100644
index 0000000..9820d33
--- /dev/null
+++ b/CompactGUI/i18n/i18n.zh-CN.resx
@@ -0,0 +1,521 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ UI 设置
+
+
+ 始终显示压缩模式按钮的详细信息
+
+
+ 语言 (需要重启)
+
+
+ 语言更改
+
+
+ 语言更改成功。您可能需要重启应用程序以使所有更改生效。
+
+
+ 更新设置
+
+
+ 检查预发布更新
+
+
+ 后台监控设置
+
+
+ 监控已压缩文件夹的更改
+
+
+ 压缩文件夹:
+
+
+ 每
+
+
+ 天
+
+
+ 压缩设置
+
+
+ 最大压缩线程数
+
+
+ HDD 仅使用 1 个线程
+
+
+ 估算非 Steam 文件夹的压缩率 (测试版)
+
+
+ 系统集成
+
+
+ 添加到右键菜单
+
+
+ 添加到开始菜单
+
+
+ 完成后显示通知
+
+
+ 在系统托盘启动 CompactGUI
+
+
+ 文件类型管理
+
+
+ 管理本地跳过的文件类型
+
+
+ 编辑
+
+
+ 在线跳过列表的激进程度
+
+
+ 仅限 Steam 游戏。
+在选择跳过用户提交的文件类型时,该设置决定了每种文件类型需要提交多少次才能考虑跳过该类型。
+“低”通常是最好的,因为高档有跳过本来可以很好地压缩的文件的风险。
+
+
+ 低
+
+
+ 中
+
+
+ 高
+
+
+ 监控页
+
+
+ 设置
+
+
+ 数据库结果
+
+
+ 按游戏名称或 SteamID 搜索...
+
+
+ 排序方式
+
+
+ 游戏名称
+
+
+ SteamID
+
+
+ 最大节省
+
+
+ 游戏列表
+
+
+ 未压缩大小
+
+
+ 包含文件
+
+
+ 添加文件夹到队列
+
+
+ 压缩选中项
+
+
+ 正在处理
+
+
+ 数据库状态
+
+
+ 压缩模式
+
+
+ 配置
+
+
+ 跳过设置中指定的文件类型
+
+
+ 跳过可能压缩效果不佳的文件类型
+
+
+ 对于 Steam 游戏:
+根据数据库结果跳过文件
+
+对于非 Steam 文件夹:
+基于压缩估计跳过文件
+
+
+ 监控文件夹更改
+
+
+ 应用到所有
+
+
+ 预估大小
+
+
+ 节省
+
+
+ 未知
+
+
+ 受监控文件夹
+
+
+ 已节省
+
+
+ 取消后台压缩
+
+
+ 立即全部压缩
+
+
+ 上次分析
+
+
+ 未知
+
+
+ {0:0} 天前
+
+
+ {0:0} 小时前
+
+
+ {0:0} 分钟前
+
+
+ 刚刚
+
+
+ 压缩摘要
+
+
+ 节省空间
+
+
+ 文件已压缩
+
+
+ 压缩模式
+
+
+ 解压缩
+
+
+ 再次压缩
+
+
+ 提交结果
+
+
+ 压缩前
+
+
+ 压缩后
+
+
+ 总结果
+
+
+ 升序
+
+
+ 降序
+
+
+ 保存
+
+
+ 重置
+
+
+ 编辑跳过类型
+
+
+ 从不
+
+
+ 当系统空闲时
+
+
+ 按计划
+
+
+ 按计划且系统空闲时
+
+
+ 上次运行: {0:yyyy年 M月 d日 HH:mm:ss}
+
+
+ 下次计划: {0:yyyy年 M月 d日 HH:mm:ss}
+
+
+ 欢迎
+
+
+
+
+
+ 管理员权限
+
+
+ 选择文件夹
+
+
+ CompactGUI
+
+
+ 压缩数据库
+
+
+ 监控
+
+
+ 主页
+
+
+ 最后获取: {0:yyyy年 M月 d日 HH:mm:ss}
+
+
+ 上次修改:
+
+
+ 上次压缩:
+
+
+ 重新分析所有受监控文件夹
+
+
+ 从监控列表移除
+
+
+ 添加到压缩队列
+
+
+ 重新分析此文件夹
+
+
+ 已衰减
+
+
+ 添加自定义文件夹到监控列表
+
+
+ 添加
+
+
+ 正在分析
+
+
+ 等待压缩
+
+
+ 已压缩
+
+
+ 未知
+
+
+ 个文件将被跳过
+
+
+ SnackbarPresenter 从未被设置
+
+
+ 以管理员身份重新启动
+
+
+ 没有足够的权限访问此文件夹
+
+
+ 点击下载
+
+
+ 更新可用 ▸ 版本 {0}
+
+
+ 提交到 Wiki 失败
+
+
+ 此游戏使用 DirectStorage 技术。如果您正在使用此功能,则不应压缩此游戏。
+
+
+ 请等待当前操作完成
+
+
+ 无法移除文件夹
+
+
+ 压缩选项已应用到所有文件夹
+
+
+ 已应用到所有文件夹
+
+
+ 请检查您的网络连接并重试
+
+
+ 成功
+
+
+ 已添加到队列
+
+
+ 已提交到 Wiki
+
+
+ 压缩模式
+
+
+ 游戏
+
+
+ 未压缩
+
+
+ 你目前有 {0} 个文件夹正在被监控。关闭 CompactGUI 将停止对它们的监控。
+
+你确定要退出吗?
+
+
+ 退出
+
+
+ 打开
+
+
+ 是
+
+
+ 否
+
+
\ No newline at end of file
diff --git a/ResXManager.config.xml b/ResXManager.config.xml
new file mode 100644
index 0000000..9c83514
--- /dev/null
+++ b/ResXManager.config.xml
@@ -0,0 +1,4 @@
+
+
+ {"Items":[{"Extensions":".cs,.vb","Patterns":"$Namespace.$File.$Key|$File.$Key|StringResourceKey.$Key|$Namespace.StringResourceKey.$Key|nameof($File.$Key), ResourceType = typeof($File)|ErrorMessageResourceType = typeof($File), ErrorMessageResourceName = nameof($File.$Key)|local:Localize $Key"},{"Extensions":".cshtml,.vbhtml","Patterns":"@$Namespace.$File.$Key|@$File.$Key|@StringResourceKey.$Key|@$Namespace.StringResourceKey.$Key"},{"Extensions":".razor","Patterns":"@$Namespace.$File.$Key|@$File.$Key|@StringResourceKey.$Key|@$Namespace.StringResourceKey.$Key|@localizer[\"$Text\"]"},{"Extensions":".cpp,.c,.hxx,.h","Patterns":"$File::$Key"},{"Extensions":".aspx,.ascx","Patterns":"<%$ Resources:$File,$Key %>|<%= $File.$Key %>|<%= $Namespace.$File.$Key %>"},{"Extensions":".xaml","Patterns":"\"{x:Static properties:$File.$Key}\"|\"{local:Localize $Key}\""},{"Extensions":".ts","Patterns":"resources.$Key"},{"Extensions":".html","Patterns":"{{ resources.$Key }}"}]}
+
\ No newline at end of file