Repository navigation
Conversation
There was a problem hiding this comment.
🔵 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"> | |||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

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.