Adds a new language locale to RunCat365. Use when adding a new language, translating the UI, creating a .resx resource file, or updating SupportedLanguage.cs with a new language code.
Modify 3 files to add support for $ARGUMENTS. French (fr) is used as an example.
RunCat365/Properties/Strings.{lc}.resxRead RunCat365/Properties/Strings.resx for all keys and their English values.
Use Strings.es.resx as the structural template.
Strings.{lc}.resx (e.g. Strings.fr.resx)<resheader> blocks verbatim from Strings.es.resxStrings.resx — no more, no less — with each <value> translated<comment> content in English; translate only <value> textStrings.resx is present in the new fileRunCat365/SupportedLanguage.csAdd the language to the SupportedLanguage enum:
enum SupportedLanguage
{
English,
Japanese,
Spanish,
French,
}
Add the ISO code to GetCurrentLanguage():
return culture.TwoLetterISOLanguageName switch
{
"ja" => SupportedLanguage.Japanese,
"es" => SupportedLanguage.Spanish,
"fr" => SupportedLanguage.French,
_ => SupportedLanguage.English,
};
Add the culture to GetDefaultCultureInfo():
return language switch
{
SupportedLanguage.Japanese => new CultureInfo("ja-JP"),
SupportedLanguage.Spanish => new CultureInfo("es-ES"),
SupportedLanguage.French => new CultureInfo("fr-FR"),
_ => new CultureInfo("en-US"),
};
Add the font to GetFontName() — use "Consolas" for Latin-script languages:
return language switch
{
SupportedLanguage.Japanese => "Noto Sans JP",
SupportedLanguage.Spanish => "Consolas",
SupportedLanguage.French => "Consolas",
_ => "Consolas",
};
Add the full-width flag to IsFullWidth() — use false for Latin-script languages:
return language switch
{
SupportedLanguage.Japanese => true,
SupportedLanguage.Spanish => false,
SupportedLanguage.French => false,
_ => false,
};
CLAUDE.mdUpdate the Localization notes to include the new language:
**Localization notes:**
- Add new strings to all four `.resx` files simultaneously
- Japanese uses "Noto Sans JP" font; English/Spanish/French use "Consolas"
Strings.{lc}.resx with all keys translatedSupportedLanguage enumGetCurrentLanguage()GetDefaultCultureInfo()GetFontName()IsFullWidth()CLAUDE.md