Skip to main content

add-locale

Adds a new locale to RunCat365. Use when adding a new language, creating a Strings.{lc}.resx file, registering a CultureInfo, or extending SupportedLanguage.cs with a new entry.

Source facts

Repository
runcat-dev/RunCat365
Last source activity
June 7, 2026 at 05:35
Detected SKILL.md language
English
Stars
10,336
Forks
846

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
add-locale
description
Adds a new locale to RunCat365. Use when adding a new language, creating a Strings.{lc}.resx file, registering a CultureInfo, or extending SupportedLanguage.cs with a new entry.
argument-hint
<language name or BCP 47 code>
# Add a New Locale to RunCat365 Modify 3 files to add support for `$ARGUMENTS`. French (`fr`) is used as an example. ## Steps ### 1. Create `RunCat365/Properties/Strings.{lc}.resx` Read `RunCat365/Properties/Strings.resx` for all keys and their English values. Use `Strings.es.resx` as the structural template. - File name: `Strings.{lc}.resx` (e.g. `Strings.fr.resx`) - Copy the XML header, schema, and `<resheader>` blocks verbatim from `Strings.es.resx` - Include every key from `Strings.resx` — no more, no less — with each `<value>` translated - Keep all attribute names, XML structure, and `<comment>` content in English; translate only `<value>` text - Verify every key from `Strings.resx` is present in the new file ### 2. Edit `RunCat365/SupportedLanguage.cs` Keep the `SupportedLanguage` enum and every `switch` arm sorted **alphabetically by enum identifier** (e.g. `French` before `German` before `Japanese`). Insert the new language at its alphabetical position in each location below — do not append. Add the language to the `SupportedLanguage` enum: ```csharp enum SupportedLanguage { English, French, Japanese, Spanish, } ``` Add the ISO code to `GetCurrentLanguage()` (arms ordered by enum identifier, so `"fr"` appears before `"ja"` even though the ISO codes aren't themselves alphabetical): ```csharp return culture.TwoLetterISOLanguageName switch { "fr" => SupportedLanguage.French, "ja" => SupportedLanguage.Japanese, "es" => SupportedLanguage.Spanish, _ => SupportedLanguage.English, }; ``` Add the culture to `GetDefaultCultureInfo()`: ```csharp return language switch { SupportedLanguage.French => new CultureInfo("fr-FR"), SupportedLanguage.Japanese => new CultureInfo("ja-JP"), SupportedLanguage.Spanish => new CultureInfo("es-ES"), _ => new CultureInfo("en-US"), }; ``` Add the font to `GetFontName()` — use `"Consolas"` for Latin-script languages: ```csharp return language switch { SupportedLanguage.French => "Consolas", SupportedLanguage.Japanese => "Noto Sans JP", SupportedLanguage.Spanish => "Consolas", _ => "Consolas", }; ``` Add the full-width flag to `IsFullWidth()` — use `false` for Latin-script languages: ```csharp return language switch { SupportedLanguage.French => false, SupportedLanguage.Japanese => true, SupportedLanguage.Spanish => false, _ => false, }; ``` ### 3. Update `README.md` Add the new language to the **Installation** → **Language:** list, preserving the existing alphabetical order by English display name (e.g. `French` between `English (default)` and `German`). Match the existing two-space indentation under the `- Language:` bullet. ## Checklist - [ ] Created `Strings.{lc}.resx` with all keys translated - [ ] Added language to the `SupportedLanguage` enum - [ ] Added ISO code to `GetCurrentLanguage()` - [ ] Added culture to `GetDefaultCultureInfo()` - [ ] Added font to `GetFontName()` - [ ] Added full-width flag to `IsFullWidth()` - [ ] Added the language to the Installation language list in `README.md` - [ ] Built in Visual Studio and verified UI with OS language set to the target language
View on GitHub