Skip to content

Conversation

@Kyome22
Copy link
Owner

@Kyome22 Kyome22 commented Jan 10, 2026

Context of Contribution

  • Bug Fix
  • Refactoring
  • New Feature
  • Others

Summary of the Proposal

Build a foundation for multi-language support.
Initially, I will support two languages: English and Japanese.

Reason for the new feature

Ref: #225

Checklist

  • This PR does not contain commits of multiple contexts.
  • Code follows proper indentation and naming conventions.
  • Implemented using only APIs that can be submitted to the Microsoft Store.
  • Works correctly in both dark theme and light theme.
  • Works correctly on any device.

Kyome22 and others added 10 commits January 10, 2026 14:51
Implemented comprehensive localization infrastructure using .NET
resource files (.resx) to support multiple languages with proper
separation of concerns.

Changes:
- Created Strings.resx (English) and Strings.ja.resx (Japanese)
- Auto-generated Strings.Designer.cs for type-safe resource access
- Added GetLocalizedString() methods to all enum extensions:
  * ThemeExtension.GetLocalizedString()
  * RunnerExtension.GetLocalizedString()
  * FPSMaxLimitExtension.GetLocalizedString()
- Updated ContextMenuManager to use localized strings for:
  * All menu items (Runners, Theme, Settings, etc.)
  * Balloon tip messages
  * Warning dialogs
- Updated EndlessGameForm window title

Architecture:
- All UI strings centralized in Strings.resx files
- Existing GetString() methods preserved for internal logic
- New GetLocalizedString() methods for UI display
- Language automatically detected from system culture
- Type-safe: compile-time checking prevents typos

Japanese translations:
- Runners → ランナー
- Theme → テーマ
- Settings → 設定
- Cat → 猫, Parrot → オウム, Horse → 馬
- All menu items and messages fully translated

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request implements multi-language support for RunCat365, initially supporting English and Japanese. The implementation follows .NET localization best practices using resource files (.resx) to manage translated strings.

Changes:

  • Added resource files for English (default) and Japanese localization
  • Introduced a TreeFormatter utility class to standardize tree-like text output formatting
  • Updated all user-facing strings throughout the application to use localized resources
  • Enhanced menu item selection with Tag-based identification to support localized text

Reviewed changes

Copilot reviewed 13 out of 14 changed files in this pull request and generated no comments.

Show a summary per file
File Description
TreeFormatter.cs New utility class providing consistent formatting for tree-structured text output in system information displays
Properties/Strings.resx Default English resource file containing all user-facing strings
Properties/Strings.ja.resx Japanese resource file with translated strings
Properties/Strings.Designer.cs Auto-generated strongly-typed resource accessor class
Program.cs Added DEBUG conditional code to manually set culture for testing purposes
Theme.cs Added GetLocalizedString method to return translated theme names
Runner.cs Added GetLocalizedString method to return translated runner names
CPURepository.cs Updated to use localized strings and TreeFormatter for consistent output
MemoryRepository.cs Updated to use localized strings and TreeFormatter for consistent output
StorageRepository.cs Updated to use localized strings and TreeFormatter for consistent output
NetworkRepository.cs Updated to use localized strings and TreeFormatter for consistent output
EndlessGameForm.cs Updated window title and in-game text to use localized strings; changed fonts for better international character support
CustomToolStripMenuItem.cs Enhanced to store enum values in Tag property for locale-independent menu item identification
ContextMenuManager.cs Updated all menu items to use localized strings; enhanced selection logic to use Tag-based identification with text-based fallback
Files not reviewed (1)
  • RunCat365/Properties/Strings.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Kyome22 Kyome22 moved this to In progress in RunCat365 Task Jan 10, 2026
@Kyome22 Kyome22 merged commit f0abd5f into main Jan 10, 2026
6 checks passed
@Kyome22 Kyome22 deleted the localization branch January 10, 2026 08:59
@github-project-automation github-project-automation bot moved this from In progress to Done in RunCat365 Task Jan 10, 2026
@Kyome22 Kyome22 mentioned this pull request Jan 10, 2026
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants