2
0

Add brightness/contrast sliders, input source switching, and 9-language localization

- Add VCP commands for brightness (10), contrast (12), input source (60)
- Fix UTF-16 encoding for monitor data parsing
- Add system tray app with monitor controls
- Add localization for en, es, fr, de, zh, ja, pt, it, hi
- Update to .NET 9.0
- Add LICENSE and README

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-03 22:11:35 -05:00
parent 6b656ead2d
commit 0352c6b755
34 changed files with 1640 additions and 158 deletions

View File

@@ -54,12 +54,48 @@ namespace CMM.Language
var Languages = new List<string>();
string uriPath = ResourceLocalPath + "/" + LanguageFileName;
Languages.Add(uriPath + ".en-US.xaml");
Languages.Add(uriPath + ".zh-TW.xaml");
Languages.Add(uriPath + ".en.xaml");
Languages.Add(uriPath + ".es.xaml");
Languages.Add(uriPath + ".fr.xaml");
Languages.Add(uriPath + ".de.xaml");
Languages.Add(uriPath + ".zh.xaml");
Languages.Add(uriPath + ".ja.xaml");
Languages.Add(uriPath + ".pt.xaml");
Languages.Add(uriPath + ".it.xaml");
Languages.Add(uriPath + ".hi.xaml");
return Languages;
}
/// <summary>
/// Auto-detect and apply system language
/// </summary>
public void ApplySystemLanguage()
{
var systemCulture = CultureInfo.CurrentUICulture;
var matchedCulture = FindBestMatchingCulture(systemCulture);
ChangeCulture(matchedCulture);
}
/// <summary>
/// Find the best matching supported culture for the given culture
/// </summary>
private CultureInfo FindBestMatchingCulture(CultureInfo culture)
{
// Try exact match first
var exactMatch = SupportedCultures.FirstOrDefault(c =>
c.Name.Equals(culture.Name, StringComparison.OrdinalIgnoreCase));
if (exactMatch != null) return exactMatch;
// Try matching by two-letter ISO language name
var languageMatch = SupportedCultures.FirstOrDefault(c =>
c.TwoLetterISOLanguageName.Equals(culture.TwoLetterISOLanguageName, StringComparison.OrdinalIgnoreCase));
if (languageMatch != null) return languageMatch;
// Default to English
return SupportedCultures.FirstOrDefault(c => c.Name == "en") ?? SupportedCultures.First();
}
public void ChangeCulture(string cultureName)
{
var cultureInfo = CultureInfo.GetCultureInfo(cultureName);