diff --git a/CompactGUI/CompactGUI.vbproj b/CompactGUI/CompactGUI.vbproj index babeb9f..210c3e1 100644 --- a/CompactGUI/CompactGUI.vbproj +++ b/CompactGUI/CompactGUI.vbproj @@ -63,12 +63,7 @@ - - - - - ..\..\FunctionalConverters\FunctionalConverters\bin\Release\net6.0-windows\FunctionalConverters.dll - + @@ -90,5 +85,10 @@ + + + PreserveNewest + + diff --git a/CompactGUI/LanguageConfig.vb b/CompactGUI/LanguageConfig.vb new file mode 100644 index 0000000..27913aa --- /dev/null +++ b/CompactGUI/LanguageConfig.vb @@ -0,0 +1,37 @@ +Imports System.IO +Imports System.Text.Json + +Public Class LanguageConfig + Private Shared ConfigPath As String = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "language_config.json") + + Public Class ConfigData + Public Property LanguageCode As String = "en-US" + End Class + + Public Shared Sub SaveLanguage(langCode As String) + Try + Dim data As New ConfigData With {.LanguageCode = langCode} + Dim jsonString = JsonSerializer.Serialize(data) + File.WriteAllText(ConfigPath, jsonString) + Catch ex As Exception + End Try + End Sub + + Public Shared Function GetLanguage() As String + Try + If File.Exists(ConfigPath) Then + Dim jsonString = File.ReadAllText(ConfigPath) + Dim data = JsonSerializer.Deserialize(Of ConfigData)(jsonString) + Return If(data IsNot Nothing AndAlso Not String.IsNullOrEmpty(data.LanguageCode), data.LanguageCode, "en-US") + Else + Dim sysLang = System.Globalization.CultureInfo.CurrentUICulture.Name + Dim i18nPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "i18n", $"{sysLang}.json") + If File.Exists(i18nPath) Then + Return sysLang + End If + End If + Catch ex As Exception + End Try + Return "en-US" + End Function +End Class \ No newline at end of file diff --git a/CompactGUI/MainWindow.xaml.vb b/CompactGUI/MainWindow.xaml.vb index 185b3d0..2629477 100644 --- a/CompactGUI/MainWindow.xaml.vb +++ b/CompactGUI/MainWindow.xaml.vb @@ -15,6 +15,7 @@ Class MainWindow : Implements INavigationWindow, INotifyPropertyChanged ' This call is required by the designer. InitializeComponent() + TranslationHelper.StartAutoTranslate() ' Add any initialization after the InitializeComponent() call. snackbarService.SetSnackbarPresenter(RootSnackbar) diff --git a/CompactGUI/TranslationHelper.vb b/CompactGUI/TranslationHelper.vb new file mode 100644 index 0000000..85b72e1 --- /dev/null +++ b/CompactGUI/TranslationHelper.vb @@ -0,0 +1,160 @@ +Imports System.IO +Imports System.Reflection +Imports System.Text.Json +Imports System.Text.RegularExpressions +Imports System.Windows +Imports System.Windows.Controls +Imports System.Windows.Documents +Imports System.Windows.Media +Imports System.Windows.Threading + +Public Class TranslationHelper + + Private Shared _isInitialized As Boolean = False + Public Shared Translations As New Dictionary(Of String, String) + + Public Shared Sub StartAutoTranslate() + If _isInitialized Then Return + _isInitialized = True + + Dim currentLang = LanguageConfig.GetLanguage() + + If currentLang <> "en-US" Then + Dim langFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "i18n", $"{currentLang}.json") + If File.Exists(langFile) Then + LoadLanguageFile(langFile) + + EventManager.RegisterClassHandler(GetType(FrameworkElement), FrameworkElement.LoadedEvent, New RoutedEventHandler(AddressOf OnElementLoaded)) + EventManager.RegisterClassHandler(GetType(FrameworkContentElement), FrameworkContentElement.LoadedEvent, New RoutedEventHandler(AddressOf OnElementLoaded)) + End If + End If + End Sub + + Public Shared Sub LoadLanguageFile(filePath As String) + Try + Dim jsonContent = File.ReadAllText(filePath) + Dim newTranslations = JsonSerializer.Deserialize(Of Dictionary(Of String, String))(jsonContent) + If newTranslations IsNot Nothing Then + Translations = newTranslations + End If + Catch ex As Exception + System.Diagnostics.Debug.WriteLine($"Failed to load language file: {ex.Message}") + End Try + End Sub + + Public Shared Sub TranslateWindow(obj As DependencyObject) + End Sub + + Private Shared Sub OnElementLoaded(sender As Object, e As RoutedEventArgs) + Dim element As DependencyObject = TryCast(sender, DependencyObject) + If element Is Nothing Then Return + + If TypeOf element Is DispatcherObject Then + DirectCast(element, DispatcherObject).Dispatcher.BeginInvoke(DispatcherPriority.ContextIdle, Sub() + Try + RecursiveTranslate(element) + Catch ex As Exception + End Try + End Sub) + End If + End Sub + + Private Shared Function NormalizeText(input As String) As String + If String.IsNullOrEmpty(input) Then Return "" + Dim normalized As String = Regex.Replace(input, "\s+", " ") + Return normalized.Trim() + End Function + + Public Shared Function GetString(key As String) As String + If Translations.ContainsKey(key) Then + Return Translations(key) + End If + Return key + End Function + + Public Shared Function GetStringForLanguage(langCode As String, key As String) As String + Dim filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "i18n", $"{langCode}.json") + If File.Exists(filePath) Then + Try + Dim jsonContent = File.ReadAllText(filePath) + Dim tempDict = JsonSerializer.Deserialize(Of Dictionary(Of String, String))(jsonContent) + If tempDict IsNot Nothing AndAlso tempDict.ContainsKey(key) Then + Return tempDict(key) + End If + Catch + End Try + End If + + If langCode = "en-US" Then Return key + + Return GetString(key) + End Function + + Private Shared Sub TryReplace(original As String, applyAction As Action(Of String)) + If String.IsNullOrWhiteSpace(original) Then Return + + Dim normalizedText As String = NormalizeText(original) + Dim found As Boolean = False + + If Translations.ContainsKey(normalizedText) Then + applyAction(Translations(normalizedText)) + found = True + Else + For Each kvp In Translations + If kvp.Key.Length > 3 AndAlso normalizedText.Contains(kvp.Key) Then + Dim translated As String = normalizedText.Replace(kvp.Key, kvp.Value) + + If translated <> normalizedText Then + applyAction(translated) + found = True + Exit For + End If + End If + Next + End If + End Sub + + Private Shared Sub RecursiveTranslate(element As Object) + If element Is Nothing Then Return + + Dim targetProperties As String() = {"Text", "Content", "Header", "Title", "Description", "Label", "ToolTip", "PlaceholderText"} + Dim type As Type = element.GetType() + + For Each propName In targetProperties + Dim prop = type.GetProperty(propName) + If prop IsNot Nothing AndAlso prop.CanRead AndAlso prop.CanWrite Then + Try + Dim val = prop.GetValue(element) + If TypeOf val Is String Then + TryReplace(CStr(val), Sub(newVal) prop.SetValue(element, newVal)) + ElseIf val IsNot Nothing AndAlso Not TypeOf val Is ValueType Then + RecursiveTranslate(val) + End If + Catch ex As Exception + End Try + End If + Next + + If TypeOf element Is TextBlock Then + Dim tb = DirectCast(element, TextBlock) + For Each inline In tb.Inlines + If TypeOf inline Is Run Then + RecursiveTranslate(inline) + End If + Next + End If + + If TypeOf element Is DependencyObject Then + Dim depObj = DirectCast(element, DependencyObject) + If TypeOf depObj Is Visual OrElse TypeOf depObj Is System.Windows.Media.Media3D.Visual3D Then + Dim childCount = VisualTreeHelper.GetChildrenCount(depObj) + For i = 0 To childCount - 1 + Dim child = VisualTreeHelper.GetChild(depObj, i) + RecursiveTranslate(child) + Next + End If + End If + + End Sub + +End Class \ No newline at end of file diff --git a/CompactGUI/Views/SettingsPage.xaml b/CompactGUI/Views/SettingsPage.xaml index cf52af3..4c46df5 100644 --- a/CompactGUI/Views/SettingsPage.xaml +++ b/CompactGUI/Views/SettingsPage.xaml @@ -1,4 +1,4 @@ - - - @@ -365,11 +337,11 @@ - - @@ -423,6 +395,25 @@ + + + + + + + + - + \ No newline at end of file diff --git a/CompactGUI/Views/SettingsPage.xaml.vb b/CompactGUI/Views/SettingsPage.xaml.vb index 6524a37..f58961f 100644 --- a/CompactGUI/Views/SettingsPage.xaml.vb +++ b/CompactGUI/Views/SettingsPage.xaml.vb @@ -1,4 +1,5 @@ -Public Class SettingsPage +Public Class SettingsPage + Private _isInitialized As Boolean = False Sub New(settingsviewmodel As SettingsViewModel) @@ -10,9 +11,42 @@ ScrollViewer.SetCanContentScroll(Me, False) - End Sub - + Dim currentLang = LanguageConfig.GetLanguage() + + For i As Integer = 0 To UiLanguageComboBox.Items.Count - 1 + Dim item = CType(UiLanguageComboBox.Items(i), ComboBoxItem) + If item.Tag.ToString() = currentLang Then + UiLanguageComboBox.SelectedIndex = i + Exit For + End If + Next + + If UiLanguageComboBox.SelectedIndex = -1 Then + UiLanguageComboBox.SelectedIndex = 0 + End If + + _isInitialized = True + End Sub + Private Sub UiLanguageComboBox_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) + If Not _isInitialized Then Return + If UiLanguageComboBox.SelectedItem Is Nothing Then Return + + Dim selectedItem = CType(UiLanguageComboBox.SelectedItem, ComboBoxItem) + Dim langCode = selectedItem.Tag.ToString() + + Dim currentSaved = LanguageConfig.GetLanguage() + If langCode <> currentSaved Then + LanguageConfig.SaveLanguage(langCode) + + Dim msg = TranslationHelper.GetStringForLanguage(langCode, "RestartRequired") + If msg = "RestartRequired" Then + msg = "Language settings saved. Please restart CompactGUI to apply changes." + End If + + MessageBox.Show(msg, "CompactGUI", MessageBoxButton.OK, MessageBoxImage.Information) + End If + End Sub -End Class +End Class \ No newline at end of file diff --git a/CompactGUI/i18n/de-DE.json b/CompactGUI/i18n/de-DE.json new file mode 100644 index 0000000..8eb6733 --- /dev/null +++ b/CompactGUI/i18n/de-DE.json @@ -0,0 +1,146 @@ +{ + "CompactGUI": "CompactGUI", + "Home": "Startseite", + "Watcher": "Überwachung", + "Compression DB": "Komprimierungs-DB", + "Admin": "Admin", + "Open": "Öffnen", + "Exit": "Beenden", + "Settings": "Einstellungen", + "Filetype Management": "Dateityp-Verwaltung", + "Manage local skipped filetypes": "Lokale übersprungene Dateitypen verwalten", + "edit": "Bearbeiten", + "Agression of online skiplist": "Aggressivität der Online-Skiplist", + "(?)": "(?)", + "medium": "Mittel", + "high": "Hoch", + "System Integration": "Systemintegration", + "Add to right-click context menu": "Zum Kontextmenü hinzufügen", + "Add to start menu": "Zum Startmenü hinzufügen", + "Show notification on completion": "Benachrichtigung bei Abschluss anzeigen", + "Start CompactGUI in system tray": "CompactGUI im System-Tray starten", + "Compression Settings": "Komprimierungseinstellungen", + "Maximum Compression Threads": "Maximale Komprimierungs-Threads", + "HDDs only use 1 thread": "HDDs nutzen nur 1 Thread", + "Estimate Compression for non-Steam Folders (beta)": "Komprimierung für Nicht-Steam-Ordner schätzen (Beta)", + "Quickly parses over files and estimates their compression ratio without writing to disk. This will likely be super laggy on HDDs! ": "Analysiert Dateien schnell und schätzt deren Komprimierungsrate, ohne auf die Festplatte zu schreiben. Dies wird auf HDDs wahrscheinlich sehr langsam sein!", + "Background Watcher Settings": "Hintergrundüberwachung", + "Monitor compressed folders for changes": "Komprimierte Ordner auf Änderungen überwachen", + "Compress folders:": "Ordner komprimieren:", + "Never": "Nie", + "When System is Idle": "Wenn System im Leerlauf", + "On Schedule": "Nach Zeitplan", + "On Schedule if system is also idle": "Nach Zeitplan (nur im Leerlauf)", + "every": "Alle", + "day(s)": "Tag(e)", + "Last ran:": "Zuletzt ausgeführt:", + "Next scheduled:": "Nächste Ausführung:", + "Update Settings": "Update-Einstellungen", + "Check for pre-release updates": "Auf Vorab-Versionen prüfen", + "UI Settings": "UI-Einstellungen", + "Always show details on Compression Mode buttons": "Details auf Komprimierungsmodus-Buttons immer anzeigen", + "Database Results": "Datenbank-Ergebnisse", + "Last Fetched:": "Zuletzt abgerufen:", + "Games": "Spiele", + "Search by game name or SteamID...": "Nach Spielname oder SteamID suchen...", + "Sort By": "Sortieren nach", + "Game Name": "Spielname", + "Ascending": "Aufsteigend", + "Descending": "Absteigend", + "SteamID": "SteamID", + "Max Savings": "Max. Ersparnis", + "SteamID:": "SteamID:", + "MODE": "MODUS", + "BEFORE": "VORHER", + "AFTER": "NACHHER", + "SAVINGS": "ERSPARNIS", + "TOTAL RESULTS": "GESAMTERGEBNISSE", + "UNCOMPRESSABLE FILETYPES": "NICHT KOMPRIMIERBARE DATEITYPEN", + "uncompressed size": "Unkomprimierte Größe", + "contained files": "Enthaltene Dateien", + "Compress Selected": "Auswahl komprimieren", + "select a folder": "Ordner auswählen", + "Version": "Version", + "Add Folder to Queue": "Ordner zur Warteschlange hinzufügen", + "Compression Mode": "Komprimierungsmodus", + "Configuration": "Konfiguration", + "Skip file types specified in settings": "In Einstellungen definierte Dateitypen überspringen", + "files will be skipped": "Dateien werden übersprungen", + "Skip file types likely to compress poorly": "Dateitypen mit voraussichtlich schlechter Komprimierung überspringen", + "Watch folder for changes": "Ordner auf Änderungen überwachen", + "Apply to all": "Auf alle anwenden", + "For Steam Games:": "Für Steam-Spiele:", + "estimate is based on database results": "Schätzung basiert auf Datenbankergebnissen", + "For Non-Steam Folders:": "Für Nicht-Steam-Ordner:", + "estimate is calculated by block analysis.": "Schätzung wird durch Blockanalyse berechnet.", + "If estimation is disabled, this will always show 0%": "Wenn die Schätzung deaktiviert ist, wird hier immer 0% angezeigt", + "skips files based on database results": "Überspringt Dateien basierend auf Datenbankergebnissen", + "skips files based on compression estimate": "Überspringt Dateien basierend auf Komprimierungsschätzung", + "Compression Summary": "Komprimierungszusammenfassung", + "Before": "Vorher", + "After": "Nachher", + "Space Saved": "Platz gespart", + "Files Compressed": "Dateien komprimiert", + "Uncompress": "Dekomprimieren", + "Compress Again": "Erneut komprimieren", + "Submit Results": "Ergebnisse senden", + "Estimated size": "Geschätzte Größe", + "Savings": "Ersparnis", + "unknown": "Unbekannt", + "Watched Folders": "Überwachte Ordner", + "Add a custom folder to the watchlist": "Benutzerdefinierten Ordner zur Watchlist hinzufügen", + "saved": "gespart", + "Last analysed": "Zuletzt analysiert", + "Re-analyse all watched folders": "Alle überwachten Ordner neu analysieren", + "Cancel Background Compressor": "Hintergrundkomprimierung abbrechen", + "Compress All Now": "Jetzt alle komprimieren", + "last compressed:": "Zuletzt komprimiert:", + "last modified:": "Zuletzt geändert:", + "% decayed": "% verfallen", + "Remove from Watchlist": "Von Watchlist entfernen", + "Add to compression queue": "Zur Komprimierungswarteschlange hinzufügen", + "Re-analyse this folder": "Diesen Ordner neu analysieren", + "Not Compressed": "Nicht komprimiert", + "Compressed": "Komprimiert", + "Compress Folder": "Ordner komprimieren", + "Invalid Folder": "Ungültiger Ordner", + "OK": "OK", + "Unknown": "Unbekannt", + "days ago": "Tage her", + "hours ago": "Stunden her", + "minutes ago": "Minuten her", + "just now": "Gerade eben", + "Awaiting Compression": "Warte auf Komprimierung", + "Analysing": "Analysieren", + "Working": "Arbeiten", + "Scheduled Compression Running": "Geplante Komprimierung läuft", + "CompactGUI is running a scheduled task and will compress monitored folders in the background": "CompactGUI führt eine geplante Aufgabe aus und komprimiert überwachte Ordner im Hintergrund", + "Scheduled Compression Completed": "Geplante Komprimierung abgeschlossen", + "Next scheduled task is on": "Nächste geplante Aufgabe am:", + "Restart as Admin": "Als Admin neu starten", + "Insufficient permission to access this folder.": "Unzureichende Berechtigung für Zugriff auf diesen Ordner.", + "Click to download": "Zum Herunterladen klicken", + "Update Available": "Update verfügbar", + "Failed to submit to wiki": "Senden an Wiki fehlgeschlagen", + "Please check your internet connection and try again": "Bitte überprüfen Sie Ihre Internetverbindung und versuchen Sie es erneut", + "Submitted to wiki": "An Wiki gesendet", + "Applied to all folders": "Auf alle Ordner angewendet", + "Compression options have been applied to all folders": "Komprimierungsoptionen wurden auf alle Ordner angewendet", + "Cannot remove folder": "Ordner kann nicht entfernt werden", + "Please wait until the current operation is finished": "Bitte warten Sie, bis der aktuelle Vorgang abgeschlossen ist", + "Success": "Erfolg", + "Added to Queue": "Zur Warteschlange hinzugefügt", + "This game uses DirectStorage technology. If you are using this feature, you should not compress this game.": "Dieses Spiel verwendet DirectStorage-Technologie. Wenn Sie diese Funktion nutzen, sollten Sie dieses Spiel nicht komprimieren.", + "You currently have": "Sie haben derzeit", + "folders being watched. Closing CompactGUI will stop them from being monitored.": "Ordner, die überwacht werden. Das Schließen von CompactGUI beendet die Überwachung.", + "Are you sure you want to exit?": "Sind Sie sicher, dass Sie beenden möchten?", + "View on GitHub": "Auf GitHub ansehen", + "Buy me a coffee": "Spendieren Sie mir einen Kaffee", + "GB saved": "GB gespart", + "MB saved": "MB gespart", + "files being watched": "Dateien werden überwacht", + "Closing CompactGUI will stop them from being monitored.": "Das Schließen von CompactGUI beendet die Überwachung.", + "Language (Requires Restart)": " Sprache (Neustart erforderlich)", + "folders being watched": "Ordner werden überwacht", + "RestartRequired": "Spracheinstellungen gespeichert. Bitte starten Sie CompactGUI neu, um die Änderungen zu übernehmen。" +} \ No newline at end of file diff --git a/CompactGUI/i18n/es-ES.json b/CompactGUI/i18n/es-ES.json new file mode 100644 index 0000000..07f8150 --- /dev/null +++ b/CompactGUI/i18n/es-ES.json @@ -0,0 +1,146 @@ +{ + "CompactGUI": "CompactGUI", + "Home": "Inicio", + "Watcher": "Monitor", + "Compression DB": "BD Compresión", + "Admin": "Admin", + "Open": "Abrir", + "Exit": "Salir", + "Settings": "Ajustes", + "Filetype Management": "Gestión de tipos de archivo", + "Manage local skipped filetypes": "Gestionar tipos de archivo omitidos locales", + "edit": "editar", + "Agression of online skiplist": "Agresividad de la lista de omisión online", + "(?)": "(?)", + "medium": "media", + "high": "alta", + "System Integration": "Integración del sistema", + "Add to right-click context menu": "Añadir al menú contextual", + "Add to start menu": "Añadir al menú inicio", + "Show notification on completion": "Mostrar notificación al finalizar", + "Start CompactGUI in system tray": "Iniciar CompactGUI en la bandeja del sistema", + "Compression Settings": "Ajustes de compresión", + "Maximum Compression Threads": "Hilos máximos de compresión", + "HDDs only use 1 thread": "Los HDD usan solo 1 hilo", + "Estimate Compression for non-Steam Folders (beta)": "Estimar compresión para carpetas no-Steam (beta)", + "Quickly parses over files and estimates their compression ratio without writing to disk. This will likely be super laggy on HDDs! ": "Analiza rápidamente los archivos y estima su tasa de compresión sin escribir en el disco. ¡Esto probablemente será muy lento en HDDs!", + "Background Watcher Settings": "Ajustes del monitor en segundo plano", + "Monitor compressed folders for changes": "Monitorizar cambios en carpetas comprimidas", + "Compress folders:": "Comprimir carpetas:", + "Never": "Nunca", + "When System is Idle": "Cuando el sistema esté inactivo", + "On Schedule": "Programado", + "On Schedule if system is also idle": "Programado (si el sistema está inactivo)", + "every": "cada", + "day(s)": "día(s)", + "Last ran:": "Última ejecución:", + "Next scheduled:": "Próxima programada:", + "Update Settings": "Ajustes de actualización", + "Check for pre-release updates": "Buscar actualizaciones preliminares", + "UI Settings": "Ajustes de interfaz", + "Always show details on Compression Mode buttons": "Mostrar siempre detalles en botones de modo de compresión", + "Database Results": "Resultados de la base de datos", + "Last Fetched:": "Última obtención:", + "Games": "Juegos", + "Search by game name or SteamID...": "Buscar por nombre o SteamID...", + "Sort By": "Ordenar por", + "Game Name": "Nombre del juego", + "Ascending": "Ascendente", + "Descending": "Descendente", + "SteamID": "SteamID", + "Max Savings": "Ahorro máx.", + "SteamID:": "SteamID:", + "MODE": "MODO", + "BEFORE": "ANTES", + "AFTER": "DESPUÉS", + "SAVINGS": "AHORRO", + "TOTAL RESULTS": "RESULTADOS TOTALES", + "UNCOMPRESSABLE FILETYPES": "TIPOS DE ARCHIVO NO COMPRIMIBLES", + "uncompressed size": "tamaño sin comprimir", + "contained files": "archivos contenidos", + "Compress Selected": "Comprimir seleccionados", + "select a folder": "seleccionar carpeta", + "Version": "Versión", + "Add Folder to Queue": "Añadir carpeta a la cola", + "Compression Mode": "Modo de compresión", + "Configuration": "Configuración", + "Skip file types specified in settings": "Omitir tipos de archivo especificados en ajustes", + "files will be skipped": "archivos serán omitidos", + "Skip file types likely to compress poorly": "Omitir tipos de archivo difícilmente comprimibles", + "Watch folder for changes": "Monitorizar cambios en carpeta", + "Apply to all": "Aplicar a todo", + "For Steam Games:": "Para juegos de Steam:", + "estimate is based on database results": "la estimación se basa en resultados de la BD", + "For Non-Steam Folders:": "Para carpetas no-Steam:", + "estimate is calculated by block analysis.": "la estimación se calcula por análisis de bloques.", + "If estimation is disabled, this will always show 0%": "Si la estimación está desactivada, esto siempre mostrará 0%", + "skips files based on database results": "omite archivos basado en resultados de la BD", + "skips files based on compression estimate": "omite archivos basado en estimación de compresión", + "Compression Summary": "Resumen de compresión", + "Before": "Antes", + "After": "Después", + "Space Saved": "Espacio ahorrado", + "Files Compressed": "Archivos comprimidos", + "Uncompress": "Descomprimir", + "Compress Again": "Comprimir de nuevo", + "Submit Results": "Enviar resultados", + "Estimated size": "Tamaño estimado", + "Savings": "Ahorro", + "unknown": "desconocido", + "Watched Folders": "Carpetas monitorizadas", + "Add a custom folder to the watchlist": "Añadir carpeta personalizada a la lista", + "saved": "ahorrado", + "Last analysed": "Último análisis", + "Re-analyse all watched folders": "Reanalizar todas las carpetas monitorizadas", + "Cancel Background Compressor": "Cancelar compresor en segundo plano", + "Compress All Now": "Comprimir todo ahora", + "last compressed:": "última compresión:", + "last modified:": "última modificación:", + "% decayed": "% degradado", + "Remove from Watchlist": "Eliminar de la lista", + "Add to compression queue": "Añadir a la cola de compresión", + "Re-analyse this folder": "Reanalizar esta carpeta", + "Not Compressed": "No comprimido", + "Compressed": "Comprimido", + "Compress Folder": "Comprimir carpeta", + "Invalid Folder": "Carpeta inválida", + "OK": "Aceptar", + "Unknown": "Desconocido", + "days ago": "hace días", + "hours ago": "hace horas", + "minutes ago": "hace minutos", + "just now": "ahora mismo", + "Awaiting Compression": "Esperando compresión", + "Analysing": "Analizando", + "Working": "Trabajando", + "Scheduled Compression Running": "Compresión programada en ejecución", + "CompactGUI is running a scheduled task and will compress monitored folders in the background": "CompactGUI está ejecutando una tarea programada y comprimirá las carpetas monitorizadas en segundo plano", + "Scheduled Compression Completed": "Compresión programada completada", + "Next scheduled task is on": "Siguiente tarea programada el:", + "Restart as Admin": "Reiniciar como Admin", + "Insufficient permission to access this folder.": "Permiso insuficiente para acceder a esta carpeta.", + "Click to download": "Clic para descargar", + "Update Available": "Actualización disponible", + "Failed to submit to wiki": "Fallo al enviar a la wiki", + "Please check your internet connection and try again": "Por favor verifique su conexión a internet e intente de nuevo", + "Submitted to wiki": "Enviado a la wiki", + "Applied to all folders": "Aplicado a todas las carpetas", + "Compression options have been applied to all folders": "Las opciones de compresión se han aplicado a todas las carpetas", + "Cannot remove folder": "No se puede eliminar la carpeta", + "Please wait until the current operation is finished": "Por favor espere hasta que la operación actual termine", + "Success": "Éxito", + "Added to Queue": "Añadido a la cola", + "This game uses DirectStorage technology. If you are using this feature, you should not compress this game.": "Este juego usa tecnología DirectStorage. Si usa esta función, no debería comprimir este juego.", + "You currently have": "Actualmente tiene", + "folders being watched. Closing CompactGUI will stop them from being monitored.": "carpetas siendo monitorizadas. Cerrar CompactGUI detendrá su monitorización.", + "Are you sure you want to exit?": "¿Está seguro de que desea salir?", + "View on GitHub": "Ver en GitHub", + "Buy me a coffee": "Cómprame un café", + "GB saved": "GB ahorrados", + "MB saved": "MB ahorrados", + "files being watched": "archivos monitorizados", + "Closing CompactGUI will stop them from being monitored.": "Cerrar CompactGUI detendrá la monitorización.", + "Language (Requires Restart)": " Idioma (Requiere reinicio)", + "folders being watched": "carpetas siendo vigiladas", + "RestartRequired": "Configuración de idioma guardada. Por favor, reinicie CompactGUI para aplicar los cambios." +} \ No newline at end of file diff --git a/CompactGUI/i18n/fr-FR.json b/CompactGUI/i18n/fr-FR.json new file mode 100644 index 0000000..3fb6ccf --- /dev/null +++ b/CompactGUI/i18n/fr-FR.json @@ -0,0 +1,146 @@ +{ + "CompactGUI": "CompactGUI", + "Home": "Accueil", + "Watcher": "Surveillance", + "Compression DB": "BDD Compression", + "Admin": "Admin", + "Open": "Ouvrir", + "Exit": "Quitter", + "Settings": "Paramètres", + "Filetype Management": "Gestion types de fichiers", + "Manage local skipped filetypes": "Gérer les types de fichiers ignorés localement", + "edit": "éditer", + "Agression of online skiplist": "Agressivité de la liste d'exclusion en ligne", + "(?)": "(?)", + "medium": "moyen", + "high": "élevé", + "System Integration": "Intégration système", + "Add to right-click context menu": "Ajouter au menu contextuel (clic droit)", + "Add to start menu": "Ajouter au menu Démarrer", + "Show notification on completion": "Afficher une notification à la fin", + "Start CompactGUI in system tray": "Démarrer CompactGUI dans la barre d'état", + "Compression Settings": "Paramètres de compression", + "Maximum Compression Threads": "Threads de compression maximum", + "HDDs only use 1 thread": "Les disques durs (HDD) n'utilisent qu'un thread", + "Estimate Compression for non-Steam Folders (beta)": "Estimer la compression pour les dossiers non-Steam (bêta)", + "Quickly parses over files and estimates their compression ratio without writing to disk. This will likely be super laggy on HDDs! ": "Analyse rapidement les fichiers et estime leur taux de compression sans écrire sur le disque. Cela sera probablement très lent sur les disques durs !", + "Background Watcher Settings": "Paramètres de surveillance en arrière-plan", + "Monitor compressed folders for changes": "Surveiller les modifications des dossiers compressés", + "Compress folders:": "Compresser les dossiers :", + "Never": "Jamais", + "When System is Idle": "Quand le système est inactif", + "On Schedule": "Planifié", + "On Schedule if system is also idle": "Planifié (si système inactif)", + "every": "tous les", + "day(s)": "jour(s)", + "Last ran:": "Dernière exécution :", + "Next scheduled:": "Prochaine planification :", + "Update Settings": "Paramètres de mise à jour", + "Check for pre-release updates": "Vérifier les mises à jour pré-release", + "UI Settings": "Paramètres de l'interface", + "Always show details on Compression Mode buttons": "Toujours afficher les détails sur les boutons de mode de compression", + "Database Results": "Résultats de la base de données", + "Last Fetched:": "Dernière récupération :", + "Games": "Jeux", + "Search by game name or SteamID...": "Rechercher par nom de jeu ou SteamID...", + "Sort By": "Trier par", + "Game Name": "Nom du jeu", + "Ascending": "Croissant", + "Descending": "Décroissant", + "SteamID": "SteamID", + "Max Savings": "Économies max", + "SteamID:": "SteamID :", + "MODE": "MODE", + "BEFORE": "AVANT", + "AFTER": "APRÈS", + "SAVINGS": "ÉCONOMIES", + "TOTAL RESULTS": "RÉSULTATS TOTAUX", + "UNCOMPRESSABLE FILETYPES": "TYPES DE FICHIERS NON COMPRESSIBLES", + "uncompressed size": "taille non compressée", + "contained files": "fichiers contenus", + "Compress Selected": "Compresser la sélection", + "select a folder": "sélectionner un dossier", + "Version": "Version", + "Add Folder to Queue": "Ajouter le dossier à la file d'attente", + "Compression Mode": "Mode de compression", + "Configuration": "Configuration", + "Skip file types specified in settings": "Ignorer les types de fichiers spécifiés dans les paramètres", + "files will be skipped": "fichiers seront ignorés", + "Skip file types likely to compress poorly": "Ignorer les types de fichiers peu compressibles", + "Watch folder for changes": "Surveiller les modifications du dossier", + "Apply to all": "Appliquer à tous", + "For Steam Games:": "Pour les jeux Steam :", + "estimate is based on database results": "l'estimation est basée sur les résultats de la BDD", + "For Non-Steam Folders:": "Pour les dossiers non-Steam :", + "estimate is calculated by block analysis.": "l'estimation est calculée par analyse de blocs.", + "If estimation is disabled, this will always show 0%": "Si l'estimation est désactivée, ceci affichera toujours 0%", + "skips files based on database results": "ignore les fichiers basés sur les résultats de la BDD", + "skips files based on compression estimate": "ignore les fichiers basés sur l'estimation de compression", + "Compression Summary": "Résumé de la compression", + "Before": "Avant", + "After": "Après", + "Space Saved": "Espace économisé", + "Files Compressed": "Fichiers compressés", + "Uncompress": "Décompresser", + "Compress Again": "Compresser à nouveau", + "Submit Results": "Soumettre les résultats", + "Estimated size": "Taille estimée", + "Savings": "Économies", + "unknown": "inconnu", + "Watched Folders": "Dossiers surveillés", + "Add a custom folder to the watchlist": "Ajouter un dossier personnalisé à la liste de surveillance", + "saved": "économisé", + "Last analysed": "Dernière analyse", + "Re-analyse all watched folders": "Réanalyser tous les dossiers surveillés", + "Cancel Background Compressor": "Annuler la compression en arrière-plan", + "Compress All Now": "Tout compresser maintenant", + "last compressed:": "dernière compression :", + "last modified:": "dernière modification :", + "% decayed": "% dégradé", + "Remove from Watchlist": "Retirer de la liste de surveillance", + "Add to compression queue": "Ajouter à la file de compression", + "Re-analyse this folder": "Réanalyser ce dossier", + "Not Compressed": "Non compressé", + "Compressed": "Compressé", + "Compress Folder": "Compresser le dossier", + "Invalid Folder": "Dossier invalide", + "OK": "OK", + "Unknown": "Inconnu", + "days ago": "il y a des jours", + "hours ago": "il y a des heures", + "minutes ago": "il y a des minutes", + "just now": "à l'instant", + "Awaiting Compression": "En attente de compression", + "Analysing": "Analyse en cours", + "Working": "Traitement en cours", + "Scheduled Compression Running": "Compression planifiée en cours", + "CompactGUI is running a scheduled task and will compress monitored folders in the background": "CompactGUI exécute une tâche planifiée et compressera les dossiers surveillés en arrière-plan", + "Scheduled Compression Completed": "Compression planifiée terminée", + "Next scheduled task is on": "Prochaine tâche planifiée le :", + "Restart as Admin": "Redémarrer en tant qu'admin", + "Insufficient permission to access this folder.": "Permission insuffisante pour accéder à ce dossier.", + "Click to download": "Cliquer pour télécharger", + "Update Available": "Mise à jour disponible", + "Failed to submit to wiki": "Échec de la soumission au wiki", + "Please check your internet connection and try again": "Veuillez vérifier votre connexion internet et réessayer", + "Submitted to wiki": "Soumis au wiki", + "Applied to all folders": "Appliqué à tous les dossiers", + "Compression options have been applied to all folders": "Les options de compression ont été appliquées à tous les dossiers", + "Cannot remove folder": "Impossible de retirer le dossier", + "Please wait until the current operation is finished": "Veuillez attendre que l'opération en cours soit terminée", + "Success": "Succès", + "Added to Queue": "Ajouté à la file d'attente", + "This game uses DirectStorage technology. If you are using this feature, you should not compress this game.": "Ce jeu utilise la technologie DirectStorage. Si vous utilisez cette fonctionnalité, vous ne devriez pas compresser ce jeu.", + "You currently have": "Vous avez actuellement", + "folders being watched. Closing CompactGUI will stop them from being monitored.": "dossiers surveillés. Fermer CompactGUI arrêtera leur surveillance.", + "Are you sure you want to exit?": "Êtes-vous sûr de vouloir quitter ?", + "View on GitHub": "Voir sur GitHub", + "Buy me a coffee": "M'offrir un café (Buy me a coffee)", + "GB saved": "Go économisés", + "MB saved": "Mo économisés", + "files being watched": "fichiers surveillés", + "Closing CompactGUI will stop them from being monitored.": "Fermer CompactGUI arrêtera leur surveillance.", + "Language (Requires Restart)": " Langue (Redémarrage requis)", + "folders being watched": "dossiers surveillés", + "RestartRequired": "Paramètres de langue enregistrés. Veuillez redémarrer CompactGUI pour appliquer les modifications." +} \ No newline at end of file diff --git a/CompactGUI/i18n/ja-JP.json b/CompactGUI/i18n/ja-JP.json new file mode 100644 index 0000000..5c2fac8 --- /dev/null +++ b/CompactGUI/i18n/ja-JP.json @@ -0,0 +1,146 @@ +{ + "CompactGUI": "CompactGUI", + "Home": "ホーム", + "Watcher": "監視", + "Compression DB": "圧縮データベース", + "Admin": "管理者", + "Open": "開く", + "Exit": "終了", + "Settings": "設定", + "Filetype Management": "ファイルタイプ管理", + "Manage local skipped filetypes": "ローカルのスキップするファイルタイプを管理", + "edit": "編集", + "Agression of online skiplist": "オンラインスキップリストの強度", + "(?)": "(?)", + "medium": "中", + "high": "高", + "System Integration": "システム統合", + "Add to right-click context menu": "右クリックメニューに追加", + "Add to start menu": "スタートメニューに追加", + "Show notification on completion": "完了時に通知を表示", + "Start CompactGUI in system tray": "システムトレイでCompactGUIを起動", + "Compression Settings": "圧縮設定", + "Maximum Compression Threads": "最大圧縮スレッド数", + "HDDs only use 1 thread": "HDDは1スレッドのみ使用", + "Estimate Compression for non-Steam Folders (beta)": "非Steamフォルダの圧縮率を推定 (ベータ)", + "Quickly parses over files and estimates their compression ratio without writing to disk. This will likely be super laggy on HDDs! ": "ファイルを高速に解析し、ディスクに書き込まずに圧縮率を推定します。HDDでは非常に遅くなる可能性があります!", + "Background Watcher Settings": "バックグラウンド監視設定", + "Monitor compressed folders for changes": "圧縮フォルダの変更を監視", + "Compress folders:": "フォルダを圧縮:", + "Never": "しない", + "When System is Idle": "システムアイドル時", + "On Schedule": "スケジュール", + "On Schedule if system is also idle": "スケジュール(システムアイドル時のみ)", + "every": "間隔", + "day(s)": "日", + "Last ran:": "前回の実行:", + "Next scheduled:": "次回の予定:", + "Update Settings": "更新設定", + "Check for pre-release updates": "プレリリース更新を確認", + "UI Settings": "UI設定", + "Always show details on Compression Mode buttons": "圧縮モードボタンに詳細を常に表示", + "Database Results": "データベース結果", + "Last Fetched:": "最終取得:", + "Games": "ゲーム", + "Search by game name or SteamID...": "ゲーム名またはSteamIDで検索...", + "Sort By": "並べ替え", + "Game Name": "ゲーム名", + "Ascending": "昇順", + "Descending": "降順", + "SteamID": "SteamID", + "Max Savings": "最大削減量", + "SteamID:": "SteamID:", + "MODE": "モード", + "BEFORE": "圧縮前", + "AFTER": "圧縮後", + "SAVINGS": "削減率", + "TOTAL RESULTS": "合計結果", + "UNCOMPRESSABLE FILETYPES": "圧縮不可のファイルタイプ", + "uncompressed size": "未圧縮サイズ", + "contained files": "含まれるファイル", + "Compress Selected": "選択項目を圧縮", + "select a folder": "フォルダを選択", + "Version": "バージョン", + "Add Folder to Queue": "フォルダをキューに追加", + "Compression Mode": "圧縮モード", + "Configuration": "構成", + "Skip file types specified in settings": "設定で指定されたファイルタイプをスキップ", + "files will be skipped": "ファイルがスキップされます", + "Skip file types likely to compress poorly": "圧縮率が低い可能性のあるファイルタイプをスキップ", + "Watch folder for changes": "フォルダの変更を監視", + "Apply to all": "すべてに適用", + "For Steam Games:": "Steamゲームの場合:", + "estimate is based on database results": "推定はデータベースの結果に基づきます", + "For Non-Steam Folders:": "非Steamフォルダの場合:", + "estimate is calculated by block analysis.": "推定はブロック分析によって計算されます。", + "If estimation is disabled, this will always show 0%": "推定が無効な場合、常に0%と表示されます", + "skips files based on database results": "データベースの結果に基づいてファイルをスキップ", + "skips files based on compression estimate": "圧縮推定に基づいてファイルをスキップ", + "Compression Summary": "圧縮概要", + "Before": "圧縮前", + "After": "圧縮後", + "Space Saved": "節約された容量", + "Files Compressed": "圧縮されたファイル", + "Uncompress": "解凍", + "Compress Again": "再圧縮", + "Submit Results": "結果を送信", + "Estimated size": "推定サイズ", + "Savings": "削減", + "unknown": "不明", + "Watched Folders": "監視中のフォルダ", + "Add a custom folder to the watchlist": "カスタムフォルダをウォッチリストに追加", + "saved": "節約", + "Last analysed": "最終分析", + "Re-analyse all watched folders": "すべての監視フォルダを再分析", + "Cancel Background Compressor": "バックグラウンド圧縮をキャンセル", + "Compress All Now": "今すぐすべて圧縮", + "last compressed:": "最終圧縮:", + "last modified:": "最終更新:", + "% decayed": "% 劣化", + "Remove from Watchlist": "ウォッチリストから削除", + "Add to compression queue": "圧縮キューに追加", + "Re-analyse this folder": "このフォルダを再分析", + "Not Compressed": "未圧縮", + "Compressed": "圧縮済み", + "Compress Folder": "フォルダを圧縮", + "Invalid Folder": "無効なフォルダ", + "OK": "OK", + "Unknown": "不明", + "days ago": "日前", + "hours ago": "時間前", + "minutes ago": "分前", + "just now": "たった今", + "Awaiting Compression": "圧縮待ち", + "Analysing": "分析中", + "Working": "処理中", + "Scheduled Compression Running": "スケジュール圧縮を実行中", + "CompactGUI is running a scheduled task and will compress monitored folders in the background": "CompactGUIはスケジュールタスクを実行しており、バックグラウンドで監視フォルダを圧縮します", + "Scheduled Compression Completed": "スケジュール圧縮完了", + "Next scheduled task is on": "次回のスケジュールタスク:", + "Restart as Admin": "管理者として再起動", + "Insufficient permission to access this folder.": "このフォルダにアクセスする権限がありません。", + "Click to download": "クリックしてダウンロード", + "Update Available": "アップデート利用可能", + "Failed to submit to wiki": "Wikiへの送信に失敗しました", + "Please check your internet connection and try again": "インターネット接続を確認して再試行してください", + "Submitted to wiki": "Wikiに送信しました", + "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.": "このゲームはDirectStorage技術を使用しています。この機能を使用している場合は、このゲームを圧縮しないでください。", + "You currently have": "現在", + "folders being watched. Closing CompactGUI will stop them from being monitored.": "個のフォルダを監視中です。CompactGUIを閉じると、監視が停止します。", + "Are you sure you want to exit?": "終了してもよろしいですか?", + "View on GitHub": "GitHubで見る", + "Buy me a coffee": "寄付する (Buy me a coffee)", + "GB saved": "GB 節約", + "MB saved": "MB 節約", + "files being watched": "ファイル監視中", + "Closing CompactGUI will stop them from being monitored.": "CompactGUIを閉じると監視が停止します。", + "Language (Requires Restart)": " 言語 (再起動が必要)", + "folders being watched": "個のフォルダーが監視されています", + "RestartRequired": "言語設定が保存されました。変更を適用するには CompactGUI を再起動してください。" +} \ No newline at end of file diff --git a/CompactGUI/i18n/ko-KR.json b/CompactGUI/i18n/ko-KR.json new file mode 100644 index 0000000..f247a57 --- /dev/null +++ b/CompactGUI/i18n/ko-KR.json @@ -0,0 +1,146 @@ +{ + "CompactGUI": "CompactGUI", + "Home": "홈", + "Watcher": "감시", + "Compression DB": "압축 DB", + "Admin": "관리자", + "Open": "열기", + "Exit": "종료", + "Settings": "설정", + "Filetype Management": "파일 형식 관리", + "Manage local skipped filetypes": "로컬 건너뛰기 파일 형식 관리", + "edit": "편집", + "Agression of online skiplist": "온라인 건너뛰기 목록 강도", + "(?)": "(?)", + "medium": "중간", + "high": "높음", + "System Integration": "시스템 통합", + "Add to right-click context menu": "우클릭 메뉴에 추가", + "Add to start menu": "시작 메뉴에 추가", + "Show notification on completion": "완료 시 알림 표시", + "Start CompactGUI in system tray": "시스템 트레이에서 CompactGUI 시작", + "Compression Settings": "압축 설정", + "Maximum Compression Threads": "최대 압축 스레드", + "HDDs only use 1 thread": "HDD는 1개 스레드만 사용", + "Estimate Compression for non-Steam Folders (beta)": "비 Steam 폴더 압축률 예상 (베타)", + "Quickly parses over files and estimates their compression ratio without writing to disk. This will likely be super laggy on HDDs! ": "파일을 빠르게 분석하여 디스크에 쓰지 않고 압축률을 예상합니다. HDD에서는 매우 느릴 수 있습니다!", + "Background Watcher Settings": "백그라운드 감시 설정", + "Monitor compressed folders for changes": "압축된 폴더 변경 감시", + "Compress folders:": "폴더 압축:", + "Never": "안 함", + "When System is Idle": "시스템 유휴 시", + "On Schedule": "예약", + "On Schedule if system is also idle": "예약 (시스템 유휴 시)", + "every": "간격", + "day(s)": "일", + "Last ran:": "최근 실행:", + "Next scheduled:": "다음 예약:", + "Update Settings": "업데이트 설정", + "Check for pre-release updates": "사전 릴리스 업데이트 확인", + "UI Settings": "UI 설정", + "Always show details on Compression Mode buttons": "압축 모드 버튼에 항상 세부 정보 표시", + "Database Results": "데이터베이스 결과", + "Last Fetched:": "최근 가져옴:", + "Games": "게임", + "Search by game name or SteamID...": "게임 이름 또는 SteamID로 검색...", + "Sort By": "정렬", + "Game Name": "게임 이름", + "Ascending": "오름차순", + "Descending": "내림차순", + "SteamID": "SteamID", + "Max Savings": "최대 절약", + "SteamID:": "SteamID:", + "MODE": "모드", + "BEFORE": "압축 전", + "AFTER": "압축 후", + "SAVINGS": "절약", + "TOTAL RESULTS": "총 결과", + "UNCOMPRESSABLE FILETYPES": "압축 불가능한 파일 형식", + "uncompressed size": "압축되지 않은 크기", + "contained files": "포함된 파일", + "Compress Selected": "선택 항목 압축", + "select a folder": "폴더 선택", + "Version": "버전", + "Add Folder to Queue": "대기열에 폴더 추가", + "Compression Mode": "압축 모드", + "Configuration": "구성", + "Skip file types specified in settings": "설정된 파일 형식 건너뛰기", + "files will be skipped": "개 파일이 건너뛰어집니다", + "Skip file types likely to compress poorly": "압축 효율이 낮은 파일 형식 건너뛰기", + "Watch folder for changes": "폴더 변경 감시", + "Apply to all": "모두 적용", + "For Steam Games:": "Steam 게임:", + "estimate is based on database results": "예상치는 데이터베이스 결과를 기반으로 합니다", + "For Non-Steam Folders:": "비 Steam 폴더:", + "estimate is calculated by block analysis.": "예상치는 블록 분석으로 계산됩니다.", + "If estimation is disabled, this will always show 0%": "예상이 비활성화되면 항상 0%로 표시됩니다", + "skips files based on database results": "데이터베이스 결과에 따라 파일 건너뛰기", + "skips files based on compression estimate": "압축 예상치에 따라 파일 건너뛰기", + "Compression Summary": "압축 요약", + "Before": "압축 전", + "After": "압축 후", + "Space Saved": "절약된 공간", + "Files Compressed": "압축된 파일", + "Uncompress": "압축 해제", + "Compress Again": "다시 압축", + "Submit Results": "결과 제출", + "Estimated size": "예상 크기", + "Savings": "절약", + "unknown": "알 수 없음", + "Watched Folders": "감시 중인 폴더", + "Add a custom folder to the watchlist": "감시 목록에 사용자 지정 폴더 추가", + "saved": "절약됨", + "Last analysed": "최근 분석", + "Re-analyse all watched folders": "모든 감시 폴더 재분석", + "Cancel Background Compressor": "백그라운드 압축 취소", + "Compress All Now": "지금 모두 압축", + "last compressed:": "최근 압축:", + "last modified:": "최근 수정:", + "% decayed": "% 감소됨", + "Remove from Watchlist": "감시 목록에서 제거", + "Add to compression queue": "압축 대기열에 추가", + "Re-analyse this folder": "이 폴더 재분석", + "Not Compressed": "압축되지 않음", + "Compressed": "압축됨", + "Compress Folder": "폴더 압축", + "Invalid Folder": "유효하지 않은 폴더", + "OK": "확인", + "Unknown": "알 수 없음", + "days ago": "일 전", + "hours ago": "시간 전", + "minutes ago": "분 전", + "just now": "방금", + "Awaiting Compression": "압축 대기 중", + "Analysing": "분석 중", + "Working": "작업 중", + "Scheduled Compression Running": "예약된 압축 실행 중", + "CompactGUI is running a scheduled task and will compress monitored folders in the background": "CompactGUI가 예약된 작업을 실행 중이며 백그라운드에서 감시 폴더를 압축합니다", + "Scheduled Compression Completed": "예약된 압축 완료", + "Next scheduled task is on": "다음 예약 작업:", + "Restart as Admin": "관리자 권한으로 다시 시작", + "Insufficient permission to access this folder.": "이 폴더에 액세스할 권한이 부족합니다.", + "Click to download": "다운로드하려면 클릭", + "Update Available": "업데이트 가능", + "Failed to submit to wiki": "Wiki 제출 실패", + "Please check your internet connection and try again": "인터넷 연결을 확인하고 다시 시도해 주세요", + "Submitted to wiki": "Wiki에 제출됨", + "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.": "이 게임은 DirectStorage 기술을 사용합니다. 이 기능을 사용하는 경우 이 게임을 압축하지 마십시오.", + "You currently have": "현재", + "folders being watched. Closing CompactGUI will stop them from being monitored.": "개의 폴더가 감시되고 있습니다. CompactGUI를 닫으면 감시가 중지됩니다.", + "Are you sure you want to exit?": "정말 종료하시겠습니까?", + "View on GitHub": "GitHub에서 보기", + "Buy me a coffee": "커피 한 잔 사주기 (후원)", + "GB saved": "GB 절약", + "MB saved": "MB 절약", + "files being watched": "개 파일 감시 중", + "Closing CompactGUI will stop them from being monitored.": "CompactGUI를 닫으면 감시가 중지됩니다.", + "Language (Requires Restart)": " 언어 (다시 시작 필요)", + "folders being watched": "개의 폴더가 감시되고 있습니다", + "RestartRequired": "언어 설정이 저장되었습니다. 변경 사항을 적용하려면 CompactGUI를 다시 시작하십시오." +} \ No newline at end of file diff --git a/CompactGUI/i18n/ru-RU.json b/CompactGUI/i18n/ru-RU.json new file mode 100644 index 0000000..aff73ff --- /dev/null +++ b/CompactGUI/i18n/ru-RU.json @@ -0,0 +1,146 @@ +{ + "CompactGUI": "CompactGUI", + "Home": "Главная", + "Watcher": "Наблюдение", + "Compression DB": "БД сжатия", + "Admin": "Админ", + "Open": "Открыть", + "Exit": "Выход", + "Settings": "Настройки", + "Filetype Management": "Управление типами файлов", + "Manage local skipped filetypes": "Управление локальными пропускаемыми типами", + "edit": "изм.", + "Agression of online skiplist": "Агрессивность онлайн-списка пропуска", + "(?)": "(?)", + "medium": "средняя", + "high": "высокая", + "System Integration": "Интеграция в систему", + "Add to right-click context menu": "Добавить в контекстное меню", + "Add to start menu": "Добавить в меню Пуск", + "Show notification on completion": "Уведомлять по завершении", + "Start CompactGUI in system tray": "Запускать CompactGUI в трее", + "Compression Settings": "Настройки сжатия", + "Maximum Compression Threads": "Макс. потоков сжатия", + "HDDs only use 1 thread": "HDD используют только 1 поток", + "Estimate Compression for non-Steam Folders (beta)": "Оценка сжатия для не-Steam папок (бета)", + "Quickly parses over files and estimates their compression ratio without writing to disk. This will likely be super laggy on HDDs! ": "Быстро анализирует файлы и оценивает степень сжатия без записи на диск. На HDD это может сильно тормозить!", + "Background Watcher Settings": "Настройки фонового наблюдения", + "Monitor compressed folders for changes": "Следить за изменениями в сжатых папках", + "Compress folders:": "Сжимать папки:", + "Never": "Никогда", + "When System is Idle": "При простое системы", + "On Schedule": "По расписанию", + "On Schedule if system is also idle": "По расписанию (если простой)", + "every": "каждые", + "day(s)": "дн.", + "Last ran:": "Последний запуск:", + "Next scheduled:": "Следующий запуск:", + "Update Settings": "Настройки обновлений", + "Check for pre-release updates": "Проверять пре-релизные обновления", + "UI Settings": "Настройки интерфейса", + "Always show details on Compression Mode buttons": "Всегда показывать детали на кнопках режимов сжатия", + "Database Results": "Результаты из базы", + "Last Fetched:": "Последнее обновление:", + "Games": "Игры", + "Search by game name or SteamID...": "Поиск по названию или SteamID...", + "Sort By": "Сортировать по", + "Game Name": "Название игры", + "Ascending": "По возрастанию", + "Descending": "По убыванию", + "SteamID": "SteamID", + "Max Savings": "Макс. экономия", + "SteamID:": "SteamID:", + "MODE": "РЕЖИМ", + "BEFORE": "ДО", + "AFTER": "ПОСЛЕ", + "SAVINGS": "ЭКОНОМИЯ", + "TOTAL RESULTS": "ВСЕГО РЕЗУЛЬТАТОВ", + "UNCOMPRESSABLE FILETYPES": "НЕСЖИМАЕМЫЕ ТИПЫ ФАЙЛОВ", + "uncompressed size": "размер без сжатия", + "contained files": "файлов внутри", + "Compress Selected": "Сжать выбранное", + "select a folder": "выберите папку", + "Version": "Версия", + "Add Folder to Queue": "Добавить папку в очередь", + "Compression Mode": "Режим сжатия", + "Configuration": "Конфигурация", + "Skip file types specified in settings": "Пропускать типы файлов из настроек", + "files will be skipped": "файлов будет пропущено", + "Skip file types likely to compress poorly": "Пропускать плохо сжимаемые файлы", + "Watch folder for changes": "Следить за изменениями папки", + "Apply to all": "Применить ко всем", + "For Steam Games:": "Для игр Steam:", + "estimate is based on database results": "оценка основана на базе данных", + "For Non-Steam Folders:": "Для не-Steam папок:", + "estimate is calculated by block analysis.": "оценка вычисляется поблочным анализом.", + "If estimation is disabled, this will always show 0%": "Если оценка отключена, здесь всегда будет 0%", + "skips files based on database results": "пропускает файлы на основе базы данных", + "skips files based on compression estimate": "пропускает файлы на основе оценки сжатия", + "Compression Summary": "Сводка сжатия", + "Before": "До", + "After": "После", + "Space Saved": "Места сэкономлено", + "Files Compressed": "Файлов сжато", + "Uncompress": "Распаковать", + "Compress Again": "Сжать снова", + "Submit Results": "Отправить результаты", + "Estimated size": "Расчетный размер", + "Savings": "Экономия", + "unknown": "неизвестно", + "Watched Folders": "Наблюдаемые папки", + "Add a custom folder to the watchlist": "Добавить свою папку в список наблюдения", + "saved": "сэкономлено", + "Last analysed": "Последний анализ", + "Re-analyse all watched folders": "Переанализировать все папки", + "Cancel Background Compressor": "Отменить фоновое сжатие", + "Compress All Now": "Сжать всё сейчас", + "last compressed:": "последнее сжатие:", + "last modified:": "последнее изменение:", + "% decayed": "% устарело", + "Remove from Watchlist": "Удалить из списка", + "Add to compression queue": "Добавить в очередь сжатия", + "Re-analyse this folder": "Переанализировать эту папку", + "Not Compressed": "Не сжато", + "Compressed": "Сжато", + "Compress Folder": "Сжать папку", + "Invalid Folder": "Неверная папка", + "OK": "ОК", + "Unknown": "Неизвестно", + "days ago": "дн. назад", + "hours ago": "ч. назад", + "minutes ago": "мин. назад", + "just now": "только что", + "Awaiting Compression": "Ожидание сжатия", + "Analysing": "Анализ", + "Working": "Обработка", + "Scheduled Compression Running": "Запущено сжатие по расписанию", + "CompactGUI is running a scheduled task and will compress monitored folders in the background": "CompactGUI выполняет плановую задачу и сжимает наблюдаемые папки в фоне", + "Scheduled Compression Completed": "Плановое сжатие завершено", + "Next scheduled task is on": "Следующая задача:", + "Restart as Admin": "Перезапуск от Админа", + "Insufficient permission to access this folder.": "Недостаточно прав для доступа к папке.", + "Click to download": "Нажмите для скачивания", + "Update Available": "Доступно обновление", + "Failed to submit to wiki": "Не удалось отправить в вики", + "Please check your internet connection and try again": "Проверьте интернет и попробуйте снова", + "Submitted to wiki": "Отправлено в вики", + "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.": "Эта игра использует DirectStorage. Если вы используете эту функцию, не сжимайте эту игру.", + "You currently have": "Сейчас у вас", + "folders being watched. Closing CompactGUI will stop them from being monitored.": "папок под наблюдением. Закрытие CompactGUI остановит наблюдение.", + "Are you sure you want to exit?": "Вы уверены, что хотите выйти?", + "View on GitHub": "Открыть на GitHub", + "Buy me a coffee": "Купить мне кофе", + "GB saved": "ГБ сэкономлено", + "MB saved": "МБ сэкономлено", + "files being watched": "файлов наблюдается", + "Closing CompactGUI will stop them from being monitored.": "Закрытие CompactGUI остановит наблюдение.", + "Language (Requires Restart)": " Язык (Требуется перезагрузка)", + "folders being watched": "папок отслеживается", + "RestartRequired": "Настройки языка сохранены. Пожалуйста, перезапустите CompactGUI для применения изменений." +} \ No newline at end of file diff --git a/CompactGUI/i18n/zh-CN.json b/CompactGUI/i18n/zh-CN.json new file mode 100644 index 0000000..b95bbc9 --- /dev/null +++ b/CompactGUI/i18n/zh-CN.json @@ -0,0 +1,146 @@ +{ + "CompactGUI": "CompactGUI", + "Home": "主页", + "Watcher": "监控", + "Compression DB": "压缩数据库", + "Admin": "管理员", + "Open": "打开", + "Exit": "退出", + "Settings": "设置", + "Filetype Management": "文件类型管理", + "Manage local skipped filetypes": "管理本地跳过的文件类型", + "edit": "编辑", + "Agression of online skiplist": "在线跳过列表的激进程度", + "(?)": "(?)", + "medium": "中", + "high": "高", + "System Integration": "系统集成", + "Add to right-click context menu": "添加到右键菜单", + "Add to start menu": "添加到开始菜单", + "Show notification on completion": "完成后显示通知", + "Start CompactGUI in system tray": "在系统托盘启动 CompactGUI", + "Compression Settings": "压缩设置", + "Maximum Compression Threads": "最大压缩线程数", + "HDDs only use 1 thread": "HDD 仅使用 1 个线程", + "Estimate Compression for non-Steam Folders (beta)": "估算非 Steam 文件夹的压缩率 (测试版)", + "Quickly parses over files and estimates their compression ratio without writing to disk. This will likely be super laggy on HDDs! ": "快速解析文件并估算其压缩率,无需写入磁盘。这在 HDD 上可能会非常卡顿!", + "Background Watcher Settings": "后台监控设置", + "Monitor compressed folders for changes": "监控已压缩文件夹的更改", + "Compress folders:": "压缩文件夹:", + "Never": "从不", + "When System is Idle": "当系统空闲时", + "On Schedule": "按计划", + "On Schedule if system is also idle": "按计划且系统空闲时", + "every": "每", + "day(s)": "天", + "Last ran:": "上次运行:", + "Next scheduled:": "下次计划:", + "Update Settings": "更新设置", + "Check for pre-release updates": "检查预发布更新", + "UI Settings": "界面设置", + "Always show details on Compression Mode buttons": "始终显示压缩模式按钮的详细信息", + "Database Results": "数据库结果", + "Last Fetched:": "上次获取:", + "Games": "游戏", + "Search by game name or SteamID...": "按游戏名称或 SteamID 搜索...", + "Sort By": "排序方式", + "Game Name": "游戏名称", + "Ascending": "升序", + "Descending": "降序", + "SteamID": "SteamID", + "Max Savings": "最大节省", + "SteamID:": "SteamID:", + "MODE": "模式", + "BEFORE": "压缩前", + "AFTER": "压缩后", + "SAVINGS": "节省", + "TOTAL RESULTS": "总结果", + "UNCOMPRESSABLE FILETYPES": "不可压缩的文件类型", + "uncompressed size": "未压缩大小", + "contained files": "包含文件", + "Compress Selected": "压缩选中项", + "select a folder": "选择文件夹", + "Version": "版本", + "Add Folder to Queue": "添加文件夹到队列", + "Compression Mode": "压缩模式", + "Configuration": "配置", + "Skip file types specified in settings": "跳过设置中指定的文件类型", + "files will be skipped": "个文件将被跳过", + "Skip file types likely to compress poorly": "跳过可能压缩效果不佳的文件类型", + "Watch folder for changes": "监控文件夹更改", + "Apply to all": "应用到所有", + "For Steam Games:": "对于 Steam 游戏:", + "estimate is based on database results": "估算是基于数据库结果", + "For Non-Steam Folders:": "对于非 Steam 文件夹:", + "estimate is calculated by block analysis.": "估算是通过块分析计算的。", + "If estimation is disabled, this will always show 0%": "如果禁用估算,这里将始终显示 0%", + "skips files based on database results": "根据数据库结果跳过文件", + "skips files based on compression estimate": "根据压缩估算跳过文件", + "Compression Summary": "压缩摘要", + "Before": "压缩前", + "After": "压缩后", + "Space Saved": "节省空间", + "Files Compressed": "文件已压缩", + "Uncompress": "解压缩", + "Compress Again": "再次压缩", + "Submit Results": "提交结果", + "Estimated size": "预估大小", + "Savings": "节省", + "unknown": "未知", + "Watched Folders": "受监控文件夹", + "Add a custom folder to the watchlist": "添加自定义文件夹到监控列表", + "saved": "已节省", + "Last analysed": "上次分析", + "Re-analyse all watched folders": "重新分析所有受监控文件夹", + "Cancel Background Compressor": "取消后台压缩", + "Compress All Now": "立即全部压缩", + "last compressed:": "上次压缩:", + "last modified:": "上次修改:", + "% decayed": "% 已衰减", + "Remove from Watchlist": "从监控列表移除", + "Add to compression queue": "添加到压缩队列", + "Re-analyse this folder": "重新分析此文件夹", + "Not Compressed": "未压缩", + "Compressed": "已压缩", + "Compress Folder": "压缩文件夹", + "Invalid Folder": "无效文件夹", + "OK": "确定", + "Unknown": "未知", + "days ago": "天前", + "hours ago": "小时前", + "minutes ago": "分钟前", + "just now": "刚刚", + "Awaiting Compression": "等待压缩", + "Analysing": "正在分析", + "Working": "正在处理", + "Scheduled Compression Running": "计划任务正在运行", + "CompactGUI is running a scheduled task and will compress monitored folders in the background": "CompactGUI 正在运行计划任务,将在后台压缩受监控的文件夹", + "Scheduled Compression Completed": "计划压缩完成", + "Next scheduled task is on": "下次计划任务时间:", + "Restart as Admin": "以管理员身份重启", + "Insufficient permission to access this folder.": "没有权限访问此文件夹。", + "Click to download": "点击下载", + "Update Available": "有可用更新", + "Failed to submit to wiki": "提交到 Wiki 失败", + "Please check your internet connection and try again": "请检查您的网络连接并重试", + "Submitted to wiki": "已提交到 Wiki", + "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.": "此游戏使用 DirectStorage 技术。如果您正在使用此功能,则不应压缩此游戏。", + "You currently have": "您当前有", + "folders being watched. Closing CompactGUI will stop them from being monitored.": "个文件夹正在被监控。关闭 CompactGUI 将停止对它们的监控。", + "Are you sure you want to exit?": "确定要退出吗?", + "View on GitHub": "在 GitHub 查看", + "Buy me a coffee": "请我喝杯咖啡", + "GB saved": "GB 已节省", + "MB saved": "MB 已节省", + "files being watched": "个文件正在被监控", + "Closing CompactGUI will stop them from being monitored.": "关闭 CompactGUI 将停止监控这些文件。", + "Language (Requires Restart)": " 语言 (需要重启)", + "folders being watched": "个文件夹正在被监控", + "RestartRequired": "语言设置已保存,请重启软件以生效。" +} \ No newline at end of file