Skip to content

feat(i18n): add locale and import path - #191

Merged
YumeYuka merged 2 commits into
refactor-simplify-runtime-start-stopfrom
i18n-locale-import-path
Sep 27, 2026
Merged

YumeYuka merged 2 commits into
refactor-simplify-runtime-start-stopfrom
i18n-locale-import-path

Conversation

@YumeLira

Copy link
Copy Markdown
Collaborator

No description provided.

@sourcery-ai sourcery-ai Bot 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.

Sorry @YumeLira, your pull request is larger than the review limit of 500,000 diff characters

@YumeLira
YumeLira added this pull request to stack #190 September 27, 2026 11:54
@YumeLira
YumeLira requested a lite review from Copilot September 27, 2026 11:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Resolve the CI task, dependency exposure, and Traditional Chinese locale fallback issues.

Review effort: Lite
Findings: 2 High severity · 1 Medium severity

Open (3)
What changed in this PR

Migrates localization from FYTxt to Lyricist/KSP and updates locale imports and providers across the project.

Changes:

  • Adds Lyricist locale definitions and generated sources.
  • Removes legacy FYTxt catalogs and dependencies.
  • Updates localization consumers, repositories, and third-party documentation.

Open items include stale Qodana task configuration, Lyricist dependency visibility, and incomplete Traditional Chinese locale normalization.

