Skip to content

Add Russian (ru-RU) localization - #149

Open
test6925 wants to merge 2 commits into
TheJoeFin:mainfrom
test6925:add-russian-localization
Open

test6925 wants to merge 2 commits into
TheJoeFin:mainfrom
test6925:add-russian-localization

Conversation

@test6925

@test6925 test6925 commented Oct 22, 2026 •

Copy link
Copy Markdown

Adds Russian (ru-RU) to Traydio's language picker and includes 472 translated resource entries. Closes #148.

The contribution covers the main screens, search and filters, mini-player, context menus, station settings, import/export, notifications, and application messages. It extracts 179 additional English resources from previously hardcoded UI text while preserving all 293 existing English resource values. Every language receives the native Russian picker label, Русский.

A platform independent LocalizedText helper keeps policy code usable in the existing test project, with four culture regression cases for en-US, ru-RU, uk-UA, and de-DE. The mini-player title lookup uses the slash syntax required by MRT Core. An existing embedded NUL in the grouping policy is expressed as a C# escape so its localization changes are readable in the diff.

Validation performed while preparing this PR: the original patch applied cleanly to d75b443; all resource and XAML files parse; all 472 English/Russian keys match, values are nonempty, and placeholder indexes and counts match; new XAML and code references resolve to existing resources; language registration matches the picker; git diff --check passes. All 472 Russian translation values match the ZIP attached to #148.

The ZIP's validation notes report 283 passing tests under each of the four cultures. Those tests were not rerun while preparing this PR, following the repository's CLAUDE.md instruction on restore, build, and test commands. Windows compilation, UI layout, and language switching still require CI and maintainer review.

Prepared with AI assistance.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Windows compilation, localized layout, and language switching still require CI and maintainer validation before approval.

2 open issues
What changed in this PR

Adds Russian localization to Traydio’s existing language system, addressing #148 and extending resource-based text across the interface.

Changes:

  • Adds 472 Russian resources and registers Русский in the language picker.
  • Extracts 179 additional English resources while preserving existing English resource values.
  • Introduces a platform-independent localization helper and four culture regression cases.
File Description
Trdo/​ViewModels/​SettingsViewModel.cs Localizes playback descriptions and timeout text.
Trdo/​ViewModels/​SearchStationViewModel.cs Localizes filters, sorting options, and errors.
Trdo/​ViewModels/​PlayerViewModel.cs Localizes player labels and default names.
Trdo/​ViewModels/​AddStationViewModel.cs Localizes station setting summaries.
Trdo/​ViewModels/​AboutViewModel.cs Localizes application and database descriptions.
Trdo/​Strings/​zh-CN/​Resources.resw Adds the Russian picker label.
Trdo/​Strings/​ru-RU/​Resources.resw Adds Russian translations.
Trdo/​Strings/​pt-PT/​Resources.resw Adds the Russian picker label.
Trdo/​Strings/​pt-BR/​Resources.resw Adds the Russian picker label.
Trdo/​Strings/​pl-PL/​Resources.resw Adds the Russian picker label.
Trdo/​Strings/​fr-FR/​Resources.resw Adds the Russian picker label.
Trdo/​Strings/​es-ES/​Resources.resw Adds the Russian picker label.
Trdo/​Strings/​en-US/​Resources.resw Adds English resources for extracted text.
Trdo/​Strings/​de-DE/​Resources.resw Adds the Russian picker label.
Trdo/​Strings/​ar-SA/​Resources.resw Adds the Russian picker label.
Trdo/​Services/​StreamWatchdogService.cs Localizes buffer level descriptions.
Trdo/​Services/​StationSortPolicy.cs Localizes sorting labels and hints.
Trdo/​Services/​StationMetadataBackfillService.cs Localizes station detail summaries.
Trdo/​Services/​SongChangeAnnouncementPolicy.cs Centralizes localized duration formatting.
Trdo/​Services/​LocalizedText.cs Adds resource lookup and formatting abstraction.
Trdo/​Services/​LocalizationService.cs Registers Russian and installs the resolver.
Trdo/​Pages/​SettingsPage.xaml.cs Localizes operation status messages.
Trdo/​Pages/​SettingsPage.xaml Adds the Russian picker option.
Trdo/​Pages/​SearchStation.xaml Connects search controls to resources.
Trdo/​Pages/​PlayingPage.xaml.cs Localizes dialogs, menus, and progress messages.
Trdo/​Pages/​PlayingPage.xaml Localizes player tooltips.
Trdo/​Pages/​NowPlayingPage.xaml Localizes the favorite-history tooltip.
Trdo/​Pages/​FavoritesPage.xaml.cs Localizes export dialogs and messages.
Trdo/​Pages/​FavoritesPage.xaml Localizes menu text and accessibility labels.
Trdo/​Pages/​AddWhiteNoise.xaml Localizes the volume accessibility label.
Trdo/​Models/​StationFilterOption.cs Localizes filter labels and counts.
Trdo/​Models/​FavoriteTrack.cs Localizes export timestamp text.
Trdo/​Controls/​SongChangePopupWindow.xaml.cs Localizes popup accessibility text and menus.
Trdo/​Controls/​MiniPlayerWindow.xaml.cs Resolves the localized window title.
Trdo/​Controls/​MiniPlayerWindow.xaml Localizes mini-player menu labels.
Trdo/​Controls/​ManualStationWindow.xaml Localizes buttons and slider accessibility labels.
Trdo/​Controls/​AddLocalMusicWindow.xaml Localizes the volume accessibility label.
Trdo.Tests/​Trdo.Tests.csproj Includes the platform-independent helper.
Trdo.Tests/​LocalizedTextCultureTests.cs Checks English duration fallbacks across four cultures.

Review effort: Balanced

: languageTag;

ApplicationLanguages.PrimaryLanguageOverride = effectiveTag;
LocalizedText.SetResolver(GetString);
@@ -0,0 +1,1481 @@
<?xml version='1.0' encoding='utf-8'?>
<root xmlns:ns1="urn:schemas-microsoft-com:xml-msdata" xmlns:xs="http://www.w3.org/2001/XMLSchema">
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Russian (ru-RU) localization using a prepared translation

2 participants