I believe the string fault is in the MUI, which was clearly never updated. So, I think the code produced is sufficient. Thanks for updating! I'm just compiling the new binary.
A test version is available (Not stable) v2.1.0 (expires 15.2.2020): Removed deprecated beta. If anyone willing could run an 'In-Depth' assessment and send me their session log, that would be great. The session log contains your culture name, operating system and strings I can translate to make your language compatible. This will also help me problem solve and compare data. Instructions: 1. Open Xiret. For non Windows 10 users some fonts may be installed for full compatibility. 2. Click 'Tools > Run In-Depth Assessment' or just use shortcut 'Alt+V' and the assessment will start. 3. Wait for the assessment to complete, then click 'Export Session' (Enabled after the assessment completed). 4. Save the text file and upload it whichever way you like. A clean virus total report and other details are included with the download. Currently implemented: Code: en-GB, en-US, es-ES, de-DE
Hmm, in the attached it's reported that the primary monitor size is 1280 X 720, but in fact it's 1920x1080. Same for the resolution set in Windows. I'm guessing this is the result you get from WEI, and there's nothing you can do about it? You pretty much nailed it with the Metrics window. Focused + hovered + clicked states are looking great, and you are caching open tabs for the window's lifetime. Great work! I'm probably asking too much here, but can you do something about the colored line not showing up immediately (when clicking a tab that takes time to gather information, like D3DAssessment) in Metrics? Edit: Oh, also, in the main UI the letter i in "Disk" in "Primary Hard DIsk" is capitalized. Edit #2: The "Last Update" on the main UI may be perceived by some users as "last update to Xiret" and not as "last assessment". WDYT?
Hey thanks for testing. Unfortunately I cannot do anything. You're correct as it's a direct output from the core of WinSAT.exe. Also I doubt I'll fix the UI (this isn't a no), there's only so much I can do with VB.NET and non-XAML components; fixing that would be wasting time. I also find it hard to optimize in VB.NET as opposed to C#. Thanks for the feedback on the previous changes. I've corrected the capitalized 'I' in "Primary Hard Disk", and another good mention, I have changed "Last Update" to "Last Assessment". I took a look at your Session Log as 'he-IL', but it seems your system is in English. I think that the detection isn't working properly. I'll look into it. Again sorry for the time taken, this application is really at the back of my pile and I find it hard to go back each time now I've permanently switched to C#. VB is hard garbage.
Hmm? Not sure what you mean. My system is indeed set to he-IL, both in the system language and region settings.
In that case he-IL must not be translated for WinSAT. I can leave it as default then. I'm thinking of doing common lang, and leaving it at that. Don't get me wrong, I want this release to be good but precious time is being taken by this application now.
Just let users create an own translation.ini which is read by the program. Not having the correct WinSAT language strings provokes errors.
Its doesnt really cause an error, more or less its solely to do with the status label updating; whereas when someone is running a normal assessment they don't get proper status updates.
Built in languages removed --- > replaced with lang.ini. If lang.ini is missing then default values are set (en-GB/US). See code below. "lang.ini" is expected alongside the application and can be translated per user; then if you want, can share it to a database I will post here. If a database is shared please include your culture name, otherwise it will be rejected. Example: ja-JP... This is to ease adding each language to a shared database and testing it. Code: Private Shared ReadOnly IniFile As String = Path.Combine(Directories.AppPath, "Lang.ini") Code: Friend Shared Function SetCultureStrings() As Boolean If File.Exists(IniFile) Then SetIniStrings() Return True Else SetDefaultStrings() Return False End If End Function Private Shared Sub SetDefaultStrings() FeatureEnumStr = "Feature Enumeration" MediaFoundationStr = "Media Foundation Playback " ExtendedMediaStr = "Extended Media Assessment" MediaEncodeStr = "Media Decode/Encode" MemoryStr = "System memory performance" StorageStr = "Storage Assessment" End Sub Private Shared Sub SetIniStrings() Try FeatureEnumStr = GetIniValue("Keys", "FeatureEnum", IniFile) MediaFoundationStr = GetIniValue("Keys", "MediaFound", IniFile) ExtendedMediaStr = GetIniValue("Keys", "MediaExtend", IniFile) MediaEncodeStr = GetIniValue("Keys", "MediaEncode", IniFile) MemoryStr = GetIniValue("Keys", "Memory", IniFile) StorageStr = GetIniValue("Keys", "Storage", IniFile) Catch MessageBox.Show("A fault was found in 'lang.ini', and defaults were set." & vbCrLf & vbCrLf & "Please check the ini key names.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning) SetDefaultStrings() End Try End Sub More instructions to come on how to build a custom file (Easy difficulty). Thanks can go to @Carlos Detweiller for the suggestion. Ini should have been used for settings too.
Will lang.ini contain multiple language strings? If Locale/culture matches, the appropriate section will be used. No match = fallback to standard English.
I hate Google's ReCaptcha. I'm not using a mainstream browser, so, I sure know a lot of bridges, cars, buses and fire hydrants. Oh, and stairs. Every Captcha is broken by design, as soon as you use non-mainstream stuff, they break easily.
@Carlos Detweiller Here is the new process. Check for Lang.INI, if missing defaults are set. If Lang.INI present check for matching culture and set strings, if culture is not present, set defaults. Simple. To combat the translation issue for de-DE on Windows Vista, 7, this is the language string I have selected: Code: Wird ausgeführt: Bewertung der Systemspeiche Cut off text from 'rl', or 'lr'. Here is Lang.INI so far - 'FeatureEnumStr' is now removed as I've found a better way: Code: [de-DE] ;German MediaFound="Wird ausgeführt: Media Foundation-Wiedergabebewertung" MediaExtend="Wird ausgeführt: Erweiterte Medienbewertung" MediaEncode="Wird ausgeführt: Bewertung der Mediendecodierung/-codierung" Memory="Wird ausgeführt: Bewertung der Systemspeiche" ;Systemspeiche aus Kompatibilitätsgründen. Storage="Wird ausgeführt: Speicherbewertung" [es-ES] ;Spanish MediaFound="En ejecución: Evaluación de reproducción de Media Foundation" MediaExtend="En ejecución: Evaluación multimedia extendida" MediaEncode="En ejecución: Evaluación de codificación/descodificación de medios" Memory="En ejecución: Evaluación del rendimiento de la memoria del sistema" Storage="En ejecución: Evaluación de almacenamiento" [fr-FR] ;French MediaFound="En cours d?exécution : Évaluation de la lecture de Media Foundation" MediaExtend="En cours d?exécution : Évaluation étendue de média" MediaEncode="En cours d?exécution : Évaluation étendue de média" Memory="En cours d?exécution : Évaluation des performances de la mémoire système" Storage="En cours d?exécution : Évaluation du stockage" [it-IT] ;Italian MediaFound="In esecuzione: Valutazione riproduzione di Media Foundation" MediaExtend="In esecuzione: Valutazione contenuti multimediali estesa" MediaEncode="In esecuzione: Valutazione della codifica/decodifica dei file multimediali" Memory="In esecuzione: Valutazione delle prestazioni della memoria di sistema" Storage="In esecuzione: Valutazione archiviazione" [nl-NL] ;Netherlands MediaFound="Actief: Afspelen met behulp van Media Foundation bepalen" MediaExtend="Actief: Uitgebreide mediabepaling" MediaEncode="Actief: Decodering/codering van media bepalen" Memory="Actief: Systeemgeheugenprestaties bepalen" Storage="Actief: Opslag bepalen" [nl-BE] ;Belgium MediaFound="Actief: Afspelen met behulp van Media Foundation bepalen" MediaExtend="Actief: Uitgebreide mediabepaling" MediaEncode="Actief: Decodering/codering van media bepalen" Memory="Actief: Systeemgeheugenprestaties bepalen" Storage="Actief: Opslag bepalen" [pl-PL] ;Polish MediaFound="Dzia?a: Ocena wydajno?ci odtwarzania platformy Media Foundation" MediaExtend="Dzia?a: Rozszerzona ocena no?nika" MediaEncode="Dzia?a: Ocena wydajno?ci kodowania/dekodowania multimediów" Memory="Dzia?a: Ocena wydajno?ci pami?ci systemowej" Storage="Dzia?a: Ocena magazynu" [pt-BR] ;Portuguese Brazil MediaFound="Executando: Avaliaç?o de Reproduç?o do Media Foundation" MediaExtend="Executando: Avaliaç?o de Mídia Estendida" MediaEncode="Executando: Avaliaç?o de Decodificaç?o/Codificaç?o de Mídia" Memory="Executando: Avaliaç?o de desempenho da memória do sistema" Storage="Executando: Avaliaç?o de Armazenamento" [pt-PT] ;Portuguese MediaFound="Em execuç?o: Avaliaç?o da Reproduç?o de Media Foundation" MediaExtend="Em execuç?o: Avaliaç?o de Multimédia Expandida" MediaEncode="Em execuç?o: Avaliaç?o de Descodificaç?o/Codificaç?o de Multimédia" Memory="Em execuç?o: Avaliaç?o de desempenho da memória do sistema" Storage="Em execuç?o: Avaliaç?o de Memória" [Keys] ;Default MediaFound="" MediaExtend="" MediaEncode="" Memory="" Storage="" ;This is not a language file, but a compatility file for the assessment code. ;It must carry a filename of 'Lang.INI' and be stored alongside Xiret. ;This file is not necessary on english language systems. Cultures not needed [Russian], ... Tested working on all operating systems for de-DE, no workarounds needed. I will release BETA2 later, so don't worry about testing the previous version.
I don't follow all this but last I heard it was today. Sorry no BETA2 tonight, time for sleep and my domain is still down. However, I tried 50+ tests on all languages with no issues.
Introduced new method for 'Tools > Reset > Configuration': Code: 'Enumerate configs + storage files Dim HS As New List(Of String) From { Settings.AppdataSettingsPath, 'Settings (Appdata) Settings.LocalSettingsPath, 'Settings (Local) Settings.LangPath, 'Lang.ini Settings.AssessmentLogPath, 'Log file Settings.ImgurUrlsPath 'Imgur URL storage } 'Delete files in list ^ For Each Hit As String In HS If File.Exists(Hit) Then File.Delete(Hit) End If Next 'Delete application directory If Directory.Exists(Settings.AppdataDir) Then Directory.Delete(Settings.AppdataDir) End If
I am going to change Lang.ini to another name, a few people have asked the same thing 'is it a language file' I'm getting ready for release, and writing a read-me for the application. Maybe remove troubleshooting and open read-me instead.