File Reviewed change
ui/​src/​presentation/​util/​ProfileUiExtensions.kt Localization migration
ui/​src/​presentation/​theme/​Theme.kt Locale provider migration
ui/​src/​presentation/​component/​SearchStatusUi.kt Localization migration
ui/​src/​presentation/​component/​ProfileCard.kt Localization migration
ui/​src/​presentation/​component/​NullableSelector.kt Localization migration
ui/​src/​presentation/​component/​MessageHost.kt Localization migration
ui/​src/​presentation/​component/​LoadingAnimation.kt Localization migration
ui/​src/​presentation/​component/​EditBottomSheet.kt Localization migration
ui/​src/​presentation/​component/​DialogButtonRow.kt Localization migration
ui/​src/​presentation/​component/​CountryFlagCircle.kt Localization migration
ui/​src/​presentation/​component/​ConfirmDialog.kt Localization migration
ui/​src/​presentation/​component/​ConfigInput.kt Localization migration
ui/​src/​presentation/​component/​BottomBar.kt Localization migration
ui/​src/​presentation/​component/​AppFormDialog.kt Localization migration
ui/​src/​presentation/​component/​AppDialogContent.kt Localization migration
ui/​src/​presentation/​component/​AppConfirmDialog.kt Localization migration
ui/​src/​presentation/​component/​AppActionBottomSheet.kt Localization migration
settings.gradle.kts Repository configuration update
runtime/​service/​src/​runtime/​service/​root/​RootAccessSupport.kt Localization migration
runtime/​service/​src/​runtime/​service/​ProxyTileService.kt Localization migration
runtime/​service/​src/​runtime/​service/​notification/​ServiceNotificationManager.kt Localization migration
runtime/​service/​src/​runtime/​service/​notification/​NotificationPresentation.kt Localization migration
runtime/​service/​src/​runtime/​service/​notification/​MiuiIslandParams.kt Localization migration
runtime/​service/​src/​runtime/​service/​DialerReceiver.kt Localization migration
locale/​src/​ZhStrings.kt Locale definition
locale/​src/​ZhHansStrings.kt Locale definition
locale/​src/​Util.kt Locale utility migration
locale/​src/​RuStrings.kt Locale definition
locale/​src/​OpenSourceLicenses.kt Locale definition
locale/​src/​JaStrings.kt Locale definition
locale/​src/​EnStrings.kt Locale definition
locale/​lang/​zh/​Util.fvv Legacy catalog removal
locale/​lang/​zh/​TrafficStatistics.fvv Legacy catalog removal
locale/​lang/​zh/​Settings.fvv Legacy catalog removal
locale/​lang/​zh/​Service.fvv Legacy catalog removal
locale/​lang/​zh/​Rules.fvv Legacy catalog removal
locale/​lang/​zh/​Proxy.fvv Legacy catalog removal
locale/​lang/​zh/​Providers.fvv Legacy catalog removal
locale/​lang/​zh/​ProfilesVM.fvv Legacy catalog removal
locale/​lang/​zh/​Override.fvv Legacy catalog removal
locale/​lang/​zh/​OpenSourceLicenses.fvv Legacy catalog removal
locale/​lang/​zh/​Onboarding.fvv Legacy catalog removal
locale/​lang/​zh/​MetaFeature.fvv Legacy catalog removal
locale/​lang/​zh/​Log.fvv Legacy catalog removal
locale/​lang/​zh/​Home.fvv Legacy catalog removal
locale/​lang/​zh/​Editor.fvv Legacy catalog removal
locale/​lang/​zh/​Connection.fvv Legacy catalog removal
locale/​lang/​zh/​Component.fvv Legacy catalog removal
locale/​lang/​zh/​AppSettings.fvv Legacy catalog removal
locale/​lang/​zh/​AccessControl.fvv Legacy catalog removal
locale/​lang/​zh/​About.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Util.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​TrafficStatistics.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Settings.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Service.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Rules.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Proxy.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Providers.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​ProfilesVM.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​ProfilesPage.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Override.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​OpenSourceLicenses.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Onboarding.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​MetaFeature.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Log.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Home.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Feature.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Editor.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Connection.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​Component.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​AppSettings.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​AccessControl.fvv Legacy catalog removal
locale/​lang/​zh_Hans/​About.fvv Legacy catalog removal
locale/​lang/​ru/​Util.fvv Legacy catalog removal
locale/​lang/​ru/​TrafficStatistics.fvv Legacy catalog removal
locale/​lang/​ru/​Settings.fvv Legacy catalog removal
locale/​lang/​ru/​Service.fvv Legacy catalog removal
locale/​lang/​ru/​Rules.fvv Legacy catalog removal
locale/​lang/​ru/​Proxy.fvv Legacy catalog removal
locale/​lang/​ru/​Providers.fvv Legacy catalog removal
locale/​lang/​ru/​ProfilesVM.fvv Legacy catalog removal
locale/​lang/​ru/​Override.fvv Legacy catalog removal
locale/​lang/​ru/​OpenSourceLicenses.fvv Legacy catalog removal
locale/​lang/​ru/​Onboarding.fvv Legacy catalog removal
locale/​lang/​ru/​MetaFeature.fvv Legacy catalog removal
locale/​lang/​ru/​Log.fvv Legacy catalog removal
locale/​lang/​ru/​Home.fvv Legacy catalog removal
locale/​lang/​ru/​Editor.fvv Legacy catalog removal
locale/​lang/​ru/​Connection.fvv Legacy catalog removal
locale/​lang/​ru/​Component.fvv Legacy catalog removal
locale/​lang/​ru/​AppSettings.fvv Legacy catalog removal
locale/​lang/​ru/​AccessControl.fvv Legacy catalog removal
locale/​lang/​ru/​About.fvv Legacy catalog removal
locale/​lang/​ja/​Util.fvv Legacy catalog removal
locale/​lang/​ja/​TrafficStatistics.fvv Legacy catalog removal
locale/​lang/​ja/​Settings.fvv Legacy catalog removal
locale/​lang/​ja/​Service.fvv Legacy catalog removal
locale/​lang/​ja/​Rules.fvv Legacy catalog removal
locale/​lang/​ja/​Proxy.fvv Legacy catalog removal
locale/​lang/​ja/​Providers.fvv Legacy catalog removal
locale/​lang/​ja/​ProfilesVM.fvv Legacy catalog removal
locale/​lang/​ja/​Override.fvv Legacy catalog removal
locale/​lang/​ja/​OpenSourceLicenses.fvv Legacy catalog removal
locale/​lang/​ja/​Onboarding.fvv Legacy catalog removal
locale/​lang/​ja/​MetaFeature.fvv Legacy catalog removal
locale/​lang/​ja/​Log.fvv Legacy catalog removal
locale/​lang/​ja/​Home.fvv Legacy catalog removal
locale/​lang/​ja/​Editor.fvv Legacy catalog removal
locale/​lang/​ja/​Connection.fvv Legacy catalog removal
locale/​lang/​ja/​Component.fvv Legacy catalog removal
locale/​lang/​ja/​AppSettings.fvv Legacy catalog removal
locale/​lang/​ja/​AccessControl.fvv Legacy catalog removal
locale/​lang/​ja/​About.fvv Legacy catalog removal
locale/​lang/​en/​Util.fvv Legacy catalog removal
locale/​lang/​en/​TrafficStatistics.fvv Legacy catalog removal
locale/​lang/​en/​Settings.fvv Legacy catalog removal
locale/​lang/​en/​Service.fvv Legacy catalog removal
locale/​lang/​en/​Rules.fvv Legacy catalog removal
locale/​lang/​en/​Proxy.fvv Legacy catalog removal
locale/​lang/​en/​Providers.fvv Legacy catalog removal
locale/​lang/​en/​ProfilesVM.fvv Legacy catalog removal
locale/​lang/​en/​ProfilesPage.fvv Legacy catalog removal
locale/​lang/​en/​Override.fvv Legacy catalog removal
locale/​lang/​en/​OpenSourceLicenses.fvv Legacy catalog removal
locale/​lang/​en/​Onboarding.fvv Legacy catalog removal
locale/​lang/​en/​MetaFeature.fvv Legacy catalog removal
locale/​lang/​en/​Log.fvv Legacy catalog removal
locale/​lang/​en/​Home.fvv Legacy catalog removal
locale/​lang/​en/​Feature.fvv Legacy catalog removal
locale/​lang/​en/​Editor.fvv Legacy catalog removal
locale/​lang/​en/​Connection.fvv Legacy catalog removal
locale/​lang/​en/​Component.fvv Legacy catalog removal
locale/​lang/​en/​AppSettings.fvv Legacy catalog removal
locale/​lang/​en/​AccessControl.fvv Legacy catalog removal
locale/​lang/​en/​About.fvv Legacy catalog removal
locale/​build.gradle.kts Lyricist/KSP configuration
gradle/​libs.versions.toml Lyricist dependency configuration
feature/​substore/​src/​substore/​model/​AutoCloseMode.kt Localization migration
feature/​substore/​src/​presentation/​viewmodel/​FeatureViewModel.kt Localization migration
feature/​substore/​src/​presentation/​screen/​FeatureContent.kt Localization migration
feature/​proxy/​src/​ProxySheetContent.kt Localization migration
feature/​proxy/​src/​presentation/​viewmodel/​ProxyViewModel.kt Localization migration
feature/​proxy/​src/​presentation/​viewmodel/​ProvidersViewModel.kt Localization migration
feature/​proxy/​src/​presentation/​screen/​Proxy.kt Localization migration
feature/​proxy/​src/​presentation/​screen/​Providers.kt Localization migration
feature/​proxy/​src/​presentation/​screen/​node/​NodeSortPopup.kt Localization migration
feature/​proxy/​src/​presentation/​screen/​node/​NodeSearchToolbar.kt Localization migration
feature/​proxy/​src/​presentation/​screen/​node/​NodeGroups.kt Localization migration
feature/​proxy/​src/​presentation/​screen/​node/​NodeDelayRefreshIndicator.kt Localization migration
feature/​proxy/​src/​presentation/​screen/​node/​NodeContent.kt Localization migration
feature/​proxy/​src/​presentation/​screen/​node/​NodeCard.kt Localization migration
feature/​override/​src/​presentation/​viewmodel/​ConfigViewModel.kt Localization migration
feature/​override/​src/​presentation/​screen/​OverrideConfigDialogs.kt Localization migration
feature/​override/​src/​presentation/​screen/​OverrideConfigCard.kt Localization migration
feature/​override/​src/​presentation/​screen/​OverrideApplyToProfilesSheet.kt Localization migration
feature/​override/​src/​presentation/​screen/​ListScreen.kt Localization migration
feature/​meta/​src/​feature/​meta/​presentation/​viewmodel/​TrafficStatisticsViewModel.kt Localization migration
feature/​meta/​src/​feature/​meta/​presentation/​screen/​CustomRoutingScreen.kt Localization migration
feature/​meta/​src/​feature/​meta/​presentation/​component/​ConnectionDetailContent.kt Localization migration
feature/​meta/​src/​feature/​meta/​presentation/​component/​ConnectionCard.kt Localization migration
feature/​editor/​src/​feature/​editor/​screen/​FullscreenEditorScreen.kt Localization migration
feature/​editor/​src/​feature/​editor/​screen/​ConfigPreviewScreen.kt Localization migration
feature/​editor/​src/​feature/​editor/​screen/​ConfigEditorScreen.kt Localization migration
feature/​editor/​src/​feature/​editor/​component/​CodeEditorDialog.kt Localization migration
docs/​ThirdParty.md Third-party attribution update
data/​src/​data/​model/​TrafficStatistics.kt Localization migration
data/​src/​data/​model/​ProxyDisplaySettings.kt Localization migration
data/​src/​data/​model/​BuiltInOverrideCatalog.kt Localization migration
app/​src/​WebViewActivity.kt Locale provider migration
app/​src/​screen/​traffic/​TrafficStatisticsScreen.kt Localization migration
app/​src/​screen/​settings/​WifiAutomationScreen.kt Localization migration
app/​src/​screen/​settings/​VpnServiceOptionsScreen.kt Localization migration
app/​src/​screen/​settings/​TunServiceOptionsScreen.kt Localization migration
app/​src/​screen/​settings/​SettingPager.kt Localization migration
app/​src/​screen/​settings/​NetworkSettingsScreen.kt Localization migration
app/​src/​screen/​settings/​MoeWallpaperCropScreen.kt Localization migration
app/​src/​screen/​settings/​MetaFeatureScreen.kt Localization migration
app/​src/​screen/​settings/​EbpfServiceOptionsScreen.kt Localization migration
app/​src/​screen/​settings/​component/​ThemeAppearanceComponents.kt Localization migration
app/​src/​screen/​settings/​backup/​BackupRestoreViewModel.kt Localization migration
app/​src/​screen/​settings/​backup/​BackupRestoreSection.kt Localization migration
app/​src/​screen/​settings/​AppSettingsViewModel.kt Localization migration
app/​src/​screen/​settings/​AppSettingsScreen.kt Localization migration
app/​src/​screen/​settings/​AgeKeyGeneratorDialog.kt Localization migration
app/​src/​screen/​settings/​AccessControlScreen.kt Localization migration
app/​src/​screen/​settings/​AccessControlMenus.kt Localization migration
app/​src/​screen/​rules/​RulesScreen.kt Localization migration
app/​src/​screen/​profiles/​ProfilesViewModel.kt Localization migration
app/​src/​screen/​profiles/​ProfilesUiModels.kt Localization migration
app/​src/​screen/​profiles/​ProfileSubmission.kt Localization migration
app/​src/​screen/​profiles/​ProfilesPagerSupport.kt Localization migration
app/​src/​screen/​profiles/​ProfilesPageContent.kt Localization migration
app/​src/​screen/​profiles/​ProfileSimpleDialogs.kt Localization migration
app/​src/​screen/​profiles/​ProfilesDialogHost.kt Localization migration
app/​src/​screen/​profiles/​ProfileLinkSettingsContent.kt Localization migration
app/​src/​screen/​profiles/​ProfileLinkSettings.kt Localization migration
app/​src/​screen/​profiles/​ProfileImportLaunchers.kt Localization migration
app/​src/​screen/​profiles/​ProfileDialogs.kt Localization migration
app/​src/​screen/​profiles/​ProfileAddSheetLayout.kt Localization migration
app/​src/​screen/​profiles/​ProfileAddSheetContent.kt Localization migration
app/​src/​screen/​profiles/​ProfileAddSheet.kt Localization migration
app/​src/​screen/​profiles/​ProfileActionDialogs.kt Localization migration
app/​src/​screen/​navigation/​OverrideNavigation.kt Localization migration
app/​src/​screen/​navigation/​KeyValueEditorScreen.kt Localization migration
app/​src/​screen/​navigation/​EditorDialogs.kt Localization migration
app/​src/​screen/​moe/​SystemWallpaperPreferenceItem.kt Localization migration
app/​src/​screen/​moe/​MoeHomeSkeletonMockup.kt Localization migration
app/​src/​screen/​moe/​MoeHomeSettingsSheet.kt Localization migration
app/​src/​screen/​moe/​MoeHomeRuntimeInfo.kt Localization migration
app/​src/​screen/​moe/​MoeHomePage.kt Localization migration
app/​src/​screen/​moe/​MoeHomeChrome.kt Localization migration
app/​src/​screen/​moe/​HomePreviewGuideDialog.kt Localization migration
app/​src/​screen/​log/​LogScreen.kt Localization migration
app/​src/​screen/​home/​TrafficDisplay.kt Localization migration
app/​src/​screen/​home/​ProxyControlButton.kt Localization migration
app/​src/​screen/​home/​NodeInfoDisplay.kt Localization migration
app/​src/​screen/​home/​IpInfoDisplay.kt Localization migration
app/​src/​screen/​home/​HomeViewModel.kt Localization migration
app/​src/​screen/​home/​HomePager.kt Localization migration
app/​src/​screen/​feature/​RemoteControllerSection.kt Localization migration
app/​src/​screen/​feature/​PanelShortcutDialog.kt Localization migration
app/​src/​screen/​connection/​ConnectionScreen.kt Localization migration
app/​src/​screen/​connection/​ConnectionDetailScreen.kt Localization migration
app/​src/​screen/​about/​OpenSourceLicensesScreen.kt Localization migration
app/​src/​screen/​about/​AboutScreen.kt Localization migration
app/​src/​presentation/​webview/​LocalWebView.kt Localization migration
app/​src/​presentation/​component/​ToastDialogHost.kt Localization migration
app/​src/​common/​util/​AppLanguageManager.kt Locale selection migration

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread locale/build.gradle.kts
composeGen = true
internalClass = false
exportDeps = true
id("com.google.devtools.ksp")
Comment thread locale/build.gradle.kts Outdated
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.runtime)
implementation(libs.androidx.compose.ui)
implementation(libs.lyricist)
Comment on lines +61 to +69
val lyricistTag = when (language) {
AppLanguage.System -> locale.toLanguageTag()
AppLanguage.Zh -> "zh-CN"
AppLanguage.ZhHant -> "zh-TW"
AppLanguage.En -> "en"
AppLanguage.Ja -> "ja"
AppLanguage.Ru -> "ru"
}
YumeLocaleManager.updateLocale(lyricistTag)
@YumeYuka
YumeYuka force-pushed the i18n-locale-import-path branch from 7323fee to 5222ee0 Compare September 27, 2026 12:09
@YumeYuka
YumeYuka added this pull request to the merge queue Sep 27, 2026
Merged via the queue into Moe with commit 3ca0ee0 Sep 27, 2026
8 checks passed
@YumeYuka
YumeYuka deleted the i18n-locale-import-path branch September 27, 2026 12:14
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.

3 participants