From f961afc4d36c0258185ac4e407d42f306f315c15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=A6=E3=83=A1=E3=83=AA=E3=83=A9?= Date: Sun, 27 Sep 2026 19:54:16 +0800 Subject: [PATCH 1/2] feat(i18n): add locale and import path --- app/src/WebViewActivity.kt | 4 +- app/src/common/util/AppLanguageManager.kt | 17 +- .../presentation/component/ToastDialogHost.kt | 2 +- app/src/presentation/webview/LocalWebView.kt | 2 +- app/src/screen/about/AboutScreen.kt | 2 +- .../screen/about/OpenSourceLicensesScreen.kt | 2 +- .../connection/ConnectionDetailScreen.kt | 2 +- app/src/screen/connection/ConnectionScreen.kt | 2 +- app/src/screen/feature/PanelShortcutDialog.kt | 2 +- .../screen/feature/RemoteControllerSection.kt | 2 +- app/src/screen/home/HomePager.kt | 2 +- app/src/screen/home/HomeViewModel.kt | 2 +- app/src/screen/home/IpInfoDisplay.kt | 2 +- app/src/screen/home/NodeInfoDisplay.kt | 2 +- app/src/screen/home/ProxyControlButton.kt | 2 +- app/src/screen/home/TrafficDisplay.kt | 2 +- app/src/screen/log/LogScreen.kt | 2 +- app/src/screen/moe/HomePreviewGuideDialog.kt | 2 +- app/src/screen/moe/MoeHomeChrome.kt | 2 +- app/src/screen/moe/MoeHomePage.kt | 2 +- app/src/screen/moe/MoeHomeRuntimeInfo.kt | 2 +- app/src/screen/moe/MoeHomeSettingsSheet.kt | 2 +- app/src/screen/moe/MoeHomeSkeletonMockup.kt | 2 +- .../moe/SystemWallpaperPreferenceItem.kt | 2 +- app/src/screen/navigation/EditorDialogs.kt | 2 +- .../screen/navigation/KeyValueEditorScreen.kt | 2 +- .../screen/navigation/OverrideNavigation.kt | 2 +- .../screen/profiles/ProfileActionDialogs.kt | 2 +- app/src/screen/profiles/ProfileAddSheet.kt | 2 +- .../screen/profiles/ProfileAddSheetContent.kt | 2 +- .../screen/profiles/ProfileAddSheetLayout.kt | 2 +- app/src/screen/profiles/ProfileDialogs.kt | 2 +- .../screen/profiles/ProfileImportLaunchers.kt | 2 +- .../screen/profiles/ProfileLinkSettings.kt | 2 +- .../profiles/ProfileLinkSettingsContent.kt | 2 +- .../screen/profiles/ProfileSimpleDialogs.kt | 2 +- app/src/screen/profiles/ProfileSubmission.kt | 2 +- app/src/screen/profiles/ProfilesDialogHost.kt | 2 +- .../screen/profiles/ProfilesPageContent.kt | 2 +- .../screen/profiles/ProfilesPagerSupport.kt | 2 +- app/src/screen/profiles/ProfilesUiModels.kt | 2 +- app/src/screen/profiles/ProfilesViewModel.kt | 2 +- app/src/screen/rules/RulesScreen.kt | 2 +- app/src/screen/settings/AccessControlMenus.kt | 2 +- .../screen/settings/AccessControlScreen.kt | 2 +- .../screen/settings/AgeKeyGeneratorDialog.kt | 2 +- app/src/screen/settings/AppSettingsScreen.kt | 2 +- .../screen/settings/AppSettingsViewModel.kt | 2 +- .../settings/EbpfServiceOptionsScreen.kt | 2 +- app/src/screen/settings/MetaFeatureScreen.kt | 2 +- .../screen/settings/MoeWallpaperCropScreen.kt | 2 +- .../screen/settings/NetworkSettingsScreen.kt | 2 +- app/src/screen/settings/SettingPager.kt | 2 +- .../settings/TunServiceOptionsScreen.kt | 2 +- .../settings/VpnServiceOptionsScreen.kt | 2 +- .../screen/settings/WifiAutomationScreen.kt | 2 +- .../settings/backup/BackupRestoreSection.kt | 2 +- .../settings/backup/BackupRestoreViewModel.kt | 2 +- .../component/ThemeAppearanceComponents.kt | 2 +- .../screen/traffic/TrafficStatisticsScreen.kt | 2 +- data/src/data/model/BuiltInOverrideCatalog.kt | 2 +- data/src/data/model/ProxyDisplaySettings.kt | 2 +- data/src/data/model/TrafficStatistics.kt | 4 +- docs/ThirdParty.md | 2 +- .../editor/component/CodeEditorDialog.kt | 2 +- .../editor/screen/ConfigEditorScreen.kt | 2 +- .../editor/screen/ConfigPreviewScreen.kt | 2 +- .../editor/screen/FullscreenEditorScreen.kt | 2 +- .../presentation/component/ConnectionCard.kt | 2 +- .../component/ConnectionDetailContent.kt | 2 +- .../screen/CustomRoutingScreen.kt | 2 +- .../viewmodel/TrafficStatisticsViewModel.kt | 2 +- .../src/presentation/screen/ListScreen.kt | 2 +- .../screen/OverrideApplyToProfilesSheet.kt | 2 +- .../presentation/screen/OverrideConfigCard.kt | 2 +- .../screen/OverrideConfigDialogs.kt | 2 +- .../presentation/viewmodel/ConfigViewModel.kt | 2 +- feature/proxy/src/ProxySheetContent.kt | 2 +- .../src/presentation/screen/Providers.kt | 2 +- .../proxy/src/presentation/screen/Proxy.kt | 2 +- .../src/presentation/screen/node/NodeCard.kt | 2 +- .../presentation/screen/node/NodeContent.kt | 2 +- .../screen/node/NodeDelayRefreshIndicator.kt | 2 +- .../presentation/screen/node/NodeGroups.kt | 2 +- .../screen/node/NodeSearchToolbar.kt | 2 +- .../presentation/screen/node/NodeSortPopup.kt | 2 +- .../viewmodel/ProvidersViewModel.kt | 2 +- .../presentation/viewmodel/ProxyViewModel.kt | 2 +- .../src/presentation/screen/FeatureContent.kt | 2 +- .../viewmodel/FeatureViewModel.kt | 2 +- .../src/substore/model/AutoCloseMode.kt | 2 +- gradle/libs.versions.toml | 3 + locale/build.gradle.kts | 22 +- locale/lang/en/About.fvv | 44 - locale/lang/en/AccessControl.fvv | 48 - locale/lang/en/AppSettings.fvv | 93 - locale/lang/en/Component.fvv | 107 - locale/lang/en/Connection.fvv | 64 - locale/lang/en/Editor.fvv | 24 - locale/lang/en/Feature.fvv | 92 - locale/lang/en/Home.fvv | 80 - locale/lang/en/Log.fvv | 36 - locale/lang/en/MetaFeature.fvv | 61 - locale/lang/en/NetworkSettings.fvv | 128 - locale/lang/en/Onboarding.fvv | 73 - locale/lang/en/OpenSourceLicenses.fvv | 8 - locale/lang/en/Override.fvv | 116 - locale/lang/en/ProfilesPage.fvv | 118 - locale/lang/en/ProfilesVM.fvv | 24 - locale/lang/en/Providers.fvv | 39 - locale/lang/en/Proxy.fvv | 56 - locale/lang/en/Rules.fvv | 25 - locale/lang/en/Service.fvv | 26 - locale/lang/en/Settings.fvv | 35 - locale/lang/en/TrafficStatistics.fvv | 54 - locale/lang/en/Util.fvv | 6 - locale/lang/ja/About.fvv | 44 - locale/lang/ja/AccessControl.fvv | 48 - locale/lang/ja/AppSettings.fvv | 93 - locale/lang/ja/Component.fvv | 107 - locale/lang/ja/Connection.fvv | 64 - locale/lang/ja/Editor.fvv | 24 - locale/lang/ja/Feature.fvv | 92 - locale/lang/ja/Home.fvv | 80 - locale/lang/ja/Log.fvv | 36 - locale/lang/ja/MetaFeature.fvv | 61 - locale/lang/ja/NetworkSettings.fvv | 128 - locale/lang/ja/Onboarding.fvv | 73 - locale/lang/ja/OpenSourceLicenses.fvv | 8 - locale/lang/ja/Override.fvv | 116 - locale/lang/ja/ProfilesPage.fvv | 118 - locale/lang/ja/ProfilesVM.fvv | 24 - locale/lang/ja/Providers.fvv | 39 - locale/lang/ja/Proxy.fvv | 56 - locale/lang/ja/Rules.fvv | 25 - locale/lang/ja/Service.fvv | 26 - locale/lang/ja/Settings.fvv | 35 - locale/lang/ja/TrafficStatistics.fvv | 54 - locale/lang/ja/Util.fvv | 6 - locale/lang/ru/About.fvv | 44 - locale/lang/ru/AccessControl.fvv | 48 - locale/lang/ru/AppSettings.fvv | 93 - locale/lang/ru/Component.fvv | 107 - locale/lang/ru/Connection.fvv | 64 - locale/lang/ru/Editor.fvv | 24 - locale/lang/ru/Feature.fvv | 92 - locale/lang/ru/Home.fvv | 80 - locale/lang/ru/Log.fvv | 36 - locale/lang/ru/MetaFeature.fvv | 61 - locale/lang/ru/NetworkSettings.fvv | 128 - locale/lang/ru/Onboarding.fvv | 73 - locale/lang/ru/OpenSourceLicenses.fvv | 8 - locale/lang/ru/Override.fvv | 116 - locale/lang/ru/ProfilesPage.fvv | 118 - locale/lang/ru/ProfilesVM.fvv | 24 - locale/lang/ru/Providers.fvv | 39 - locale/lang/ru/Proxy.fvv | 56 - locale/lang/ru/Rules.fvv | 25 - locale/lang/ru/Service.fvv | 26 - locale/lang/ru/Settings.fvv | 35 - locale/lang/ru/TrafficStatistics.fvv | 54 - locale/lang/ru/Util.fvv | 6 - locale/lang/zh/About.fvv | 44 - locale/lang/zh/AccessControl.fvv | 48 - locale/lang/zh/AppSettings.fvv | 93 - locale/lang/zh/Component.fvv | 107 - locale/lang/zh/Connection.fvv | 64 - locale/lang/zh/Editor.fvv | 24 - locale/lang/zh/Feature.fvv | 92 - locale/lang/zh/Home.fvv | 80 - locale/lang/zh/Log.fvv | 36 - locale/lang/zh/MetaFeature.fvv | 61 - locale/lang/zh/NetworkSettings.fvv | 128 - locale/lang/zh/Onboarding.fvv | 73 - locale/lang/zh/OpenSourceLicenses.fvv | 8 - locale/lang/zh/Override.fvv | 116 - locale/lang/zh/ProfilesPage.fvv | 118 - locale/lang/zh/ProfilesVM.fvv | 24 - locale/lang/zh/Providers.fvv | 39 - locale/lang/zh/Proxy.fvv | 56 - locale/lang/zh/Rules.fvv | 25 - locale/lang/zh/Service.fvv | 26 - locale/lang/zh/Settings.fvv | 35 - locale/lang/zh/TrafficStatistics.fvv | 54 - locale/lang/zh/Util.fvv | 6 - locale/lang/zh_Hans/About.fvv | 44 - locale/lang/zh_Hans/AccessControl.fvv | 48 - locale/lang/zh_Hans/AppSettings.fvv | 93 - locale/lang/zh_Hans/Component.fvv | 107 - locale/lang/zh_Hans/Connection.fvv | 64 - locale/lang/zh_Hans/Editor.fvv | 24 - locale/lang/zh_Hans/Feature.fvv | 92 - locale/lang/zh_Hans/Home.fvv | 80 - locale/lang/zh_Hans/Log.fvv | 36 - locale/lang/zh_Hans/MetaFeature.fvv | 61 - locale/lang/zh_Hans/NetworkSettings.fvv | 128 - locale/lang/zh_Hans/Onboarding.fvv | 73 - locale/lang/zh_Hans/OpenSourceLicenses.fvv | 8 - locale/lang/zh_Hans/Override.fvv | 116 - locale/lang/zh_Hans/ProfilesPage.fvv | 118 - locale/lang/zh_Hans/ProfilesVM.fvv | 24 - locale/lang/zh_Hans/Providers.fvv | 39 - locale/lang/zh_Hans/Proxy.fvv | 56 - locale/lang/zh_Hans/Rules.fvv | 25 - locale/lang/zh_Hans/Service.fvv | 26 - locale/lang/zh_Hans/Settings.fvv | 35 - locale/lang/zh_Hans/TrafficStatistics.fvv | 54 - locale/lang/zh_Hans/Util.fvv | 6 - locale/src/About.kt | 187 + locale/src/AccessControl.kt | 217 + locale/src/AppSettings.kt | 402 ++ locale/src/Component.kt | 482 ++ locale/src/Connection.kt | 272 + locale/src/Editor.kt | 122 + locale/src/EnStrings.kt | 30 + locale/src/Feature.kt | 422 ++ locale/src/Home.kt | 332 ++ locale/src/JaStrings.kt | 30 + locale/src/Log.kt | 162 + locale/src/MetaFeature.kt | 277 ++ locale/src/NetworkSettings.kt | 587 +++ locale/src/Onboarding.kt | 317 ++ locale/src/OpenSourceLicenses.kt | 37 + locale/src/Override.kt | 467 ++ locale/src/ProfilesPage.kt | 512 ++ locale/src/ProfilesVM.kt | 112 + locale/src/Providers.kt | 172 + locale/src/Proxy.kt | 237 + locale/src/RuStrings.kt | 30 + locale/src/Rules.kt | 112 + locale/src/Service.kt | 122 + locale/src/Settings.kt | 157 + locale/src/TrafficStatistics.kt | 237 + locale/src/Util.kt | 32 + locale/src/YumeStrings.kt | 1594 ++++++ locale/src/YumeTxt.kt | 4354 +++++++++++++++++ locale/src/ZhHansStrings.kt | 30 + locale/src/ZhStrings.kt | 30 + .../src/runtime/service/DialerReceiver.kt | 2 +- .../src/runtime/service/ProxyTileService.kt | 2 +- .../service/notification/MiuiIslandParams.kt | 2 +- .../notification/NotificationPresentation.kt | 2 +- .../ServiceNotificationManager.kt | 2 +- .../runtime/service/root/RootAccessSupport.kt | 2 +- settings.gradle.kts | 14 +- .../component/AppActionBottomSheet.kt | 2 +- .../component/AppConfirmDialog.kt | 2 +- .../component/AppDialogContent.kt | 2 +- .../presentation/component/AppFormDialog.kt | 2 +- ui/src/presentation/component/BottomBar.kt | 2 +- ui/src/presentation/component/ConfigInput.kt | 2 +- .../presentation/component/ConfirmDialog.kt | 2 +- .../component/CountryFlagCircle.kt | 2 +- .../presentation/component/DialogButtonRow.kt | 2 +- .../presentation/component/EditBottomSheet.kt | 2 +- .../component/LoadingAnimation.kt | 2 +- ui/src/presentation/component/MessageHost.kt | 2 +- .../component/NullableSelector.kt | 2 +- ui/src/presentation/component/ProfileCard.kt | 2 +- .../presentation/component/SearchStatusUi.kt | 2 +- ui/src/presentation/theme/Theme.kt | 4 +- .../presentation/util/ProfileUiExtensions.kt | 2 +- 262 files changed, 12208 insertions(+), 6939 deletions(-) delete mode 100644 locale/lang/en/About.fvv delete mode 100644 locale/lang/en/AccessControl.fvv delete mode 100644 locale/lang/en/AppSettings.fvv delete mode 100644 locale/lang/en/Component.fvv delete mode 100644 locale/lang/en/Connection.fvv delete mode 100644 locale/lang/en/Editor.fvv delete mode 100644 locale/lang/en/Feature.fvv delete mode 100644 locale/lang/en/Home.fvv delete mode 100644 locale/lang/en/Log.fvv delete mode 100644 locale/lang/en/MetaFeature.fvv delete mode 100644 locale/lang/en/NetworkSettings.fvv delete mode 100644 locale/lang/en/Onboarding.fvv delete mode 100644 locale/lang/en/OpenSourceLicenses.fvv delete mode 100644 locale/lang/en/Override.fvv delete mode 100644 locale/lang/en/ProfilesPage.fvv delete mode 100644 locale/lang/en/ProfilesVM.fvv delete mode 100644 locale/lang/en/Providers.fvv delete mode 100644 locale/lang/en/Proxy.fvv delete mode 100644 locale/lang/en/Rules.fvv delete mode 100644 locale/lang/en/Service.fvv delete mode 100644 locale/lang/en/Settings.fvv delete mode 100644 locale/lang/en/TrafficStatistics.fvv delete mode 100644 locale/lang/en/Util.fvv delete mode 100644 locale/lang/ja/About.fvv delete mode 100644 locale/lang/ja/AccessControl.fvv delete mode 100644 locale/lang/ja/AppSettings.fvv delete mode 100644 locale/lang/ja/Component.fvv delete mode 100644 locale/lang/ja/Connection.fvv delete mode 100644 locale/lang/ja/Editor.fvv delete mode 100644 locale/lang/ja/Feature.fvv delete mode 100644 locale/lang/ja/Home.fvv delete mode 100644 locale/lang/ja/Log.fvv delete mode 100644 locale/lang/ja/MetaFeature.fvv delete mode 100644 locale/lang/ja/NetworkSettings.fvv delete mode 100644 locale/lang/ja/Onboarding.fvv delete mode 100644 locale/lang/ja/OpenSourceLicenses.fvv delete mode 100644 locale/lang/ja/Override.fvv delete mode 100644 locale/lang/ja/ProfilesPage.fvv delete mode 100644 locale/lang/ja/ProfilesVM.fvv delete mode 100644 locale/lang/ja/Providers.fvv delete mode 100644 locale/lang/ja/Proxy.fvv delete mode 100644 locale/lang/ja/Rules.fvv delete mode 100644 locale/lang/ja/Service.fvv delete mode 100644 locale/lang/ja/Settings.fvv delete mode 100644 locale/lang/ja/TrafficStatistics.fvv delete mode 100644 locale/lang/ja/Util.fvv delete mode 100644 locale/lang/ru/About.fvv delete mode 100644 locale/lang/ru/AccessControl.fvv delete mode 100644 locale/lang/ru/AppSettings.fvv delete mode 100644 locale/lang/ru/Component.fvv delete mode 100644 locale/lang/ru/Connection.fvv delete mode 100644 locale/lang/ru/Editor.fvv delete mode 100644 locale/lang/ru/Feature.fvv delete mode 100644 locale/lang/ru/Home.fvv delete mode 100644 locale/lang/ru/Log.fvv delete mode 100644 locale/lang/ru/MetaFeature.fvv delete mode 100644 locale/lang/ru/NetworkSettings.fvv delete mode 100644 locale/lang/ru/Onboarding.fvv delete mode 100644 locale/lang/ru/OpenSourceLicenses.fvv delete mode 100644 locale/lang/ru/Override.fvv delete mode 100644 locale/lang/ru/ProfilesPage.fvv delete mode 100644 locale/lang/ru/ProfilesVM.fvv delete mode 100644 locale/lang/ru/Providers.fvv delete mode 100644 locale/lang/ru/Proxy.fvv delete mode 100644 locale/lang/ru/Rules.fvv delete mode 100644 locale/lang/ru/Service.fvv delete mode 100644 locale/lang/ru/Settings.fvv delete mode 100644 locale/lang/ru/TrafficStatistics.fvv delete mode 100644 locale/lang/ru/Util.fvv delete mode 100644 locale/lang/zh/About.fvv delete mode 100644 locale/lang/zh/AccessControl.fvv delete mode 100644 locale/lang/zh/AppSettings.fvv delete mode 100644 locale/lang/zh/Component.fvv delete mode 100644 locale/lang/zh/Connection.fvv delete mode 100644 locale/lang/zh/Editor.fvv delete mode 100644 locale/lang/zh/Feature.fvv delete mode 100644 locale/lang/zh/Home.fvv delete mode 100644 locale/lang/zh/Log.fvv delete mode 100644 locale/lang/zh/MetaFeature.fvv delete mode 100644 locale/lang/zh/NetworkSettings.fvv delete mode 100644 locale/lang/zh/Onboarding.fvv delete mode 100644 locale/lang/zh/OpenSourceLicenses.fvv delete mode 100644 locale/lang/zh/Override.fvv delete mode 100644 locale/lang/zh/ProfilesPage.fvv delete mode 100644 locale/lang/zh/ProfilesVM.fvv delete mode 100644 locale/lang/zh/Providers.fvv delete mode 100644 locale/lang/zh/Proxy.fvv delete mode 100644 locale/lang/zh/Rules.fvv delete mode 100644 locale/lang/zh/Service.fvv delete mode 100644 locale/lang/zh/Settings.fvv delete mode 100644 locale/lang/zh/TrafficStatistics.fvv delete mode 100644 locale/lang/zh/Util.fvv delete mode 100644 locale/lang/zh_Hans/About.fvv delete mode 100644 locale/lang/zh_Hans/AccessControl.fvv delete mode 100644 locale/lang/zh_Hans/AppSettings.fvv delete mode 100644 locale/lang/zh_Hans/Component.fvv delete mode 100644 locale/lang/zh_Hans/Connection.fvv delete mode 100644 locale/lang/zh_Hans/Editor.fvv delete mode 100644 locale/lang/zh_Hans/Feature.fvv delete mode 100644 locale/lang/zh_Hans/Home.fvv delete mode 100644 locale/lang/zh_Hans/Log.fvv delete mode 100644 locale/lang/zh_Hans/MetaFeature.fvv delete mode 100644 locale/lang/zh_Hans/NetworkSettings.fvv delete mode 100644 locale/lang/zh_Hans/Onboarding.fvv delete mode 100644 locale/lang/zh_Hans/OpenSourceLicenses.fvv delete mode 100644 locale/lang/zh_Hans/Override.fvv delete mode 100644 locale/lang/zh_Hans/ProfilesPage.fvv delete mode 100644 locale/lang/zh_Hans/ProfilesVM.fvv delete mode 100644 locale/lang/zh_Hans/Providers.fvv delete mode 100644 locale/lang/zh_Hans/Proxy.fvv delete mode 100644 locale/lang/zh_Hans/Rules.fvv delete mode 100644 locale/lang/zh_Hans/Service.fvv delete mode 100644 locale/lang/zh_Hans/Settings.fvv delete mode 100644 locale/lang/zh_Hans/TrafficStatistics.fvv delete mode 100644 locale/lang/zh_Hans/Util.fvv create mode 100644 locale/src/About.kt create mode 100644 locale/src/AccessControl.kt create mode 100644 locale/src/AppSettings.kt create mode 100644 locale/src/Component.kt create mode 100644 locale/src/Connection.kt create mode 100644 locale/src/Editor.kt create mode 100644 locale/src/EnStrings.kt create mode 100644 locale/src/Feature.kt create mode 100644 locale/src/Home.kt create mode 100644 locale/src/JaStrings.kt create mode 100644 locale/src/Log.kt create mode 100644 locale/src/MetaFeature.kt create mode 100644 locale/src/NetworkSettings.kt create mode 100644 locale/src/Onboarding.kt create mode 100644 locale/src/OpenSourceLicenses.kt create mode 100644 locale/src/Override.kt create mode 100644 locale/src/ProfilesPage.kt create mode 100644 locale/src/ProfilesVM.kt create mode 100644 locale/src/Providers.kt create mode 100644 locale/src/Proxy.kt create mode 100644 locale/src/RuStrings.kt create mode 100644 locale/src/Rules.kt create mode 100644 locale/src/Service.kt create mode 100644 locale/src/Settings.kt create mode 100644 locale/src/TrafficStatistics.kt create mode 100644 locale/src/Util.kt create mode 100644 locale/src/YumeStrings.kt create mode 100644 locale/src/YumeTxt.kt create mode 100644 locale/src/ZhHansStrings.kt create mode 100644 locale/src/ZhStrings.kt diff --git a/app/src/WebViewActivity.kt b/app/src/WebViewActivity.kt index 4368743ab..cec66046d 100644 --- a/app/src/WebViewActivity.kt +++ b/app/src/WebViewActivity.kt @@ -36,7 +36,7 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.core.view.WindowCompat import com.github.yumeyucca.yumebox.common.util.AppLanguageManager import com.github.yumeyucca.yumebox.presentation.webview.WebViewScreen -import tf.gal.shirosu.fyl.fytxt.compose.FYTxtProvider +import com.github.yumeyucca.yumebox.core.locale.ProvideYumeStrings class WebViewActivity : ComponentActivity() { companion object { @@ -112,6 +112,6 @@ class WebViewActivity : ComponentActivity() { val initialUrl = intent.getStringExtra(EXTRA_INITIAL_URL) ?: "file://$filesDir/frontend/index.html" - setContent { FYTxtProvider { WebViewScreen(initialUrl = initialUrl) } } + setContent { ProvideYumeStrings { WebViewScreen(initialUrl = initialUrl) } } } } diff --git a/app/src/common/util/AppLanguageManager.kt b/app/src/common/util/AppLanguageManager.kt index 65be3fce0..64f6a445e 100644 --- a/app/src/common/util/AppLanguageManager.kt +++ b/app/src/common/util/AppLanguageManager.kt @@ -29,7 +29,7 @@ import android.content.res.Resources import androidx.appcompat.app.AppCompatDelegate import androidx.core.os.LocaleListCompat import com.github.yumeyucca.yumebox.data.model.AppLanguage -import tf.gal.shirosu.fyl.fytxt.FYTxtConfig +import com.github.yumeyucca.yumebox.core.locale.YumeLocaleManager import java.util.* @SuppressLint("AppBundleLocaleChanges") @@ -58,14 +58,15 @@ object AppLanguageManager { Locale.setDefault(locale) LocaleUtil.setCurrentLocale(locale) - when (language) { - AppLanguage.System -> FYTxtConfig.updateTags(lock = false) - AppLanguage.Zh -> FYTxtConfig.updateTags(listOf("ZH_HANS"), lock = true) - AppLanguage.ZhHant -> FYTxtConfig.updateTags(listOf("ZH_HANT"), lock = true) - AppLanguage.En -> FYTxtConfig.updateTags(listOf("EN"), lock = true) - AppLanguage.Ja -> FYTxtConfig.updateTags(listOf("JA"), lock = true) - AppLanguage.Ru -> FYTxtConfig.updateTags(listOf("RU"), lock = true) + 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) } fun wrap(base: Context): Context { diff --git a/app/src/presentation/component/ToastDialogHost.kt b/app/src/presentation/component/ToastDialogHost.kt index 24b01832c..68ba0268d 100644 --- a/app/src/presentation/component/ToastDialogHost.kt +++ b/app/src/presentation/component/ToastDialogHost.kt @@ -38,7 +38,7 @@ import androidx.compose.ui.platform.LocalContext import com.github.yumeyucca.yumebox.common.util.ToastDialogBridge import com.github.yumeyucca.yumebox.common.util.ToastDialogEvent import com.github.yumeyucca.yumebox.presentation.theme.AppTheme -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.layout.DialogDefaults import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/app/src/presentation/webview/LocalWebView.kt b/app/src/presentation/webview/LocalWebView.kt index 4b07b6aa7..e7f859576 100644 --- a/app/src/presentation/webview/LocalWebView.kt +++ b/app/src/presentation/webview/LocalWebView.kt @@ -41,7 +41,7 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import com.github.yumeyucca.yumebox.BuildConfig import com.github.yumeyucca.yumebox.WebViewActivity -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import timber.log.Timber import top.yukonga.miuix.kmp.basic.Text diff --git a/app/src/screen/about/AboutScreen.kt b/app/src/screen/about/AboutScreen.kt index f0b896c1e..4cb63044e 100644 --- a/app/src/screen/about/AboutScreen.kt +++ b/app/src/screen/about/AboutScreen.kt @@ -58,7 +58,7 @@ import com.github.yumeyucca.yumebox.runtime.service.log.RuntimeLog import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.BasicComponent import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.Scaffold diff --git a/app/src/screen/about/OpenSourceLicensesScreen.kt b/app/src/screen/about/OpenSourceLicensesScreen.kt index 936175a4a..ef04aa837 100644 --- a/app/src/screen/about/OpenSourceLicensesScreen.kt +++ b/app/src/screen/about/OpenSourceLicensesScreen.kt @@ -41,7 +41,7 @@ import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.mikepenz.aboutlibraries.entity.Library import com.mikepenz.aboutlibraries.ui.compose.android.produceLibraries -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.Scaffold import top.yukonga.miuix.kmp.basic.Text diff --git a/app/src/screen/connection/ConnectionDetailScreen.kt b/app/src/screen/connection/ConnectionDetailScreen.kt index 2dd87ac0f..c14e7f5fb 100644 --- a/app/src/screen/connection/ConnectionDetailScreen.kt +++ b/app/src/screen/connection/ConnectionDetailScreen.kt @@ -40,7 +40,7 @@ import com.github.yumeyucca.yumebox.runtime.client.access.RuntimeAccess import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.Scaffold import top.yukonga.miuix.kmp.basic.Text diff --git a/app/src/screen/connection/ConnectionScreen.kt b/app/src/screen/connection/ConnectionScreen.kt index d03ae1ac2..f7ae63e54 100644 --- a/app/src/screen/connection/ConnectionScreen.kt +++ b/app/src/screen/connection/ConnectionScreen.kt @@ -47,7 +47,7 @@ import com.github.yumeyucca.yumebox.presentation.component.* import com.github.yumeyucca.yumebox.presentation.navigation.Route import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.* import top.yukonga.miuix.kmp.icon.MiuixIcons import top.yukonga.miuix.kmp.icon.extended.Sort diff --git a/app/src/screen/feature/PanelShortcutDialog.kt b/app/src/screen/feature/PanelShortcutDialog.kt index aac4897aa..d986fd586 100644 --- a/app/src/screen/feature/PanelShortcutDialog.kt +++ b/app/src/screen/feature/PanelShortcutDialog.kt @@ -47,7 +47,7 @@ import com.github.yumeyucca.yumebox.R import com.github.yumeyucca.yumebox.presentation.component.AppFormDialog import com.github.yumeyucca.yumebox.presentation.component.OemTextField import com.github.yumeyucca.yumebox.presentation.theme.AppTheme -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.IconButton import top.yukonga.miuix.kmp.basic.TextButton diff --git a/app/src/screen/feature/RemoteControllerSection.kt b/app/src/screen/feature/RemoteControllerSection.kt index c070035bc..d37d4ffa9 100644 --- a/app/src/screen/feature/RemoteControllerSection.kt +++ b/app/src/screen/feature/RemoteControllerSection.kt @@ -34,7 +34,7 @@ import com.github.yumeyucca.yumebox.presentation.component.* import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.screen.settings.RemoteControllerViewModel import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.ButtonDefaults import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.basic.TextButton diff --git a/app/src/screen/home/HomePager.kt b/app/src/screen/home/HomePager.kt index 1d73a1f14..31b340d1b 100644 --- a/app/src/screen/home/HomePager.kt +++ b/app/src/screen/home/HomePager.kt @@ -45,7 +45,7 @@ import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.github.yumeyucca.yumebox.runtime.api.Profile import kotlinx.coroutines.launch import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.Scaffold diff --git a/app/src/screen/home/HomeViewModel.kt b/app/src/screen/home/HomeViewModel.kt index 58769c97e..ce99f6200 100644 --- a/app/src/screen/home/HomeViewModel.kt +++ b/app/src/screen/home/HomeViewModel.kt @@ -46,7 +46,7 @@ import com.github.yumeyucca.yumebox.runtime.service.WifiAutomationService import kotlinx.coroutines.* import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.flow.* -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import com.github.yumeyucca.yumebox.core.util.BuiltinGeoAssetsRequiredException import timber.log.Timber diff --git a/app/src/screen/home/IpInfoDisplay.kt b/app/src/screen/home/IpInfoDisplay.kt index 547368eac..9e714e5c0 100644 --- a/app/src/screen/home/IpInfoDisplay.kt +++ b/app/src/screen/home/IpInfoDisplay.kt @@ -41,7 +41,7 @@ import androidx.compose.ui.unit.sp import com.github.yumeyucca.yumebox.data.network.IpMonitoringState import com.github.yumeyucca.yumebox.presentation.component.CountryFlagCircle import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/app/src/screen/home/NodeInfoDisplay.kt b/app/src/screen/home/NodeInfoDisplay.kt index 8d6ca8a9e..ce14a0f5b 100644 --- a/app/src/screen/home/NodeInfoDisplay.kt +++ b/app/src/screen/home/NodeInfoDisplay.kt @@ -33,7 +33,7 @@ import androidx.compose.ui.unit.sp import com.github.yumeyucca.yumebox.presentation.component.CountryFlagCircle import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.util.extractFlaggedName -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/app/src/screen/home/ProxyControlButton.kt b/app/src/screen/home/ProxyControlButton.kt index 7f19c8981..d713f6c67 100644 --- a/app/src/screen/home/ProxyControlButton.kt +++ b/app/src/screen/home/ProxyControlButton.kt @@ -42,7 +42,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.yume.Square import com.github.yumeyucca.yumebox.presentation.theme.AnimationSpecs import com.github.yumeyucca.yumebox.presentation.theme.UiDp import kotlinx.coroutines.launch -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Button import top.yukonga.miuix.kmp.basic.ButtonDefaults import top.yukonga.miuix.kmp.basic.Icon diff --git a/app/src/screen/home/TrafficDisplay.kt b/app/src/screen/home/TrafficDisplay.kt index aee3077e8..0cb90b1b2 100644 --- a/app/src/screen/home/TrafficDisplay.kt +++ b/app/src/screen/home/TrafficDisplay.kt @@ -46,7 +46,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.Yume import com.github.yumeyucca.yumebox.presentation.icon.yume.* import com.github.yumeyucca.yumebox.presentation.theme.AnimationSpecs import com.github.yumeyucca.yumebox.presentation.theme.AppTheme -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.Surface import top.yukonga.miuix.kmp.basic.Text diff --git a/app/src/screen/log/LogScreen.kt b/app/src/screen/log/LogScreen.kt index cd71d0b02..67b993f1f 100644 --- a/app/src/screen/log/LogScreen.kt +++ b/app/src/screen/log/LogScreen.kt @@ -55,7 +55,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.DropdownImpl import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.IconButton diff --git a/app/src/screen/moe/HomePreviewGuideDialog.kt b/app/src/screen/moe/HomePreviewGuideDialog.kt index 15ae84e80..af1b5fa9e 100644 --- a/app/src/screen/moe/HomePreviewGuideDialog.kt +++ b/app/src/screen/moe/HomePreviewGuideDialog.kt @@ -41,7 +41,7 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner import com.github.yumeyucca.yumebox.presentation.theme.AppTheme -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.TextButton import top.yukonga.miuix.kmp.layout.DialogDefaults import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/app/src/screen/moe/MoeHomeChrome.kt b/app/src/screen/moe/MoeHomeChrome.kt index 4d3f45274..ac03233c9 100644 --- a/app/src/screen/moe/MoeHomeChrome.kt +++ b/app/src/screen/moe/MoeHomeChrome.kt @@ -58,7 +58,7 @@ import dev.chrisbanes.haze.HazeInput import dev.chrisbanes.haze.HazeState import dev.chrisbanes.haze.blur.HazeBlurStyle import dev.chrisbanes.haze.blur.hazeBlur -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.squircle.squircleBorder diff --git a/app/src/screen/moe/MoeHomePage.kt b/app/src/screen/moe/MoeHomePage.kt index 572c6e33c..2fb90667b 100644 --- a/app/src/screen/moe/MoeHomePage.kt +++ b/app/src/screen/moe/MoeHomePage.kt @@ -64,7 +64,7 @@ import com.github.yumeyucca.yumebox.screen.home.HomeViewModel import com.github.yumeyucca.yumebox.screen.settings.AppSettingsViewModel import kotlinx.coroutines.launch import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.theme.MiuixTheme @Composable diff --git a/app/src/screen/moe/MoeHomeRuntimeInfo.kt b/app/src/screen/moe/MoeHomeRuntimeInfo.kt index 9e9f815f0..f17fba202 100644 --- a/app/src/screen/moe/MoeHomeRuntimeInfo.kt +++ b/app/src/screen/moe/MoeHomeRuntimeInfo.kt @@ -28,7 +28,7 @@ import com.github.yumeyucca.yumebox.common.util.formatBytesForDisplay import com.github.yumeyucca.yumebox.presentation.component.CountryFlagCircle import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.util.extractFlaggedName -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/app/src/screen/moe/MoeHomeSettingsSheet.kt b/app/src/screen/moe/MoeHomeSettingsSheet.kt index cb8f46cfc..d8117f4d8 100644 --- a/app/src/screen/moe/MoeHomeSettingsSheet.kt +++ b/app/src/screen/moe/MoeHomeSettingsSheet.kt @@ -21,7 +21,7 @@ import androidx.compose.runtime.* import androidx.compose.ui.Modifier import com.github.yumeyucca.yumebox.presentation.component.* import com.github.yumeyucca.yumebox.presentation.theme.AppTheme -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt @Composable internal fun MoeHomeSettingsSheet( diff --git a/app/src/screen/moe/MoeHomeSkeletonMockup.kt b/app/src/screen/moe/MoeHomeSkeletonMockup.kt index 5018df658..7f81f2c7d 100644 --- a/app/src/screen/moe/MoeHomeSkeletonMockup.kt +++ b/app/src/screen/moe/MoeHomeSkeletonMockup.kt @@ -40,7 +40,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.github.yumeyucca.yumebox.presentation.theme.AppTheme -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/app/src/screen/moe/SystemWallpaperPreferenceItem.kt b/app/src/screen/moe/SystemWallpaperPreferenceItem.kt index 0a22dc77b..94c8d3de8 100644 --- a/app/src/screen/moe/SystemWallpaperPreferenceItem.kt +++ b/app/src/screen/moe/SystemWallpaperPreferenceItem.kt @@ -11,7 +11,7 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner import com.github.yumeyucca.yumebox.presentation.component.PreferenceSwitchItem -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt @Composable internal fun SystemWallpaperPreferenceItem( diff --git a/app/src/screen/navigation/EditorDialogs.kt b/app/src/screen/navigation/EditorDialogs.kt index 4e4e37d9c..7b4dc443f 100644 --- a/app/src/screen/navigation/EditorDialogs.kt +++ b/app/src/screen/navigation/EditorDialogs.kt @@ -30,7 +30,7 @@ import com.github.yumeyucca.yumebox.presentation.component.AppFormDialog import com.github.yumeyucca.yumebox.presentation.component.AppTextFieldDialog import com.github.yumeyucca.yumebox.presentation.component.OemTextField import com.github.yumeyucca.yumebox.presentation.component.PreferenceValueItem -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Checkbox import top.yukonga.miuix.kmp.basic.Switch import top.yukonga.miuix.kmp.preference.WindowDropdownPreference diff --git a/app/src/screen/navigation/KeyValueEditorScreen.kt b/app/src/screen/navigation/KeyValueEditorScreen.kt index c9a861638..6c3b15e54 100644 --- a/app/src/screen/navigation/KeyValueEditorScreen.kt +++ b/app/src/screen/navigation/KeyValueEditorScreen.kt @@ -33,7 +33,7 @@ import com.github.yumeyucca.yumebox.presentation.component.* import com.github.yumeyucca.yumebox.presentation.icon.Yume import com.github.yumeyucca.yumebox.presentation.icon.yume.BadgePlus import dev.chrisbanes.haze.hazeSource -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.icon.MiuixIcons import top.yukonga.miuix.kmp.icon.extended.AddCircle diff --git a/app/src/screen/navigation/OverrideNavigation.kt b/app/src/screen/navigation/OverrideNavigation.kt index 134d2058a..82a276c16 100644 --- a/app/src/screen/navigation/OverrideNavigation.kt +++ b/app/src/screen/navigation/OverrideNavigation.kt @@ -33,7 +33,7 @@ import com.github.yumeyucca.yumebox.presentation.screen.OverrideListScreen import com.github.yumeyucca.yumebox.presentation.util.OverrideEditorStore import com.github.yumeyucca.yumebox.presentation.viewmodel.OverrideConfigViewModel import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt @Composable fun OverrideScreen(navigator: Navigator) { diff --git a/app/src/screen/profiles/ProfileActionDialogs.kt b/app/src/screen/profiles/ProfileActionDialogs.kt index 534bda18e..1bf8a7686 100644 --- a/app/src/screen/profiles/ProfileActionDialogs.kt +++ b/app/src/screen/profiles/ProfileActionDialogs.kt @@ -36,7 +36,7 @@ import com.github.yumeyucca.yumebox.presentation.component.LocalNavigator import com.github.yumeyucca.yumebox.presentation.navigation.Route import com.github.yumeyucca.yumebox.presentation.util.OverrideEditorStore import com.github.yumeyucca.yumebox.runtime.api.Profile -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt @Composable internal fun ProfileShareDialog( diff --git a/app/src/screen/profiles/ProfileAddSheet.kt b/app/src/screen/profiles/ProfileAddSheet.kt index 4d4450a67..1acafa35b 100644 --- a/app/src/screen/profiles/ProfileAddSheet.kt +++ b/app/src/screen/profiles/ProfileAddSheet.kt @@ -37,7 +37,7 @@ import androidx.core.content.ContextCompat import com.github.yumeyucca.yumebox.common.util.toast import com.github.yumeyucca.yumebox.presentation.util.* import com.github.yumeyucca.yumebox.runtime.api.Profile -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import java.util.* import kotlin.math.max diff --git a/app/src/screen/profiles/ProfileAddSheetContent.kt b/app/src/screen/profiles/ProfileAddSheetContent.kt index 563ad0a45..dfba1fc58 100644 --- a/app/src/screen/profiles/ProfileAddSheetContent.kt +++ b/app/src/screen/profiles/ProfileAddSheetContent.kt @@ -50,7 +50,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.Yume import com.github.yumeyucca.yumebox.presentation.icon.yume.PackageCheck import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.github.yumeyucca.yumebox.presentation.util.ProfileImportType -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.* import top.yukonga.miuix.kmp.preference.WindowSpinnerPreference import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/app/src/screen/profiles/ProfileAddSheetLayout.kt b/app/src/screen/profiles/ProfileAddSheetLayout.kt index b6786a98e..521854775 100644 --- a/app/src/screen/profiles/ProfileAddSheetLayout.kt +++ b/app/src/screen/profiles/ProfileAddSheetLayout.kt @@ -42,7 +42,7 @@ import com.github.yumeyucca.yumebox.presentation.component.AppBottomSheetCloseAc import com.github.yumeyucca.yumebox.presentation.component.AppBottomSheetConfirmAction import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.github.yumeyucca.yumebox.presentation.util.ProfileImportType -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt internal class ProfileAddSheetActions( val dismiss: () -> Unit, diff --git a/app/src/screen/profiles/ProfileDialogs.kt b/app/src/screen/profiles/ProfileDialogs.kt index 73fcaf409..a078a71d9 100644 --- a/app/src/screen/profiles/ProfileDialogs.kt +++ b/app/src/screen/profiles/ProfileDialogs.kt @@ -54,7 +54,7 @@ import com.github.yumeyucca.yumebox.runtime.api.Profile import kotlinx.coroutines.launch import sh.calvin.reorderable.ReorderableItem import sh.calvin.reorderable.rememberReorderableLazyListState -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.* import top.yukonga.miuix.kmp.preference.SwitchPreference import top.yukonga.miuix.kmp.preference.WindowSpinnerPreference diff --git a/app/src/screen/profiles/ProfileImportLaunchers.kt b/app/src/screen/profiles/ProfileImportLaunchers.kt index 15df43b4f..588c62cfb 100644 --- a/app/src/screen/profiles/ProfileImportLaunchers.kt +++ b/app/src/screen/profiles/ProfileImportLaunchers.kt @@ -31,7 +31,7 @@ import com.github.yumeyucca.yumebox.common.util.toast import com.github.yumeyucca.yumebox.presentation.util.isYamlConfigFileName import com.github.yumeyucca.yumebox.presentation.util.readDisplayName import kotlinx.coroutines.launch -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import timber.log.Timber internal data class ProfileImportLaunchers( diff --git a/app/src/screen/profiles/ProfileLinkSettings.kt b/app/src/screen/profiles/ProfileLinkSettings.kt index c505124af..325437fc7 100644 --- a/app/src/screen/profiles/ProfileLinkSettings.kt +++ b/app/src/screen/profiles/ProfileLinkSettings.kt @@ -33,7 +33,7 @@ import com.github.yumeyucca.yumebox.data.store.ProfileLink import com.github.yumeyucca.yumebox.presentation.component.AppActionBottomSheet import com.github.yumeyucca.yumebox.presentation.component.AppFormDialog import com.github.yumeyucca.yumebox.presentation.component.OemTextField -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt @Composable internal fun LinkSettingsDialog( diff --git a/app/src/screen/profiles/ProfileLinkSettingsContent.kt b/app/src/screen/profiles/ProfileLinkSettingsContent.kt index 8cc3b6e27..2fef3239f 100644 --- a/app/src/screen/profiles/ProfileLinkSettingsContent.kt +++ b/app/src/screen/profiles/ProfileLinkSettingsContent.kt @@ -35,7 +35,7 @@ import com.github.yumeyucca.yumebox.presentation.component.PreferenceEnumItem import com.github.yumeyucca.yumebox.presentation.component.SectionCard import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.* import top.yukonga.miuix.kmp.icon.MiuixIcons import top.yukonga.miuix.kmp.icon.extended.Delete diff --git a/app/src/screen/profiles/ProfileSimpleDialogs.kt b/app/src/screen/profiles/ProfileSimpleDialogs.kt index dbec80e48..4277459e5 100644 --- a/app/src/screen/profiles/ProfileSimpleDialogs.kt +++ b/app/src/screen/profiles/ProfileSimpleDialogs.kt @@ -35,7 +35,7 @@ import com.github.yumeyucca.yumebox.presentation.component.AppTextFieldDialog import com.github.yumeyucca.yumebox.presentation.component.DialogButtonRow import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.runtime.api.Profile -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Button import top.yukonga.miuix.kmp.basic.ButtonDefaults import top.yukonga.miuix.kmp.basic.Text diff --git a/app/src/screen/profiles/ProfileSubmission.kt b/app/src/screen/profiles/ProfileSubmission.kt index d78639a3c..94ee2f357 100644 --- a/app/src/screen/profiles/ProfileSubmission.kt +++ b/app/src/screen/profiles/ProfileSubmission.kt @@ -23,7 +23,7 @@ import android.net.Uri import androidx.core.net.toUri import com.github.yumeyucca.yumebox.presentation.util.ProfileImportType import com.github.yumeyucca.yumebox.runtime.api.Profile -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import java.util.* internal typealias AddProfile = (String, String, Profile.Type, Long, Uri?, String) -> Unit diff --git a/app/src/screen/profiles/ProfilesDialogHost.kt b/app/src/screen/profiles/ProfilesDialogHost.kt index 49d05925a..793527191 100644 --- a/app/src/screen/profiles/ProfilesDialogHost.kt +++ b/app/src/screen/profiles/ProfilesDialogHost.kt @@ -38,7 +38,7 @@ import com.github.yumeyucca.yumebox.runtime.client.ProfilePatch import com.github.yumeyucca.yumebox.screen.home.HomeViewModel import kotlinx.coroutines.launch import org.koin.compose.koinInject -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import timber.log.Timber @Composable diff --git a/app/src/screen/profiles/ProfilesPageContent.kt b/app/src/screen/profiles/ProfilesPageContent.kt index f1b16337c..81c9825e8 100644 --- a/app/src/screen/profiles/ProfilesPageContent.kt +++ b/app/src/screen/profiles/ProfilesPageContent.kt @@ -41,7 +41,7 @@ import com.github.yumeyucca.yumebox.screen.home.HomeViewModel import kotlinx.coroutines.launch import sh.calvin.reorderable.ReorderableItem import sh.calvin.reorderable.rememberReorderableLazyListState -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.* import top.yukonga.miuix.kmp.theme.MiuixTheme import top.yukonga.miuix.kmp.utils.PressFeedbackType diff --git a/app/src/screen/profiles/ProfilesPagerSupport.kt b/app/src/screen/profiles/ProfilesPagerSupport.kt index 0b1b95865..ebe50921c 100644 --- a/app/src/screen/profiles/ProfilesPagerSupport.kt +++ b/app/src/screen/profiles/ProfilesPagerSupport.kt @@ -30,7 +30,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import com.github.yumeyucca.yumebox.presentation.component.AppDialog import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Button import top.yukonga.miuix.kmp.basic.ButtonDefaults import top.yukonga.miuix.kmp.basic.Text diff --git a/app/src/screen/profiles/ProfilesUiModels.kt b/app/src/screen/profiles/ProfilesUiModels.kt index b5e1b7b4b..ac4bd37ff 100644 --- a/app/src/screen/profiles/ProfilesUiModels.kt +++ b/app/src/screen/profiles/ProfilesUiModels.kt @@ -22,7 +22,7 @@ package com.github.yumeyucca.yumebox.screen.profiles import com.github.yumeyucca.yumebox.core.model.FetchStatus import com.github.yumeyucca.yumebox.core.presentation.LoadableState -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt sealed interface ProfilesUiEffect { data class ShowMessage(val message: String) : ProfilesUiEffect diff --git a/app/src/screen/profiles/ProfilesViewModel.kt b/app/src/screen/profiles/ProfilesViewModel.kt index c2b8956cb..4466d9a95 100644 --- a/app/src/screen/profiles/ProfilesViewModel.kt +++ b/app/src/screen/profiles/ProfilesViewModel.kt @@ -41,7 +41,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import timber.log.Timber import java.util.* diff --git a/app/src/screen/rules/RulesScreen.kt b/app/src/screen/rules/RulesScreen.kt index 63e87fbd2..b8f19c83f 100644 --- a/app/src/screen/rules/RulesScreen.kt +++ b/app/src/screen/rules/RulesScreen.kt @@ -44,7 +44,7 @@ import com.github.yumeyucca.yumebox.core.model.RuntimeRule import com.github.yumeyucca.yumebox.presentation.component.* import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.Scaffold import top.yukonga.miuix.kmp.basic.Switch diff --git a/app/src/screen/settings/AccessControlMenus.kt b/app/src/screen/settings/AccessControlMenus.kt index ae6309d43..b1bbf7452 100644 --- a/app/src/screen/settings/AccessControlMenus.kt +++ b/app/src/screen/settings/AccessControlMenus.kt @@ -26,7 +26,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalContext import com.github.yumeyucca.yumebox.data.model.AccessControlSortMode -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.DropdownEntry import top.yukonga.miuix.kmp.basic.DropdownItem import top.yukonga.miuix.kmp.overlay.OverlayCascadingListPopup diff --git a/app/src/screen/settings/AccessControlScreen.kt b/app/src/screen/settings/AccessControlScreen.kt index 78531e9ea..55b6329b8 100644 --- a/app/src/screen/settings/AccessControlScreen.kt +++ b/app/src/screen/settings/AccessControlScreen.kt @@ -42,7 +42,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.yume.Settings2 import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.theme.AppTheme.spacing import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.* import top.yukonga.miuix.kmp.icon.MiuixIcons import top.yukonga.miuix.kmp.icon.basic.Search diff --git a/app/src/screen/settings/AgeKeyGeneratorDialog.kt b/app/src/screen/settings/AgeKeyGeneratorDialog.kt index 5bf504824..bbdd81a74 100644 --- a/app/src/screen/settings/AgeKeyGeneratorDialog.kt +++ b/app/src/screen/settings/AgeKeyGeneratorDialog.kt @@ -36,7 +36,7 @@ import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.ButtonDefaults import top.yukonga.miuix.kmp.basic.TextButton diff --git a/app/src/screen/settings/AppSettingsScreen.kt b/app/src/screen/settings/AppSettingsScreen.kt index 92e279224..df0ee1135 100644 --- a/app/src/screen/settings/AppSettingsScreen.kt +++ b/app/src/screen/settings/AppSettingsScreen.kt @@ -47,7 +47,7 @@ import com.github.yumeyucca.yumebox.screen.moe.SystemWallpaperPreferenceItem import com.github.yumeyucca.yumebox.runtime.api.Intents import com.github.yumeyucca.yumebox.screen.settings.component.ThemeColorPickerItem import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.* import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/app/src/screen/settings/AppSettingsViewModel.kt b/app/src/screen/settings/AppSettingsViewModel.kt index a9d38af33..9a13764c6 100644 --- a/app/src/screen/settings/AppSettingsViewModel.kt +++ b/app/src/screen/settings/AppSettingsViewModel.kt @@ -46,7 +46,7 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt class AppSettingsViewModel( private val application: Application, diff --git a/app/src/screen/settings/EbpfServiceOptionsScreen.kt b/app/src/screen/settings/EbpfServiceOptionsScreen.kt index ce0460a9a..7a81cac10 100644 --- a/app/src/screen/settings/EbpfServiceOptionsScreen.kt +++ b/app/src/screen/settings/EbpfServiceOptionsScreen.kt @@ -34,7 +34,7 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import com.github.yumeyucca.yumebox.presentation.component.* import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.Scaffold diff --git a/app/src/screen/settings/MetaFeatureScreen.kt b/app/src/screen/settings/MetaFeatureScreen.kt index 41f8b6311..7a36dd4e2 100644 --- a/app/src/screen/settings/MetaFeatureScreen.kt +++ b/app/src/screen/settings/MetaFeatureScreen.kt @@ -45,7 +45,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.koin.compose.koinInject -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.BasicComponent import top.yukonga.miuix.kmp.basic.ButtonDefaults import top.yukonga.miuix.kmp.basic.Checkbox diff --git a/app/src/screen/settings/MoeWallpaperCropScreen.kt b/app/src/screen/settings/MoeWallpaperCropScreen.kt index 52a8d74b6..ad4f7e8b2 100644 --- a/app/src/screen/settings/MoeWallpaperCropScreen.kt +++ b/app/src/screen/settings/MoeWallpaperCropScreen.kt @@ -51,7 +51,7 @@ import com.github.yumeyucca.yumebox.presentation.theme.UiDp import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Button import top.yukonga.miuix.kmp.basic.ButtonDefaults import top.yukonga.miuix.kmp.basic.Scaffold diff --git a/app/src/screen/settings/NetworkSettingsScreen.kt b/app/src/screen/settings/NetworkSettingsScreen.kt index cd796f10c..6f55f06c6 100644 --- a/app/src/screen/settings/NetworkSettingsScreen.kt +++ b/app/src/screen/settings/NetworkSettingsScreen.kt @@ -49,7 +49,7 @@ import com.github.yumeyucca.yumebox.presentation.navigation.Route import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.runtime.service.core.KernelManager import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.* import top.yukonga.miuix.kmp.preference.WindowDropdownPreference diff --git a/app/src/screen/settings/SettingPager.kt b/app/src/screen/settings/SettingPager.kt index ee3834399..0605e540c 100644 --- a/app/src/screen/settings/SettingPager.kt +++ b/app/src/screen/settings/SettingPager.kt @@ -50,7 +50,7 @@ import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.viewmodel.SettingEvent import com.github.yumeyucca.yumebox.presentation.viewmodel.SettingViewModel import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.Scaffold diff --git a/app/src/screen/settings/TunServiceOptionsScreen.kt b/app/src/screen/settings/TunServiceOptionsScreen.kt index 2854be636..8d20390f5 100644 --- a/app/src/screen/settings/TunServiceOptionsScreen.kt +++ b/app/src/screen/settings/TunServiceOptionsScreen.kt @@ -33,7 +33,7 @@ import com.github.yumeyucca.yumebox.core.model.TunDnsMode import com.github.yumeyucca.yumebox.data.model.TunStack import com.github.yumeyucca.yumebox.presentation.component.* import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.Scaffold diff --git a/app/src/screen/settings/VpnServiceOptionsScreen.kt b/app/src/screen/settings/VpnServiceOptionsScreen.kt index e3d55b382..399ec167f 100644 --- a/app/src/screen/settings/VpnServiceOptionsScreen.kt +++ b/app/src/screen/settings/VpnServiceOptionsScreen.kt @@ -29,7 +29,7 @@ import androidx.compose.runtime.getValue import com.github.yumeyucca.yumebox.data.model.TunStack import com.github.yumeyucca.yumebox.presentation.component.* import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.Scaffold diff --git a/app/src/screen/settings/WifiAutomationScreen.kt b/app/src/screen/settings/WifiAutomationScreen.kt index 564af4ac2..81a3d5aea 100644 --- a/app/src/screen/settings/WifiAutomationScreen.kt +++ b/app/src/screen/settings/WifiAutomationScreen.kt @@ -52,7 +52,7 @@ import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.github.yumeyucca.yumebox.runtime.api.Profile import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.BasicComponent import top.yukonga.miuix.kmp.basic.ButtonDefaults import top.yukonga.miuix.kmp.basic.InfiniteProgressIndicator diff --git a/app/src/screen/settings/backup/BackupRestoreSection.kt b/app/src/screen/settings/backup/BackupRestoreSection.kt index 5000e2f52..24daf824d 100644 --- a/app/src/screen/settings/backup/BackupRestoreSection.kt +++ b/app/src/screen/settings/backup/BackupRestoreSection.kt @@ -37,7 +37,7 @@ import com.github.yumeyucca.yumebox.presentation.component.AppCard import com.github.yumeyucca.yumebox.presentation.component.Title import com.github.yumeyucca.yumebox.presentation.theme.UiDp import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Button import top.yukonga.miuix.kmp.basic.ButtonDefaults import top.yukonga.miuix.kmp.basic.Text diff --git a/app/src/screen/settings/backup/BackupRestoreViewModel.kt b/app/src/screen/settings/backup/BackupRestoreViewModel.kt index ded6b02c2..6026ce65e 100644 --- a/app/src/screen/settings/backup/BackupRestoreViewModel.kt +++ b/app/src/screen/settings/backup/BackupRestoreViewModel.kt @@ -28,7 +28,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt data class BackupRestoreUiState(val isBusy: Boolean = false) diff --git a/app/src/screen/settings/component/ThemeAppearanceComponents.kt b/app/src/screen/settings/component/ThemeAppearanceComponents.kt index b1316c584..3b22d9173 100644 --- a/app/src/screen/settings/component/ThemeAppearanceComponents.kt +++ b/app/src/screen/settings/component/ThemeAppearanceComponents.kt @@ -42,7 +42,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.yume.Palette import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.github.yumeyucca.yumebox.presentation.theme.colorFromArgb import com.github.yumeyucca.yumebox.presentation.theme.colorToArgbLong -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.BasicComponent import top.yukonga.miuix.kmp.basic.ColorPicker import top.yukonga.miuix.kmp.basic.Icon diff --git a/app/src/screen/traffic/TrafficStatisticsScreen.kt b/app/src/screen/traffic/TrafficStatisticsScreen.kt index ac0999147..5297f4e61 100644 --- a/app/src/screen/traffic/TrafficStatisticsScreen.kt +++ b/app/src/screen/traffic/TrafficStatisticsScreen.kt @@ -52,7 +52,7 @@ import com.github.yumeyucca.yumebox.presentation.theme.UiDp import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.HorizontalDivider import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.IconButton diff --git a/data/src/data/model/BuiltInOverrideCatalog.kt b/data/src/data/model/BuiltInOverrideCatalog.kt index e7238f8da..0bbf6dfb4 100644 --- a/data/src/data/model/BuiltInOverrideCatalog.kt +++ b/data/src/data/model/BuiltInOverrideCatalog.kt @@ -21,7 +21,7 @@ package com.github.yumeyucca.yumebox.data.model import com.github.yumeyucca.yumebox.core.model.OverrideInternalConstants -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt /** * APK-bundled override templates (from override-hub). Content lives under diff --git a/data/src/data/model/ProxyDisplaySettings.kt b/data/src/data/model/ProxyDisplaySettings.kt index faa5936fe..8c3f7dd07 100644 --- a/data/src/data/model/ProxyDisplaySettings.kt +++ b/data/src/data/model/ProxyDisplaySettings.kt @@ -23,7 +23,7 @@ package com.github.yumeyucca.yumebox.data.model -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt const val PROXY_SHEET_HEIGHT_FRACTION_MIN = 0.5f const val PROXY_SHEET_HEIGHT_FRACTION_MAX = 0.8f diff --git a/data/src/data/model/TrafficStatistics.kt b/data/src/data/model/TrafficStatistics.kt index b57852365..81c950fe9 100644 --- a/data/src/data/model/TrafficStatistics.kt +++ b/data/src/data/model/TrafficStatistics.kt @@ -120,7 +120,7 @@ enum class StatisticsTimeRange(val days: Int) { val label: String get() = when (this) { - TODAY -> tf.gal.yumebox.locale.YumeTxt.TrafficStatistics.TimeRange.Today - WEEK -> tf.gal.yumebox.locale.YumeTxt.TrafficStatistics.TimeRange.Week + TODAY -> com.github.yumeyucca.yumebox.core.locale.YumeTxt.TrafficStatistics.TimeRange.Today + WEEK -> com.github.yumeyucca.yumebox.core.locale.YumeTxt.TrafficStatistics.TimeRange.Week } } diff --git a/docs/ThirdParty.md b/docs/ThirdParty.md index ede3b82db..ccca83eac 100644 --- a/docs/ThirdParty.md +++ b/docs/ThirdParty.md @@ -10,4 +10,4 @@ to express our sincere gratitude to the developers and communities behind these - [Gropify](https://github.com/HighCapable/Gropify) - [Lucide](https://github.com/lucide-icons/lucide) - [Circle Flags](https://github.com/HatScripts/circle-flags) -- [ShiroSU FYL](https://github.com/OOM-WG/ShiroSU-FYL) +- [Lyricist](https://github.com/adrielcafe/lyricist) diff --git a/feature/editor/src/feature/editor/component/CodeEditorDialog.kt b/feature/editor/src/feature/editor/component/CodeEditorDialog.kt index d2c04ef31..17e9d996a 100644 --- a/feature/editor/src/feature/editor/component/CodeEditorDialog.kt +++ b/feature/editor/src/feature/editor/component/CodeEditorDialog.kt @@ -31,7 +31,7 @@ import com.github.yumeyucca.yumebox.feature.editor.language.LanguageScope import com.github.yumeyucca.yumebox.presentation.component.AppDialog import com.github.yumeyucca.yumebox.presentation.component.DialogButtonRow import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/feature/editor/src/feature/editor/screen/ConfigEditorScreen.kt b/feature/editor/src/feature/editor/screen/ConfigEditorScreen.kt index 11c541c6d..a757b75d2 100644 --- a/feature/editor/src/feature/editor/screen/ConfigEditorScreen.kt +++ b/feature/editor/src/feature/editor/screen/ConfigEditorScreen.kt @@ -37,7 +37,7 @@ import com.github.yumeyucca.yumebox.presentation.component.DialogButtonRow import com.github.yumeyucca.yumebox.presentation.component.Navigator import com.github.yumeyucca.yumebox.presentation.component.TopBar import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.Scaffold diff --git a/feature/editor/src/feature/editor/screen/ConfigPreviewScreen.kt b/feature/editor/src/feature/editor/screen/ConfigPreviewScreen.kt index ffe0ecd62..c6fe69f41 100644 --- a/feature/editor/src/feature/editor/screen/ConfigPreviewScreen.kt +++ b/feature/editor/src/feature/editor/screen/ConfigPreviewScreen.kt @@ -41,7 +41,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.yume.ListCollapse import com.github.yumeyucca.yumebox.presentation.icon.yume.Save import com.github.yumeyucca.yumebox.presentation.theme.UiDp import kotlinx.coroutines.launch -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.IconButton import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior diff --git a/feature/editor/src/feature/editor/screen/FullscreenEditorScreen.kt b/feature/editor/src/feature/editor/screen/FullscreenEditorScreen.kt index 22fba70fb..1205b2f69 100644 --- a/feature/editor/src/feature/editor/screen/FullscreenEditorScreen.kt +++ b/feature/editor/src/feature/editor/screen/FullscreenEditorScreen.kt @@ -42,7 +42,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.Yume import com.github.yumeyucca.yumebox.presentation.icon.yume.Atom import com.github.yumeyucca.yumebox.presentation.icon.yume.Save import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.IconButton import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior diff --git a/feature/meta/src/feature/meta/presentation/component/ConnectionCard.kt b/feature/meta/src/feature/meta/presentation/component/ConnectionCard.kt index 9fe3a2ef3..304f37be4 100644 --- a/feature/meta/src/feature/meta/presentation/component/ConnectionCard.kt +++ b/feature/meta/src/feature/meta/presentation/component/ConnectionCard.kt @@ -40,7 +40,7 @@ import androidx.compose.ui.unit.sp import com.github.yumeyucca.yumebox.core.model.ConnectionInfo import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import kotlinx.serialization.json.jsonPrimitive -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme import top.yukonga.miuix.kmp.utils.SinkFeedback diff --git a/feature/meta/src/feature/meta/presentation/component/ConnectionDetailContent.kt b/feature/meta/src/feature/meta/presentation/component/ConnectionDetailContent.kt index c7cd922fb..9bbf915d3 100644 --- a/feature/meta/src/feature/meta/presentation/component/ConnectionDetailContent.kt +++ b/feature/meta/src/feature/meta/presentation/component/ConnectionDetailContent.kt @@ -44,7 +44,7 @@ import com.github.yumeyucca.yumebox.presentation.component.Title import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.jsonPrimitive -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.BasicComponent import top.yukonga.miuix.kmp.basic.Button import top.yukonga.miuix.kmp.basic.ButtonDefaults diff --git a/feature/meta/src/feature/meta/presentation/screen/CustomRoutingScreen.kt b/feature/meta/src/feature/meta/presentation/screen/CustomRoutingScreen.kt index 158f7fdb8..d93f37521 100644 --- a/feature/meta/src/feature/meta/presentation/screen/CustomRoutingScreen.kt +++ b/feature/meta/src/feature/meta/presentation/screen/CustomRoutingScreen.kt @@ -34,7 +34,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.Yume import com.github.yumeyucca.yumebox.presentation.icon.yume.Edit import kotlinx.coroutines.launch import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.IconButton import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior diff --git a/feature/meta/src/feature/meta/presentation/viewmodel/TrafficStatisticsViewModel.kt b/feature/meta/src/feature/meta/presentation/viewmodel/TrafficStatisticsViewModel.kt index f5378a386..e055a5fec 100644 --- a/feature/meta/src/feature/meta/presentation/viewmodel/TrafficStatisticsViewModel.kt +++ b/feature/meta/src/feature/meta/presentation/viewmodel/TrafficStatisticsViewModel.kt @@ -32,7 +32,7 @@ import com.github.yumeyucca.yumebox.presentation.component.BarChartItem import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import java.util.* class TrafficStatisticsViewModel(private val trafficStatisticsStore: TrafficStatisticsStore) : diff --git a/feature/override/src/presentation/screen/ListScreen.kt b/feature/override/src/presentation/screen/ListScreen.kt index 023833afc..971245d4c 100644 --- a/feature/override/src/presentation/screen/ListScreen.kt +++ b/feature/override/src/presentation/screen/ListScreen.kt @@ -40,7 +40,7 @@ import com.github.yumeyucca.yumebox.presentation.viewmodel.OverrideConfigViewMod import org.koin.androidx.compose.koinViewModel import sh.calvin.reorderable.ReorderableItem import sh.calvin.reorderable.rememberReorderableLazyListState -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.Scaffold diff --git a/feature/override/src/presentation/screen/OverrideApplyToProfilesSheet.kt b/feature/override/src/presentation/screen/OverrideApplyToProfilesSheet.kt index a017309ec..83c2fede7 100644 --- a/feature/override/src/presentation/screen/OverrideApplyToProfilesSheet.kt +++ b/feature/override/src/presentation/screen/OverrideApplyToProfilesSheet.kt @@ -39,7 +39,7 @@ import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.github.yumeyucca.yumebox.presentation.viewmodel.OverrideConfigViewModel import com.github.yumeyucca.yumebox.runtime.api.Profile import kotlinx.coroutines.launch -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.preference.CheckboxLocation import top.yukonga.miuix.kmp.preference.CheckboxPreference diff --git a/feature/override/src/presentation/screen/OverrideConfigCard.kt b/feature/override/src/presentation/screen/OverrideConfigCard.kt index 5501166ce..3d560e89c 100644 --- a/feature/override/src/presentation/screen/OverrideConfigCard.kt +++ b/feature/override/src/presentation/screen/OverrideConfigCard.kt @@ -37,7 +37,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.yume.* import com.github.yumeyucca.yumebox.presentation.theme.Spacing import com.github.yumeyucca.yumebox.presentation.theme.UiDp import sh.calvin.reorderable.ReorderableCollectionItemScope -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.HorizontalDivider import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.IconButton diff --git a/feature/override/src/presentation/screen/OverrideConfigDialogs.kt b/feature/override/src/presentation/screen/OverrideConfigDialogs.kt index 6314d97ea..986651cae 100644 --- a/feature/override/src/presentation/screen/OverrideConfigDialogs.kt +++ b/feature/override/src/presentation/screen/OverrideConfigDialogs.kt @@ -45,7 +45,7 @@ import com.github.yumeyucca.yumebox.presentation.component.OemTextField import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.github.yumeyucca.yumebox.presentation.viewmodel.OverrideConfigViewModel import kotlinx.coroutines.launch -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.* import top.yukonga.miuix.kmp.preference.OverlayDropdownPreference import top.yukonga.miuix.kmp.theme.MiuixTheme.colorScheme diff --git a/feature/override/src/presentation/viewmodel/ConfigViewModel.kt b/feature/override/src/presentation/viewmodel/ConfigViewModel.kt index 9eaa0cd4e..998a2a99c 100644 --- a/feature/override/src/presentation/viewmodel/ConfigViewModel.kt +++ b/feature/override/src/presentation/viewmodel/ConfigViewModel.kt @@ -43,7 +43,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import timber.log.Timber import java.io.ByteArrayOutputStream import java.io.InputStream diff --git a/feature/proxy/src/ProxySheetContent.kt b/feature/proxy/src/ProxySheetContent.kt index d9fea3957..1e50b4452 100644 --- a/feature/proxy/src/ProxySheetContent.kt +++ b/feature/proxy/src/ProxySheetContent.kt @@ -47,7 +47,7 @@ import com.github.yumeyucca.yumebox.presentation.theme.AnimationSpecs import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.github.yumeyucca.yumebox.presentation.viewmodel.ProxyViewModel import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.PopupPositionProvider import top.yukonga.miuix.kmp.icon.MiuixIcons import top.yukonga.miuix.kmp.icon.extended.Back diff --git a/feature/proxy/src/presentation/screen/Providers.kt b/feature/proxy/src/presentation/screen/Providers.kt index 90b0251be..ad440aae8 100644 --- a/feature/proxy/src/presentation/screen/Providers.kt +++ b/feature/proxy/src/presentation/screen/Providers.kt @@ -42,7 +42,7 @@ import com.github.yumeyucca.yumebox.presentation.component.AppCard import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.github.yumeyucca.yumebox.presentation.viewmodel.ProvidersViewModel import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.DropdownImpl import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.IconButton diff --git a/feature/proxy/src/presentation/screen/Proxy.kt b/feature/proxy/src/presentation/screen/Proxy.kt index 2f69ea010..1a034172c 100644 --- a/feature/proxy/src/presentation/screen/Proxy.kt +++ b/feature/proxy/src/presentation/screen/Proxy.kt @@ -43,7 +43,7 @@ import dev.chrisbanes.haze.hazeSource import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.* import top.yukonga.miuix.kmp.icon.MiuixIcons import top.yukonga.miuix.kmp.icon.extended.Back diff --git a/feature/proxy/src/presentation/screen/node/NodeCard.kt b/feature/proxy/src/presentation/screen/node/NodeCard.kt index ffe00c441..c8d4bc2c7 100644 --- a/feature/proxy/src/presentation/screen/node/NodeCard.kt +++ b/feature/proxy/src/presentation/screen/node/NodeCard.kt @@ -54,7 +54,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.yume.clock import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.github.yumeyucca.yumebox.presentation.util.extractNodeTags -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/feature/proxy/src/presentation/screen/node/NodeContent.kt b/feature/proxy/src/presentation/screen/node/NodeContent.kt index 9e3c49324..f83b06ea8 100644 --- a/feature/proxy/src/presentation/screen/node/NodeContent.kt +++ b/feature/proxy/src/presentation/screen/node/NodeContent.kt @@ -55,7 +55,7 @@ import dev.chrisbanes.haze.HazeProgressive import dev.chrisbanes.haze.HazeState import kotlinx.coroutines.flow.StateFlow import dev.chrisbanes.haze.blur.HazeBlurStyle -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme import top.yukonga.miuix.kmp.utils.overScrollHorizontal diff --git a/feature/proxy/src/presentation/screen/node/NodeDelayRefreshIndicator.kt b/feature/proxy/src/presentation/screen/node/NodeDelayRefreshIndicator.kt index 2aa60e23d..4adf52353 100644 --- a/feature/proxy/src/presentation/screen/node/NodeDelayRefreshIndicator.kt +++ b/feature/proxy/src/presentation/screen/node/NodeDelayRefreshIndicator.kt @@ -40,7 +40,7 @@ import com.github.yumeyucca.yumebox.presentation.theme.AnimationSpecs import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.github.yumeyucca.yumebox.presentation.viewmodel.ProxyDelayTestProgress import kotlinx.coroutines.flow.StateFlow -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.InfiniteProgressIndicator import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/feature/proxy/src/presentation/screen/node/NodeGroups.kt b/feature/proxy/src/presentation/screen/node/NodeGroups.kt index cf63ca0a9..cf2922f8d 100644 --- a/feature/proxy/src/presentation/screen/node/NodeGroups.kt +++ b/feature/proxy/src/presentation/screen/node/NodeGroups.kt @@ -57,7 +57,7 @@ import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.theme.UiDp import com.github.yumeyucca.yumebox.presentation.theme.rememberRowShown import com.github.yumeyucca.yumebox.presentation.theme.rowReveal -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/feature/proxy/src/presentation/screen/node/NodeSearchToolbar.kt b/feature/proxy/src/presentation/screen/node/NodeSearchToolbar.kt index 23ca8bfba..f5a52a863 100644 --- a/feature/proxy/src/presentation/screen/node/NodeSearchToolbar.kt +++ b/feature/proxy/src/presentation/screen/node/NodeSearchToolbar.kt @@ -59,7 +59,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.yume.ListChevronsUpDown import com.github.yumeyucca.yumebox.presentation.icon.yume.Speed import com.github.yumeyucca.yumebox.presentation.theme.AnimationSpecs import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.IconButton import top.yukonga.miuix.kmp.basic.InputField diff --git a/feature/proxy/src/presentation/screen/node/NodeSortPopup.kt b/feature/proxy/src/presentation/screen/node/NodeSortPopup.kt index e452e0fe0..592650dfd 100644 --- a/feature/proxy/src/presentation/screen/node/NodeSortPopup.kt +++ b/feature/proxy/src/presentation/screen/node/NodeSortPopup.kt @@ -25,7 +25,7 @@ package com.github.yumeyucca.yumebox.presentation.screen.node import androidx.compose.runtime.Composable import com.github.yumeyucca.yumebox.data.model.ProxySortMode -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.DropdownEntry import top.yukonga.miuix.kmp.basic.DropdownItem import top.yukonga.miuix.kmp.basic.PopupPositionProvider diff --git a/feature/proxy/src/presentation/viewmodel/ProvidersViewModel.kt b/feature/proxy/src/presentation/viewmodel/ProvidersViewModel.kt index 3a12ae1c7..2d416a081 100644 --- a/feature/proxy/src/presentation/viewmodel/ProvidersViewModel.kt +++ b/feature/proxy/src/presentation/viewmodel/ProvidersViewModel.kt @@ -32,7 +32,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt class ProvidersViewModel( private val proxyFacade: ProxyFacade, diff --git a/feature/proxy/src/presentation/viewmodel/ProxyViewModel.kt b/feature/proxy/src/presentation/viewmodel/ProxyViewModel.kt index dfbd74080..5e1486bca 100644 --- a/feature/proxy/src/presentation/viewmodel/ProxyViewModel.kt +++ b/feature/proxy/src/presentation/viewmodel/ProxyViewModel.kt @@ -35,7 +35,7 @@ import com.github.yumeyucca.yumebox.runtime.client.ProxyGroupSyncPriority import kotlinx.coroutines.CancellationException import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt sealed interface ProxyDelayTestProgress { data class Running(val completed: Int, val total: Int) : ProxyDelayTestProgress diff --git a/feature/substore/src/presentation/screen/FeatureContent.kt b/feature/substore/src/presentation/screen/FeatureContent.kt index 999d062bd..60ef1323e 100644 --- a/feature/substore/src/presentation/screen/FeatureContent.kt +++ b/feature/substore/src/presentation/screen/FeatureContent.kt @@ -32,7 +32,7 @@ import com.github.yumeyucca.yumebox.presentation.component.* import com.github.yumeyucca.yumebox.presentation.viewmodel.FeatureViewModel import com.github.yumeyucca.yumebox.substore.model.AutoCloseMode import org.koin.androidx.compose.koinViewModel -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.Scaffold import top.yukonga.miuix.kmp.preference.ArrowPreference diff --git a/feature/substore/src/presentation/viewmodel/FeatureViewModel.kt b/feature/substore/src/presentation/viewmodel/FeatureViewModel.kt index c0b500aac..f657f296f 100644 --- a/feature/substore/src/presentation/viewmodel/FeatureViewModel.kt +++ b/feature/substore/src/presentation/viewmodel/FeatureViewModel.kt @@ -44,7 +44,7 @@ import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt class FeatureViewModel( store: FeatureStore, diff --git a/feature/substore/src/substore/model/AutoCloseMode.kt b/feature/substore/src/substore/model/AutoCloseMode.kt index 76065a718..f239b697b 100644 --- a/feature/substore/src/substore/model/AutoCloseMode.kt +++ b/feature/substore/src/substore/model/AutoCloseMode.kt @@ -20,7 +20,7 @@ package com.github.yumeyucca.yumebox.substore.model -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt enum class AutoCloseMode(val minutes: Int?) { ALWAYS_ON(null), diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 030563876..4b888d21a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,4 +1,5 @@ [versions] +lyricist = "1.9.0" soraEditor = "0.24.6" composeBom = "2026.09.00" desugarJdkLibs = "2.1.5" @@ -35,6 +36,8 @@ room = "2.8.5" smaliDexlib2 = "3.0.10" [libraries] +lyricist = { module = "cafe.adriel.lyricist:lyricist", version.ref = "lyricist" } +lyricist-processor = { module = "cafe.adriel.lyricist:lyricist-processor", version.ref = "lyricist" } desugar-jdk-libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugarJdkLibs" } androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "composeBom" } androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } diff --git a/locale/build.gradle.kts b/locale/build.gradle.kts index d9c245e0c..b427f9dd1 100644 --- a/locale/build.gradle.kts +++ b/locale/build.gradle.kts @@ -21,24 +21,7 @@ plugins { id("com.android.library") kotlin("plugin.compose") - - id("ren.shiror.fyl.fytxt") version "2.+" -} - -fytxt { - packageName = "tf.gal.yumebox.locale" - objectName = "YumeTxt" - - langSrcs = mapOf("Locale" to layout.projectDirectory.dir("lang")) - langAliases = mapOf( - "ZH_HANS" to "^ZH_.*(HANS|CN|SG)", - "ZH" to "^ZH_(?!.*(HANS|CN|SG)).*" - ) - defaultLang = "ZH_HANS" - - composeGen = true - internalClass = false - exportDeps = true + id("com.google.devtools.ksp") } android { @@ -52,4 +35,7 @@ android { dependencies { implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.compose.runtime) + implementation(libs.androidx.compose.ui) + implementation(libs.lyricist) + ksp(libs.lyricist.processor) } diff --git a/locale/lang/en/About.fvv b/locale/lang/en/About.fvv deleted file mode 100644 index 42ac6437a..000000000 --- a/locale/lang/en/About.fvv +++ /dev/null @@ -1,44 +0,0 @@ - -About = { - Title = "About" - - App = { - Description = "An open-source Android client based on mihomo" - VersionLoading = "Loading..." - VersionFailed = "Failed to load" - } - - Debug = { - Title = "Debug" - TestInitialization = "Test Initialization" - InitializationReset = "Initialization state reset" - } - - Section = { - ProjectLinks = "Project Links" - More = "More" - Support = "Support" - License = "License" - } - - Link = { - TelegramGroup = "Telegram Group" - TelegramChannel = "Telegram Channel" - } - - Support = { - ExportLogs = "Export Logs" - ReportIssue = "Report a Problem" - ExportSuccess = "Logs exported" - ExportFailed = "Failed to export logs" - } - - License = { - Libraries = "Libraries" - LibrariesSummary = "View all third-party libraries used in this app" - AgplName = "GNU Affero General Public License v3.0" - AgplDescription = "This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License." - } - - Copyright = "© 2025 – Present YumeYucca" -} diff --git a/locale/lang/en/AccessControl.fvv b/locale/lang/en/AccessControl.fvv deleted file mode 100644 index 0e3696f91..000000000 --- a/locale/lang/en/AccessControl.fvv +++ /dev/null @@ -1,48 +0,0 @@ - -AccessControl = { - Title = "Access Control" - - Search = { - Placeholder = "Search apps..." - Empty = "No matching apps" - } - - AppList = { - Title = "App List (%d selected)" - Loading = "Loading..." - } - - Settings = { - Title = "Access Control Settings" - ShowSystemApps = "Show System Apps" - SelectedFirst = "Selected Apps First" - SortMode = "Sort Mode" - SortModeCurrent = "Current: %s" - BatchOperation = "Batch Operation" - SelectAll = "Select All" - DeselectAll = "Deselect All" - Invert = "Invert" - ImportExport = "Import/Export" - Import = "Import from Clipboard" - Export = "Export to Clipboard" - ImportSuccess = "Imported: %d package names" - ExportSuccess = "Copied %d package names to clipboard" - ImportFailed = "Import failed" - RegionQuickSelect = "Region Quick Select" - ChinaApps = "China Apps" - OverseasApps = "Non-China Apps" - RegionSelectResult = "Quick selected by \"%s\", total %d" - } - - SortMode = { - PackageName = "Package Name" - Label = "App Name" - InstallTime = "Install Time" - UpdateTime = "Update Time" - } - - Button = { - Cancel = "Cancel" - Confirm = "Confirm" - } -} diff --git a/locale/lang/en/AppSettings.fvv b/locale/lang/en/AppSettings.fvv deleted file mode 100644 index cbb1af1ed..000000000 --- a/locale/lang/en/AppSettings.fvv +++ /dev/null @@ -1,93 +0,0 @@ - -AppSettings = { - Title = "App Settings" - - Section = { - Behavior = "Behavior" - Interface = "Interface" - Privacy = "Privacy" - Service = "Service" - Network = "Network" - Navigation = "Navigation" - Home = "Home" - } - - Behavior = { - AutoStartTitle = "Auto Start" - AutoUpdateOnStartTitle = "Update on Start" - } - - Interface = { - ThemeModeTitle = "Theme Mode" - ThemeModeSummary = "Select the app's theme style" - ThemeModeSystem = "Follow System" - ThemeModeLight = "Light" - ThemeModeDark = "Dark" - LanguageTitle = "App Language" - LanguageSystem = "Follow System" - LanguageChinese = "简体中文" - LanguageChineseTraditional = "繁體中文" - LanguageEnglish = "English" - LanguageJapanese = "日本語" - LanguageRussian = "Русский" - - ColorThemeTitle = "Theme Palette" - ColorThemePickerTitle = "Pick Theme Color" - ColorThemeCodeLabel = "Theme Color Code (#RRGGBB)" - ColorThemeCustomSummary = "Current theme color: %s" - ThemeColorPolarityInvertTitle = "Invert Theme Foreground" - TopBarBlurTitle = "Blur" - AutoHideNavbarTitle = "Auto-hide Navbar" - - PageScaleTitle = "Page Scale" - PageScaleDialogSummary = "80% - 120%" - PredictiveBackTitle = "Predictive Back Gesture" - PredictiveBackRestartSummary = "Takes effect the next time the app starts" - PredictiveBackProgressTitle = "Predictive Back Amplitude" - - ClassicHomeTitle = "Classic Home" - SystemWallpaperTitle = "Set as System Wallpaper" - CustomIconTitle = "Custom App Icon" - HomeQuoteTitle = "Home Quote" - HomeQuoteDefault = "Wait for a cloud to finish roaming on a quiet route" - EditHomeQuoteTitle = "Edit Home Quote" - HomeWallpaperImportFailed = "Could not copy the wallpaper locally; using the original source" - } - - Privacy = { - - HideFromRecentsTitle = "Hide Recents Card" - } - - ServiceSection = { - TrafficNotificationTitle = "Show Traffic Notification" - ExitUiWhenBackgroundTitle = "Release UI In Background" - SuperIslandTitle = "Super Island" - ShizukuTitle = "Shizuku Access" - ShizukuNotRunning = "Install and start Shizuku first" - ShizukuPermissionRequired = "Tap to request Shizuku permission" - ShizukuReady = "Shizuku authorized; Super Island is ready" - ShizukuStatusUnavailable = "Unavailable" - ShizukuStatusPending = "Needs access" - ShizukuStatusGranted = "Authorized" - BatteryOptimizationTitle = "Unrestricted Battery" - BatteryOptimizationAlreadyDisabled = "Battery optimization is already disabled" - } - - Network = { - CustomUserAgentTitle = "Custom User-Agent" - CustomUserAgentSummaryDefault = "Not set, using default" - } - - WarningDialog = { - Title = "Warning" - } - - EditDialog = { - UserAgentTitle = "Edit User-Agent" - } - - Button = { - Apply = "Apply" - } -} diff --git a/locale/lang/en/Component.fvv b/locale/lang/en/Component.fvv deleted file mode 100644 index 76324ce23..000000000 --- a/locale/lang/en/Component.fvv +++ /dev/null @@ -1,107 +0,0 @@ - -Component = { - ProfileCard = { - Update = "Update" - Export = "Export" - Edit = "Edit" - Delete = "Delete" - RemoteSubscription = "Remote Subscription" - LocalFile = "Local File" - LocalConfig = "Local Configuration" - ClickToUpdate = "Click update to get subscription info" - Traffic = "Traffic: %s / %s (%d%%)" - UsedTraffic = "Used: %s" - ExpireAt = "Expires: %s (%d days left)" - ExpireToday = "Expires: Today" - Expired = "Expired: %s" - JustNow = "Just now" - MinutesAgo = "%d min ago" - HoursAgo = "%d hours ago" - DaysAgo = "%d days ago" - } - - WebView = { - InvalidUrl = "Invalid URL" - } - - Selector = { - NotModify = "Don't Modify" - Enable = "Enable" - Disable = "Disable" - Replace = "Replace" - Prepend = "Prepend" - Append = "Append" - Merge = "Merge" - } - - Navigation = { - Back = "Back" - } - - Message = { - Confirm = "Confirm" - Hint = "Hint" - Error = "Error" - Success = "Success" - } - - Button = { - Cancel = "Cancel" - Confirm = "Confirm" - Clear = "Clear" - Copy = "Copy" - } - - Flag = { - ContentDescription = "%s flag" - } - - Loading = { - Starting = "Starting..." - } - - - ConfigInput = { - PortLabel = "Port (leave empty to not modify)" - CountItems = "%d items" - } - - BottomBar = { - Home = "Home" - Proxy = "Proxy" - Config = "Config" - Setting = "Settings" - } - - Editor = { - CountItems = "Total %d items" - Action = { - Search = "Search" - } - Dialog = { - AddTitle = "Add Entry" - EditTitle = "Edit Entry" - ResetTitle = "Confirm Reset" - ResetMessage = "Clear all entries and restore to unmodified state?" - } - Empty = { - Title = "No Entries" - Hint = "Click top-right button to add" - } - Error = { - KeyEmpty = "Key cannot be empty" - KeyExists = "Key already exists" - } - Rule = { - Type = "Rule Type" - Target = "Target" - Content = "Rule Content" - Src = "Src IP" - NoResolve = "No Resolve" - TargetReject = "REJECT" - TargetDirect = "DIRECT" - TargetMatch = "MATCH" - ErrorContentRequired = "Rule content cannot be empty" - } - } -} diff --git a/locale/lang/en/Connection.fvv b/locale/lang/en/Connection.fvv deleted file mode 100644 index 400652de3..000000000 --- a/locale/lang/en/Connection.fvv +++ /dev/null @@ -1,64 +0,0 @@ - -Connection = { - Title = "Connections" - Summary = "View active connections" - - Tab = { - Active = "Active" - Closed = "Closed" - } - - Search = "Search" - SearchHint = "Search host, process..." - - SortBy = "Sort by:" - Sort = { - Time = "Time" - Upload = "Upload" - Download = "Download" - Host = "Host" - } - - ChainCount = "x%d" - - RelativeTime = { - JustNow = "Just now" - MinutesAgo = "%d minutes ago" - HoursAgo = "%d hours ago" - DaysAgo = "%d days ago" - Date = "%02d-%02d" - } - - Detail = { - Title = "Connection Details" - - Action = { - Interrupting = "Interrupting connection..." - Interrupt = "Interrupt connection" - } - - Section = { - Info = "Connection Info" - Rule = "Rule" - Chain = "Proxy Chain" - } - - Label = { - Host = "Host" - Protocol = "Protocol" - Process = "Process" - SourceAddress = "Source Address" - DestinationAddress = "Destination Address" - Duration = "Duration" - Upload = "Upload" - Download = "Download" - Type = "Type" - Content = "Content" - Chain = "Chain" - } - } - - Loading = "Loading..." - Empty = "No active connections" - NoResults = "No matching connections" -} diff --git a/locale/lang/en/Editor.fvv b/locale/lang/en/Editor.fvv deleted file mode 100644 index e9dad4f00..000000000 --- a/locale/lang/en/Editor.fvv +++ /dev/null @@ -1,24 +0,0 @@ - -Editor = { - Title = { - Config = "Edit configuration" - Preview = "Configuration preview" - Override = "Edit override configuration" - Profile = "Edit profile configuration" - } - Action = { - Format = "Format" - Save = "Save" - } - Message = { - FormatSuccess = "Formatted" - FormatSkipped = "Formatting failed or no changes were needed" - SaveFailed = "Save failed" - } - Discard = { - Title = "Unsaved changes" - Summary = "There are unsaved changes. Discard them?" - Confirm = "Discard" - } - JsonSubtitle = "Edit as JSON" -} diff --git a/locale/lang/en/Feature.fvv b/locale/lang/en/Feature.fvv deleted file mode 100644 index 912331a0d..000000000 --- a/locale/lang/en/Feature.fvv +++ /dev/null @@ -1,92 +0,0 @@ - -Feature = { - Title = "Feature Management" - - ServiceStatus = { - Section = "Service Status" - SwitchStartSubStore = "Start Sub-Store Service" - OpenSubStorePanel = "Open Sub-Store Panel" - AllowLan = "Allow LAN Access" - AutoCloseModeTitle = "Auto-close timer" - AutoCloseModeAlwaysOn = "Always On" - AutoCloseMode5Min = "5 minutes" - AutoCloseMode10Min = "10 minutes" - AutoClosed = "Sub-Store auto closed" - } - - Panel = { - Section = "Panel Selection" - SelectPanel = "Select Panel" - OpenMode = "Panel protocol" - OpenPanel = "Open external panel" - Unknown = "Unknown Panel" - CreateShortcut = "Create desktop shortcut" - CreateShortcutSummary = "Add the current panel to the home screen with the site icon" - ShortcutTitle = "Create Shortcut" - ShortcutName = "Name" - ShortcutPickIcon = "Pick Icon" - ShortcutResetIcon = "Reset" - } - - RemoteController = { - Section = "External Control" - ModeTitle = "External Controller Mode" - ControlBackend = "Control Backend" - AddBackend = "Add Backend" - EditBackend = "Edit Backend" - Name = "Name" - Host = "IP / Host" - Port = "Port" - Secret = "Secret (optional)" - Protocol = "Protocol" - PortRangeError = "Port must be in range 1-65535" - Connected = "Connected: mode %s" - ConnectionFailed = "Connection failed: %s" - Delete = "Delete" - } - - SubStore = { - Section = "Sub-Store Resources" - JavetLibraryReady = "Runtime Ready" - JavetLibraryDownload = "Download and Install Runtime" - JavetAvailable = "Check for updates" - DownloadHint = "Download and install runtime" - JavetDownloadSuccess = "Runtime installed" - JavetDownloadFailed = "Runtime installation failed" - DownloadResources = "Download Resources" - DownloadResourcesSummary = "Download resource files" - Not32Bit = "Sub-Store does not support 32-bit devices" - DownloadSubStoreFirst = "Please download Sub-Store resources first" - JavetNotReady = "Download and install runtime first" - FrontendDownloadSuccess = "Sub-Store frontend downloaded" - FrontendDownloadFailed = "Sub-Store frontend download failed" - BackendDownloadSuccess = "Sub-Store backend downloaded" - BackendDownloadFailed = "Sub-Store backend download failed" - DownloadError = "Download error: %s" - } - - BackupRestore = { - Section = "Data Backup" - ExportTitle = "Export Backup" - ExportSummary = "Export settings, profiles, overrides, and Sub-Store data" - RestoreTitle = "Restore Backup" - RestoreSummary = "Pick a backup file and replace current configuration" - Cancel = "Cancel" - - RestoreDialog = { - Title = "Restore backup?" - Message = "Restore stops the proxy and Sub-Store, then replaces current settings, profiles, overrides, and Sub-Store data." - } - - Message = { - ExportSuccess = "Backup exported successfully." - RestoreSuccess = "Restore complete. Restart the app to refresh all screens." - } - - Error = { - OpenOutputFailed = "Unable to write backup file" - OpenInputFailed = "Unable to read backup file" - OperationFailed = "Operation failed: %s" - } - } -} diff --git a/locale/lang/en/Home.fvv b/locale/lang/en/Home.fvv deleted file mode 100644 index 79b1b052c..000000000 --- a/locale/lang/en/Home.fvv +++ /dev/null @@ -1,80 +0,0 @@ - -Home = { - Title = "YumeBox" - - Message = { - ConfigSwitched = "Config switched" - ConfigSwitchFailed = "Config switch failed: %s" - Preparing = "Preparing..." - BuiltinGeoRequired = "Please install the Builtin version first" - StartFailed = "Start failed: %s" - RuntimeUnavailable = "Runtime is unavailable. Please try again." - StopFailed = "Stop failed: %s" - } - - Control = { - HintAddProfile = "Please add a profile first" - HintEnableProfile = "Please enable a profile in Config page first" - } - - NodeInfo = { - Node = "Node" - Delay = "Delay" - Unknown = "Unknown" - DelayValue = "%dms" - } - - Traffic = { - UpShort = "UP" - DownShort = "DOWN" - Upload = "UPLOAD" - Download = "DOWNLOAD" - NoProfile = "No Profile" - } - - IpInfo = { - ExitIp = "Exit IP" - } - - Status = { - Connecting = "Connecting" - Disconnecting = "Disconnecting" - Running = "Running" - Lost = "Disconnected" - TapToStart = "Tap to start" - } - - Settings = { - Title = "Home settings" - Quote = "Quote" - ClassicHome = "Use classic Home" - ExpandSidebar = "Expand sidebar" - ChangeWallpaper = "Change wallpaper" - } - - Control = { - HintAddProfile = "Please add a profile first" - HintEnableProfile = "Please enable a profile in Config page first" - Start = "Start" - Stop = "Stop" - } - - ProxyMode = { - Vpn = "VPN" - Tun = "TUN" - Ebpf = "eBPF" - } - - PreviewGuide = { - Title = "Welcome to YumeBox" - Description = "Tap Start at the bottom to connect" - Next = "Next" - Start = "Get started" - WallpaperTitle = "Change wallpaper" - WallpaperDescription = "Long-press the wallpaper to pick from your album" - SwipeTitle = "Swipe pages" - SwipeDescription = "Swipe across Home to switch to Proxy, Profiles, and Settings" - AddTitle = "Set System Wallpaper" - AddDescription = "Enable the switch and grant access to use your current system wallpaper" - } -} diff --git a/locale/lang/en/Log.fvv b/locale/lang/en/Log.fvv deleted file mode 100644 index 120b7261f..000000000 --- a/locale/lang/en/Log.fvv +++ /dev/null @@ -1,36 +0,0 @@ - -Log = { - Title = "Logs" - Summary = "Live runtime logs" - SearchHint = "Search logs" - - Level = { - All = "All" - Debug = "Debug" - Info = "Info" - Warning = "Warning" - Error = "Error" - Filter = "Level filter" - } - - Action = { - Export = "Export" - Copied = "Log copied" - } - - Empty = { - Connecting = "Connecting to logs" - ConnectingHint = "Opening the live core log stream" - Retrying = "Reconnecting to logs" - RetryingHint = "Live logs will resume automatically" - NoLogs = "No logs yet" - LiveHint = "Streaming live logs from the core" - NoMatch = "No logs match the selected level" - NoResults = "No matching logs" - } - - Detail = { - WaitingLog = "No logs yet" - WillShowWhenGenerated = "Logs appear here as they are produced" - } -} diff --git a/locale/lang/en/MetaFeature.fvv b/locale/lang/en/MetaFeature.fvv deleted file mode 100644 index c8fb88832..000000000 --- a/locale/lang/en/MetaFeature.fvv +++ /dev/null @@ -1,61 +0,0 @@ - -MetaFeature = { - Title = "Meta Features" - - Section = { - ConnectionAndTraffic = "Connections, logs, and rules" - Routing = "Routing" - } - - GeoX = { - OnlineUpdateTitle = "Update GeoX" - OnlineUpdateSummary = "Download Database" - } - - CustomRouting = { - Title = "Custom Routing" - Summary = "Standalone routing rules configuration" - EditYaml = "Edit YAML" - ManualYamlPresetDiscarded = "Unsaved preset switches were discarded to protect manually edited YAML." - GroupTypeTitle = "Group Types" - GroupTypeUrlTest = "UrlTest" - GroupTypeFallback = "Fallback" - UrlTestRegionGroupTitle = "UrlTest Region Groups" - FallbackRegionGroupTitle = "Fallback Region Groups" - Region = { - HongKong = "Hong Kong Auto" - Taiwan = "Taiwan Auto" - Japan = "Japan Auto" - Singapore = "Singapore Auto" - UnitedStates = "United States Auto" - Other = "Other Regions Auto" - } - Item = { - Proxy = "Proxy Rules" - Ads = "Ad Blocking" - China = "Mainland China Direct" - Global = "Non-China Geo Rules" - Match = "Fallback MATCH" - } - } - - RuntimeRules = { - Title = "Rules" - Summary = "View and temporarily toggle runtime rules" - } - - Download = { - DialogTitle = "Update GeoX Online" - DownloadComplete = "Download complete: %d/%d" - } - - AgeKey = { - Section = "Age Keys" - X25519Title = "X25519" - HybridTitle = "mlkem768-x25519" - SecretKey = "Secret Key" - PublicKey = "Public Key" - Generate = "Generate" - DerivePublicKey = "Derive Public" - } -} diff --git a/locale/lang/en/NetworkSettings.fvv b/locale/lang/en/NetworkSettings.fvv deleted file mode 100644 index 091d73d41..000000000 --- a/locale/lang/en/NetworkSettings.fvv +++ /dev/null @@ -1,128 +0,0 @@ - -NetworkSettings = { - Title = "Network Settings" - - Section = { - VpnOptions = "Service Options" - Advanced = "Advanced" - ProxyOptions = "Access Control" - Kernel = "Kernel" - } - - Advanced = { - DisableOverrideTitle = "Disable All Overrides" - } - - RunMode = { - SectionTitle = "Run Mode" - VpnServiceTitle = "Vpn Service" - VpnServiceSummary = "System VPN, global proxy" - TunTitle = "Tun" - TunSummary = "Virtual network interface requiring root" - EbpfTitle = "eBPF" - EbpfSummary = "Root eBPF proxy" - } - - VpnOptions = { - BypassPrivateTitle = "Bypass Private Networks" - DnsHijackTitle = "DNS Hijack" - AllowBypassTitle = "Allow App Bypass" - EnableIpv6Title = "Enable IPv6" - SystemProxyTitle = "VPN Built-in System Proxy" - } - - EbpfOptions = { - BypassCnTitle = "Bypass mainland China IPs in kernel" - } - - TunOptions = { - Title = "Tun Options" - IfNameTitle = "Virtual NIC" - MtuTitle = "MTU" - StackTitle = "Network Stack" - StackSystem = "System" - StackGVisor = "gVisor" - StackMixed = "Mixed" - StackMips = "MIPS" - AutoRouteTitle = "Auto Route" - StrictRouteTitle = "Strict Route" - AutoRedirectTitle = "Auto Redirect" - DnsModeTitle = "DNS Mode" - DnsRedirHost = "RedirHost" - DnsFakeIp = "FakeIP" - Ipv6Title = "Enable IPv6" - } - - - Kernel = { - ActiveTitle = "Active kernel" - BundledAlpha = "Builtin" - RefreshTitle = "Get latest kernels" - DownloadTitle = "Remote kernels" - FetchButton = "Get latest" - DownloadButton = "Download" - CustomTitle = "Custom kernel" - CustomMethodTitle = "Import method" - CustomUrlMethod = "Enter plugin URL" - CustomFileMethod = "Upload plugin" - CustomUrlLabel = "Plugin URL" - CustomChooseFile = "Choose plugin file" - CustomInstallButton = "Install and enable" - } - - ProxyOptions = { - AccessControlModeTitle = "Access Control Mode" - AllowAll = "Allow All" - AllowSelected = "Allow Selected" - RejectSelected = "Reject Selected" - ManageAccessControlTitle = "Manage Access Control" - } - - WifiAutomation = { - Title = "Wi-Fi Automation" - EnabledTitle = "Wi-Fi automation" - WifiNameHeading = "Wi-Fi name" - NetworkChangeSection = "Network changes" - OtherWifiTitle = "When connected to other Wi-Fi" - NoWifiTitle = "When Wi-Fi is disconnected (cellular / Ethernet / offline)" - AddCurrent = "Add current Wi-Fi" - AddManual = "Add Wi-Fi manually" - Scan = "Scan Wi-Fi" - Scanning = "Scanning Wi-Fi…" - ScanEmpty = "No Wi-Fi networks found" - ScanUnavailable = "Unable to scan Wi-Fi. Check Wi-Fi, location permission, and system location." - ManualDialogTitle = "Add Wi-Fi" - EditDialogTitle = "Edit Wi-Fi" - ManualDialogLabel = "Wi-Fi name" - StartAction = "Start VPN" - StopAction = "Stop VPN" - KeepAction = "Do nothing" - ActionTitle = "When connected" - ProfileAction = "Switch to profile" - NoSwitchAction = "Do not switch" - EmptyRules = "No Wi-Fi rules" - VpnOnly = "Wi-Fi automation is available only in VPN mode" - PermissionTitle = "Allow reading Wi-Fi name" - PermissionMessage = "Android treats Wi-Fi names as location-sensitive information. YumeBox uses precise location only when you enable automation or tap Scan Wi-Fi, to match rules on this device or show scan results. It does not read GPS or upload Wi-Fi names." - ApproximateTitle = "Precise location is required" - ApproximateMessage = "Approximate location still hides the Wi-Fi name. Allow precise location to continue." - DeniedTitle = "Location permission is required" - DeniedMessage = "Wi-Fi automation stays off until location permission is granted." - SettingsTitle = "Enable location permission in Settings" - SettingsMessage = "Android will no longer show this permission request. In App info > Permissions > Location, choose Allow only while using the app and enable precise location." - LocationTitle = "Turn on system location" - LocationMessage = "Android hides Wi-Fi names while system location is off. YumeBox does not read GPS." - Grant = "Grant permission" - OpenSettings = "Open settings" - TurnOnLocation = "Turn on location" - Added = "Wi-Fi rule added" - Duplicate = "This Wi-Fi is already in the rules" - NoWifi = "No Wi-Fi connection found" - Unavailable = "Wi-Fi name is unavailable. Check location permission and system location." - } - - Error = { - VpnDenied = "VPN permission denied" - RootRequired = "Root mode requires YumeBox to have working root access" - } -} diff --git a/locale/lang/en/Onboarding.fvv b/locale/lang/en/Onboarding.fvv deleted file mode 100644 index ca1ab4f7c..000000000 --- a/locale/lang/en/Onboarding.fvv +++ /dev/null @@ -1,73 +0,0 @@ - -Onboarding = { - Navigation = { - Back = "Back" - Next = "Next" - Enter = "Enter App" - Start = "Get Started" - } - - Welcome = { - Tagline = "A lightweight, modern, open proxy client" - } - - Permission = { - Title = "Confirm Runtime Access" - Subtitle = "Permissions affect notifications and per-app proxy features" - - Common = { - Granted = "Granted" - } - - Notification = { - Title = "Notification Permission" - SummaryNeed = "Show connection status and traffic notifications" - SummaryNotRequired = "Not required on your Android version" - } - - AppList = { - Title = "App List Permission" - SummaryNeed = "Required for per-app proxy features" - } - } - - Privacy = { - Title = "Confirm Privacy Terms" - Subtitle = "Review and accept the terms to continue" - RichTextLead = "You need to accept the privacy terms before using YumeBox." - RichTextPrefix = "Before continuing, please review and accept " - RichTextConnector = " and " - RichTextSuffix = "." - TermsLink = "Terms of Use" - PolicyLink = "Privacy Policy" - Accept = { - Title = "I have read and agree to the privacy policy" - } - } - - Personalize = { - Title = "Tune the Interface" - Subtitle = "Theme mode and accent color can be changed anytime in settings" - } - - Finish = { - Title = "Ready to Go" - Subtitle = "Setup complete, entering the main app" - } - - Project = { - Github = { - Title = "GitHub Repo" - Summary = "github.com/yumeyucca/YumeBox" - } - Community = { - Title = "Community" - Summary = "Jump into the channel or chat" - } - } - - Sheet = { - PrivacyPolicyTitle = "Privacy Policy" - LoadFailed = "Failed to load policy content" - } -} diff --git a/locale/lang/en/OpenSourceLicenses.fvv b/locale/lang/en/OpenSourceLicenses.fvv deleted file mode 100644 index d5566bafa..000000000 --- a/locale/lang/en/OpenSourceLicenses.fvv +++ /dev/null @@ -1,8 +0,0 @@ - -OpenSourceLicenses = { - Title = "Open Source Licenses" - - LicenseSheet = { - NoContent = "No license content" - } -} diff --git a/locale/lang/en/Override.fvv b/locale/lang/en/Override.fvv deleted file mode 100644 index 22a5e85d4..000000000 --- a/locale/lang/en/Override.fvv +++ /dev/null @@ -1,116 +0,0 @@ - -Override = { - Title = "Override Configs" - - Action = { - Create = "Create Config" - New = "New Config" - NetworkImport = "Import from Link" - } - - BuiltIn = { - PreventDnsLeak = "Prevent DNS Leaks" - AddDirectRules = "Add Direct Rules" - PuddingDog = "Pudding Dog Subscription Conversion" - Acl4ssrOnlineFull = "ACL4SSR Online Full" - CopyName = "%s (Copy)" - } - - Empty = { - Title = "No override configs" - Hint = "Click the button below to create a new config, or import a config file" - UserTitle = "No imported overrides" - UserHint = "Create or import a YAML / JS override" - } - - Section = { - BuiltIn = "Built-in" - User = "Imported" - } - - Status = { - InUse = "In Use" - NotInUse = "Not in Use" - BuiltIn = "Built-in" - } - - Card = { - Copy = "Copy Config" - Export = "Export Config" - Edit = "Edit Config" - Delete = "Delete Config" - EditButton = "Edit" - DeleteButton = "Delete" - Apply = "Apply Config" - ApplyButton = "Apply" - } - - ApplySheet = { - Title = "Apply to Subscriptions" - Empty = "No subscriptions" - Success = "Application scope updated" - Failed = "Failed to update application scope: %s" - Button = { - Cancel = "Cancel" - Confirm = "Confirm" - } - } - - Import = { - ReadError = "Cannot read import file" - Failed = "Import failed: %s" - FileError = "Failed to read file: %s" - NetworkError = "Link import failed: %s" - InvalidUrl = "Enter an HTTP or HTTPS URL" - HttpError = "HTTP request failed: %d" - UnsupportedType = "Only YAML or JS is supported" - EmptyJavaScript = "JS file is empty" - } - - Export = { - Failed = "Export failed: %s" - Success = "Exported config: %s" - } - - Dialog = { - Create = { - Title = "Add Config" - Name = "Config Name" - Url = "Config URL" - Type = "Creation Type" - } - Delete = { - Title = "Delete Config" - InUseMessage = "Config %s is being used by subscriptions. Deleting will unbind the relationship. Are you sure? This action cannot be undone." - Message = "Are you sure you want to delete config %s? This action cannot be undone." - } - Button = { - Cancel = "Cancel" - Delete = "Delete" - } - } - - - - - - - Draft = { - BasicRouting = "Basic Routing" - ServiceRouting = "Service Routing" - } - - - - Save = { - ImportDefaultName = "Imported Override Config" - Failed = "Failed to save override" - } - - - - Label = { - RulesReplace = "Override Rules" - } - -} diff --git a/locale/lang/en/ProfilesPage.fvv b/locale/lang/en/ProfilesPage.fvv deleted file mode 100644 index 48dc44bfe..000000000 --- a/locale/lang/en/ProfilesPage.fvv +++ /dev/null @@ -1,118 +0,0 @@ - -ProfilesPage = { - Title = "Profiles" - - Action = { - UpdateAll = "Update All" - AddProfile = "Add Profile" - } - - Empty = { - NoProfiles = "No profiles" - Hint = "Click top-right to add profile" - } - - Sheet = { - AddTitle = "Add Profile" - EditTitle = "Edit Profile" - Complete = "Complete" - } - - Type = { - Title = "Profile Type" - Subscription = "Subscription URL" - LocalFile = "Local File" - QrScan = "Scan QR Code" - } - - Input = { - ProfileName = "Profile Name" - SubscriptionUrl = "Subscription URL (HTTP/HTTPS)" - SelectFile = "Click to select file" - NewProfile = "New Profile" - AgeSecretKey = "Age Secret Key (optional)" - } - - QrScanner = { - NeedPermission = "Camera permission required" - NeedCamera = "Camera permission required for scanning" - SelectFromAlbum = "Select QR code from album" - RecognizeSuccess = "Recognition successful" - RecognizeFailed = "Failed to recognize QR code" - RecognizeError = "Recognition failed: %s" - } - - Message = { - UnknownFile = "Unknown file" - } - - Validation = { - EnterUrl = "Please enter URL" - SelectFile = "Please select a file" - YamlOnly = "Only .yaml or .yml format supported" - } - - Progress = { - Downloading = "Downloading..." - } - - Button = { - Cancel = "Cancel" - Confirm = "Confirm" - } - - DeleteDialog = { - Title = "Delete Profile" - Message = "Are you sure you want to delete '%s'?" - Confirm = "Delete" - } - - EditDialog = { - Title = "Edit Profile Name" - } - - LinkSettings = { - Title = "Link Settings" - OpenMode = "Open Mode" - OpenModeInApp = "In App" - OpenModeExternal = "External Browser" - DefaultLink = "Default Link" - DefaultLinkSummary = "Link opened when clicking top-left shortcut button" - AddLink = "Add Link" - EditLink = "Edit Link" - Name = "Name" - Url = "URL" - Close = "Close" - Validation = { - EnterName = "Please enter name" - EnterUrl = "Please enter URL" - InvalidUrl = "Please enter a valid URL" - } - } - - ShareDialog = { - Title = "Share Profile" - ShareFile = "Share Config File" - ShareLink = "Share Subscription Link" - NoLink = "This profile has no subscription link" - ImportedConfigMissing = "Imported config missing: %s" - } - - - SettingsDialog = { - Title = "Subscription Settings" - ChangeLink = "Change Subscription Link" - CustomRouting = "Custom Routing" - CustomRoutingSummary = "Standalone routing rules" - NoDescription = "No description set" - EditProfile = "Edit Profile" - OpenConfig = "Open in Editor" - EditSettings = "Subscription Settings" - SectionType = "Settings Type" - SectionSubscription = "Subscription Info" - SectionOverride = "Override Config" - SaveFailed = "Failed to save profile" - ConfigMissing = "Config not found: %s" - AgeSecretKey = "Age Secret Key" - } -} diff --git a/locale/lang/en/ProfilesVM.fvv b/locale/lang/en/ProfilesVM.fvv deleted file mode 100644 index 19e531450..000000000 --- a/locale/lang/en/ProfilesVM.fvv +++ /dev/null @@ -1,24 +0,0 @@ - -ProfilesVM = { - Message = { - ProfileAdded = "Profile added: %s" - AddFailed = "Add profile failed: %s" - ProfileDeleted = "Profile deleted" - DeleteFailed = "Delete profile failed: %s" - ProfileUpdated = "Profile updated: %s" - UpdateFailed = "Update profile failed: %s" - ToggleFailed = "Toggle state failed: %s" - ProvidersPartial = "Profile saved; %d external resources failed: %s" - ProvidersUndiscovered = "Profile saved, but external resource list was not recognized" - } - - Progress = { - Preparing = "Preparing download..." - Verifying = "Verifying configuration..." - ImportComplete = "Import complete" - } - - Error = { - ProfileNotExist = "Profile does not exist" - } -} \ No newline at end of file diff --git a/locale/lang/en/Providers.fvv b/locale/lang/en/Providers.fvv deleted file mode 100644 index f93037aaa..000000000 --- a/locale/lang/en/Providers.fvv +++ /dev/null @@ -1,39 +0,0 @@ - -Providers = { - Title = "External Resources" - - Action = { - UpdateAll = "Update All" - Update = "Update" - Upload = "Upload" - Operation = "Operation" - } - - Empty = { - NotRunning = "Proxy not running" - NotRunningHint = "Please start proxy service to view external resources" - NoProviders = "No external resources" - NoProvidersHint = "Current profile doesn't contain external resources" - } - - Type = { - ProxyProviders = "Proxy Providers (%d)" - RuleProviders = "Rule Providers (%d)" - } - - VehicleType = { - Http = "HTTP" - File = "File" - Inline = "Inline" - Compatible = "Compatible" - } - - Message = { - FetchFailed = "Failed to fetch resources: %s" - UpdateSuccess = "%s updated successfully" - UpdateFailed = "Update failed: %s" - AllUpdated = "All updated" - UploadSuccess = "%s uploaded successfully" - UploadFailed = "Upload failed: %s" - } -} diff --git a/locale/lang/en/Proxy.fvv b/locale/lang/en/Proxy.fvv deleted file mode 100644 index 261d77173..000000000 --- a/locale/lang/en/Proxy.fvv +++ /dev/null @@ -1,56 +0,0 @@ - -Proxy = { - Title = "Nodes" - - Mode = { - Direct = "Direct" - } - - Action = { - Panel = "Panel" - Test = "Test" - Sort = "Sort" - LocateCurrent = "Locate current proxy" - More = "More" - } - - Node = { - Timeout = "Timeout" - Count = "%d nodes" - } - - - Empty = { - NoNodes = "No nodes" - Hint = "Please load a profile in Config page" - } - - Testing = { - Group = "Testing node group: %s" - All = "Testing all node groups..." - RequestSent = "Test request sent" - Progress = "Testing %d/%d" - Completed = "Test completed" - Failed = "Test failed: %s" - InProgress = "Testing the node" - } - - Selection = { - Switched = "Switched to: %s" - Failed = "Switch failed" - Error = "Switch failed: %s" - } - - SortMode = { - Default = "Default" - ByName = "By Name" - ByLatency = "By Latency" - } - - DisplayMode = { - SingleDetailed = "Single Detailed" - SingleSimple = "Single Simple" - DoubleDetailed = "Double Detailed" - DoubleSimple = "Double Simple" - } -} diff --git a/locale/lang/en/Rules.fvv b/locale/lang/en/Rules.fvv deleted file mode 100644 index 575249876..000000000 --- a/locale/lang/en/Rules.fvv +++ /dev/null @@ -1,25 +0,0 @@ - -Rules = { - Title = "Rules" - Summary = "View and temporarily toggle runtime rules" - SearchHint = "Search rules" - - Label = { - Proxy = "Policy" - HitRate = "Hit rate %s" - } - - Message = { - ToggleFailed = "Failed to toggle rule: %s" - } - - Empty = { - Loading = "Loading" - LoadingHint = "Fetching rules from the core" - NotRunning = "Proxy is not running" - NotRunningHint = "Start the proxy service to view rules" - NoRules = "No rules" - NoRulesHint = "The current config has no rules" - NoResults = "No matching rules" - } -} diff --git a/locale/lang/en/Service.fvv b/locale/lang/en/Service.fvv deleted file mode 100644 index 575f68918..000000000 --- a/locale/lang/en/Service.fvv +++ /dev/null @@ -1,26 +0,0 @@ - -Service = { - Notification = { - Running = "Running" - UnknownProfile = "Unknown profile" - NoNode = "No node selected" - CurrentNode = "Current node: %s" - CurrentNodeLabel = "Current node" - RealtimeTraffic = "Live traffic" - SpeedLine = "Down %s Up %s" - TotalTraffic = "Total %s" - LogChannel = "Log recording" - LogRecording = "Recording logs" - LogRecordingPending = "Recording..." - Stop = "Stop" - } - - Tile = { - ClickToOpen = "Click to open app" - ClickToStartProxy = "Start proxy" - ClickToStopProxy = "Stop proxy" - Connecting = "Connecting..." - Disconnecting = "Disconnecting..." - } - -} diff --git a/locale/lang/en/Settings.fvv b/locale/lang/en/Settings.fvv deleted file mode 100644 index ebfdc90ad..000000000 --- a/locale/lang/en/Settings.fvv +++ /dev/null @@ -1,35 +0,0 @@ - -Settings = { - Title = "Settings" - - Section = { - UiSettings = "UI Settings" - More = "More" - } - - UiSettings = { - App = "App" - AppSummary = "Theme, language, and behavior" - Network = "Network" - NetworkSummary = "Proxy mode, DNS, and access control" - Override = "Override" - OverrideSummary = "YAML, JS, and rule overrides" - MetaFeatures = "Meta Features" - MetaFeaturesSummary = "Connections, logs, rules, and statistics" - } - - More = { - Lab = "Lab" - LabSummary = "Sub-Store and experiments" - Logs = "Logs" - LogsSummary = "Runtime Logs" - Onboarding = "Setup Guide" - OnboardingSummary = "Replay the welcome guide" - About = "About" - AboutSummary = "Version & License" - } - - Error = { - WebviewFailed = "Unable to open WebView: %s" - } -} diff --git a/locale/lang/en/TrafficStatistics.fvv b/locale/lang/en/TrafficStatistics.fvv deleted file mode 100644 index 386f09eee..000000000 --- a/locale/lang/en/TrafficStatistics.fvv +++ /dev/null @@ -1,54 +0,0 @@ - -TrafficStatistics = { - Title = "Statistics" - EntrySummary = "View traffic usage" - - TimeRange = { - Today = "Today" - Week = "Week" - } - - Summary = { - TodayTraffic = "Today's Traffic" - WeekTraffic = "This Week's Traffic" - Average = "Avg" - DayTrafficTip = "%s traffic" - } - - Donut = { - Other = "Other" - } - - Action = { - Clear = "Clear Statistics" - ClearSuccess = "Statistics cleared" - } - - Section = { - Traffic = "Traffic" - TopApps = "Top Apps" - TodayApps = "Today's Apps" - WeekApps = "Last 7 Days Apps" - SystemTraffic = "System Traffic" - EmptyApps = "No app traffic statistics" - } - - Metric = { - Download = "Download" - Upload = "Upload" - UsageLine = "Down %s Up %s" - SortByName = "Name" - SortByUsage = "Usage" - } - - Weekday = { - Mon = "Mon" - Tue = "Tue" - Wed = "Wed" - Thu = "Thu" - Fri = "Fri" - Sat = "Sat" - Sun = "Sun" - Today = "Today" - } -} diff --git a/locale/lang/en/Util.fvv b/locale/lang/en/Util.fvv deleted file mode 100644 index eb4c72c1a..000000000 --- a/locale/lang/en/Util.fvv +++ /dev/null @@ -1,6 +0,0 @@ - -Util = { - Error = { - UnknownError = "Unknown error" - } -} diff --git a/locale/lang/ja/About.fvv b/locale/lang/ja/About.fvv deleted file mode 100644 index 89b06608d..000000000 --- a/locale/lang/ja/About.fvv +++ /dev/null @@ -1,44 +0,0 @@ - -About = { - Title = "情報" - - App = { - Description = "mihomo ベースのオープンソース Android クライアント" - VersionLoading = "読み込み中..." - VersionFailed = "読み込みに失敗しました" - } - - Debug = { - Title = "Debug" - TestInitialization = "初期化をテスト" - InitializationReset = "初期化状態をリセットしました" - } - - Section = { - ProjectLinks = "プロジェクトリンク" - More = "その他" - Support = "サポート" - License = "ライセンス" - } - - Link = { - TelegramGroup = "Telegram グループ" - TelegramChannel = "Telegram チャンネル" - } - - Support = { - ExportLogs = "ログを書き出す" - ReportIssue = "問題を報告" - ExportSuccess = "ログを書き出しました" - ExportFailed = "ログの書き出しに失敗しました" - } - - License = { - Libraries = "ライブラリ" - LibrariesSummary = "このアプリで使用しているサードパーティライブラリを表示" - AgplName = "GNU Affero General Public License v3.0" - AgplDescription = "本プログラムはフリーソフトウェアです.GNU Affero 一般公衆ライセンスの条項に従って再配布および/または改変できます." - } - - Copyright = "© 2025 – Present YumeYucca" -} diff --git a/locale/lang/ja/AccessControl.fvv b/locale/lang/ja/AccessControl.fvv deleted file mode 100644 index 57c7c0cce..000000000 --- a/locale/lang/ja/AccessControl.fvv +++ /dev/null @@ -1,48 +0,0 @@ - -AccessControl = { - Title = "アクセス制御" - - Search = { - Placeholder = "アプリを検索..." - Empty = "一致するアプリがありません" - } - - AppList = { - Title = "アプリ一覧(%d 件選択中)" - Loading = "読み込み中..." - } - - Settings = { - Title = "アクセス制御設定" - ShowSystemApps = "システムアプリを表示" - SelectedFirst = "選択済みを先頭に" - SortMode = "並び替え" - SortModeCurrent = "現在: %s" - BatchOperation = "一括操作" - SelectAll = "すべて選択" - DeselectAll = "すべて解除" - Invert = "選択を反転" - ImportExport = "インポート/エクスポート" - Import = "クリップボードからインポート" - Export = "クリップボードへエクスポート" - ImportSuccess = "インポート完了: パッケージ名 %d 件" - ExportSuccess = "パッケージ名 %d 件をクリップボードにコピーしました" - ImportFailed = "インポートに失敗しました" - RegionQuickSelect = "地域クイック選択" - ChinaApps = "中国向けアプリ" - OverseasApps = "中国以外のアプリ" - RegionSelectResult = "「%s」でクイック選択、合計 %d 件" - } - - SortMode = { - PackageName = "パッケージ名" - Label = "アプリ名" - InstallTime = "インストール日時" - UpdateTime = "更新日時" - } - - Button = { - Cancel = "キャンセル" - Confirm = "確定" - } -} diff --git a/locale/lang/ja/AppSettings.fvv b/locale/lang/ja/AppSettings.fvv deleted file mode 100644 index 45264c189..000000000 --- a/locale/lang/ja/AppSettings.fvv +++ /dev/null @@ -1,93 +0,0 @@ - -AppSettings = { - Title = "アプリ設定" - - Section = { - Behavior = "動作" - Interface = "インターフェース" - Privacy = "プライバシー" - Service = "サービス" - Network = "ネットワーク" - Navigation = "ナビゲーション" - Home = "ホーム" - } - - Behavior = { - AutoStartTitle = "自動開始" - AutoUpdateOnStartTitle = "開始時に更新" - } - - Interface = { - ThemeModeTitle = "テーマモード" - ThemeModeSummary = "アプリのテーマスタイルを選択" - ThemeModeSystem = "システムに合わせる" - ThemeModeLight = "ライト" - ThemeModeDark = "ダーク" - LanguageTitle = "アプリの言語" - LanguageSystem = "システムに合わせる" - LanguageChinese = "简体中文" - LanguageChineseTraditional = "繁體中文" - LanguageEnglish = "English" - LanguageJapanese = "日本語" - LanguageRussian = "Русский" - - ColorThemeTitle = "テーマ配色" - ColorThemePickerTitle = "テーマカラーを選択" - ColorThemeCodeLabel = "テーマカラーコード (#RRGGBB)" - ColorThemeCustomSummary = "現在のテーマカラー: %s" - ThemeColorPolarityInvertTitle = "テーマ前景色を反転" - TopBarBlurTitle = "ぼかし" - AutoHideNavbarTitle = "ナビバーを自動非表示" - - PageScaleTitle = "ページ倍率" - PageScaleDialogSummary = "80% - 120%" - PredictiveBackTitle = "予測戻るジェスチャー" - PredictiveBackRestartSummary = "次回アプリ起動時に有効になります" - PredictiveBackProgressTitle = "予測戻る振幅" - - ClassicHomeTitle = "クラシックホーム" - SystemWallpaperTitle = "システム壁紙に設定" - CustomIconTitle = "カスタムアプリアイコン" - HomeQuoteTitle = "ホームの一言" - HomeQuoteDefault = "静かな回線のうえで、雲が回遊を終えるのを待つ" - EditHomeQuoteTitle = "一言を編集" - HomeWallpaperImportFailed = "壁紙をローカルへコピーできなかったため、元のソースを使用します" - } - - Privacy = { - - HideFromRecentsTitle = "履歴カードを隠す" - } - - ServiceSection = { - TrafficNotificationTitle = "通信量通知を表示" - ExitUiWhenBackgroundTitle = "バックグラウンドで UI を解放" - SuperIslandTitle = "スーパーアイランド" - ShizukuTitle = "Shizuku 権限" - ShizukuNotRunning = "Shizuku をインストールして起動してください" - ShizukuPermissionRequired = "タップして Shizuku 権限を申請" - ShizukuReady = "Shizuku 許可済み、スーパーアイランドを利用できます" - ShizukuStatusUnavailable = "未実行" - ShizukuStatusPending = "権限未許可" - ShizukuStatusGranted = "許可済み" - BatteryOptimizationTitle = "バッテリー制限なし" - BatteryOptimizationAlreadyDisabled = "バッテリー最適化は既に無効です" - } - - Network = { - CustomUserAgentTitle = "カスタム User-Agent" - CustomUserAgentSummaryDefault = "未設定、既定値を使用" - } - - WarningDialog = { - Title = "警告" - } - - EditDialog = { - UserAgentTitle = "User-Agent を編集" - } - - Button = { - Apply = "適用" - } -} diff --git a/locale/lang/ja/Component.fvv b/locale/lang/ja/Component.fvv deleted file mode 100644 index 58f92c904..000000000 --- a/locale/lang/ja/Component.fvv +++ /dev/null @@ -1,107 +0,0 @@ - -Component = { - ProfileCard = { - Update = "更新" - Export = "エクスポート" - Edit = "編集" - Delete = "削除" - RemoteSubscription = "リモート購読" - LocalFile = "ローカルファイル" - LocalConfig = "ローカル設定" - ClickToUpdate = "更新をタップして購読情報を取得" - Traffic = "通信量: %s / %s (%d%%)" - UsedTraffic = "使用済み: %s" - ExpireAt = "期限: %s (残り %d 日)" - ExpireToday = "期限: 今日" - Expired = "期限切れ: %s" - JustNow = "たった今" - MinutesAgo = "%d 分前" - HoursAgo = "%d 時間前" - DaysAgo = "%d 日前" - } - - WebView = { - InvalidUrl = "無効な URL" - } - - Selector = { - NotModify = "変更しない" - Enable = "有効" - Disable = "無効" - Replace = "置換" - Prepend = "先頭に追加" - Append = "末尾に追加" - Merge = "マージ" - } - - Navigation = { - Back = "戻る" - } - - Message = { - Confirm = "確認" - Hint = "ヒント" - Error = "エラー" - Success = "成功" - } - - Button = { - Cancel = "キャンセル" - Confirm = "確定" - Clear = "クリア" - Copy = "コピー" - } - - Flag = { - ContentDescription = "%s の旗" - } - - Loading = { - Starting = "開始中..." - } - - - ConfigInput = { - PortLabel = "ポート (空欄で変更しない)" - CountItems = "%d 件" - } - - BottomBar = { - Home = "ホーム" - Proxy = "プロキシ" - Config = "設定" - Setting = "設定" - } - - Editor = { - CountItems = "合計 %d 件" - Action = { - Search = "検索" - } - Dialog = { - AddTitle = "項目を追加" - EditTitle = "項目を編集" - ResetTitle = "リセットの確認" - ResetMessage = "すべての項目を消去し、未変更状態に戻しますか?" - } - Empty = { - Title = "項目がありません" - Hint = "右上のボタンで追加" - } - Error = { - KeyEmpty = "キーは空にできません" - KeyExists = "キーは既に存在します" - } - Rule = { - Type = "ルール種別" - Target = "ターゲット" - Content = "ルール内容" - Src = "送信元 IP" - NoResolve = "解決しない" - TargetReject = "REJECT" - TargetDirect = "DIRECT" - TargetMatch = "MATCH" - ErrorContentRequired = "ルール内容は空にできません" - } - } -} diff --git a/locale/lang/ja/Connection.fvv b/locale/lang/ja/Connection.fvv deleted file mode 100644 index 6a2512e81..000000000 --- a/locale/lang/ja/Connection.fvv +++ /dev/null @@ -1,64 +0,0 @@ - -Connection = { - Title = "接続" - Summary = "アクティブな接続を表示" - - Tab = { - Active = "アクティブ" - Closed = "終了済み" - } - - Search = "検索" - SearchHint = "ホスト、プロセスを検索..." - - SortBy = "並び替え:" - Sort = { - Time = "時間" - Upload = "アップロード" - Download = "ダウンロード" - Host = "ホスト" - } - - ChainCount = "x%d" - - RelativeTime = { - JustNow = "たった今" - MinutesAgo = "%d 分前" - HoursAgo = "%d 時間前" - DaysAgo = "%d 日前" - Date = "%02d-%02d" - } - - Detail = { - Title = "接続の詳細" - - Action = { - Interrupting = "接続を切断中..." - Interrupt = "接続を切断" - } - - Section = { - Info = "接続情報" - Rule = "ルール" - Chain = "プロキシチェーン" - } - - Label = { - Host = "ホスト" - Protocol = "プロトコル" - Process = "プロセス" - SourceAddress = "送信元アドレス" - DestinationAddress = "宛先アドレス" - Duration = "接続時間" - Upload = "アップロード" - Download = "ダウンロード" - Type = "種類" - Content = "内容" - Chain = "チェーン" - } - } - - Loading = "読み込み中..." - Empty = "アクティブな接続はありません" - NoResults = "一致する接続がありません" -} diff --git a/locale/lang/ja/Editor.fvv b/locale/lang/ja/Editor.fvv deleted file mode 100644 index fb61a2886..000000000 --- a/locale/lang/ja/Editor.fvv +++ /dev/null @@ -1,24 +0,0 @@ -<エディター> -Editor = { - Title = { - Config = "設定を編集" - Preview = "設定プレビュー" - Override = "オーバーライド設定を編集" - Profile = "プロファイル設定を編集" - } - Action = { - Format = "整形" - Save = "保存" - } - Message = { - FormatSuccess = "整形しました" - FormatSkipped = "整形に失敗したか、変更は不要です" - SaveFailed = "保存に失敗しました" - } - Discard = { - Title = "未保存の変更" - Summary = "未保存の変更があります.破棄しますか?" - Confirm = "破棄" - } - JsonSubtitle = "JSON 形式で編集" -} diff --git a/locale/lang/ja/Feature.fvv b/locale/lang/ja/Feature.fvv deleted file mode 100644 index 6cedd2413..000000000 --- a/locale/lang/ja/Feature.fvv +++ /dev/null @@ -1,92 +0,0 @@ - -Feature = { - Title = "機能管理" - - ServiceStatus = { - Section = "サービス状態" - SwitchStartSubStore = "Sub-Store サービスを開始" - OpenSubStorePanel = "Sub-Store パネルを開く" - AllowLan = "LAN アクセスを許可" - AutoCloseModeTitle = "自動クローズタイマー" - AutoCloseModeAlwaysOn = "常時オン" - AutoCloseMode5Min = "5 分" - AutoCloseMode10Min = "10 分" - AutoClosed = "Sub-Store を自動クローズしました" - } - - Panel = { - Section = "パネル選択" - SelectPanel = "パネルを選択" - OpenMode = "パネルプロトコル" - OpenPanel = "外部パネルを開く" - Unknown = "不明なパネル" - CreateShortcut = "デスクトップショートカットを作成" - CreateShortcutSummary = "現在のパネルをホーム画面に追加し、サイトアイコンを使用" - ShortcutTitle = "ショートカットを作成" - ShortcutName = "名前" - ShortcutPickIcon = "アイコンを選択" - ShortcutResetIcon = "リセット" - } - - RemoteController = { - Section = "外部制御" - ModeTitle = "外部コントローラーモード" - ControlBackend = "制御バックエンド" - AddBackend = "バックエンドを追加" - EditBackend = "バックエンドを編集" - Name = "名前" - Host = "IP / ホスト" - Port = "ポート" - Secret = "シークレット(任意)" - Protocol = "プロトコル" - PortRangeError = "ポートは 1-65535 の範囲である必要があります" - Connected = "接続しました:モード %s" - ConnectionFailed = "接続に失敗しました:%s" - Delete = "削除" - } - - SubStore = { - Section = "Sub-Store リソース" - JavetLibraryReady = "ランタイムの準備完了" - JavetLibraryDownload = "ランタイムをダウンロードしてインストール" - JavetAvailable = "更新を確認" - DownloadHint = "タップしてランタイムをインストール" - JavetDownloadSuccess = "ランタイムをインストールしました" - JavetDownloadFailed = "ランタイムのインストールに失敗しました" - DownloadResources = "リソースをダウンロード" - DownloadResourcesSummary = "リソースファイルをダウンロード" - Not32Bit = "Sub-Store は 32 ビット端末に対応していません" - DownloadSubStoreFirst = "先に Sub-Store リソースをダウンロードしてください" - JavetNotReady = "先にランタイムをインストールしてください" - FrontendDownloadSuccess = "Sub-Store フロントエンドのダウンロードが完了しました" - FrontendDownloadFailed = "Sub-Store フロントエンドのダウンロードに失敗しました" - BackendDownloadSuccess = "Sub-Store バックエンドのダウンロードが完了しました" - BackendDownloadFailed = "Sub-Store バックエンドのダウンロードに失敗しました" - DownloadError = "ダウンロードエラー: %s" - } - - BackupRestore = { - Section = "データバックアップ" - ExportTitle = "バックアップを書き出し" - ExportSummary = "設定、プロファイル、上書き、Sub-Store データを書き出します" - RestoreTitle = "バックアップを復元" - RestoreSummary = "バックアップファイルを選び、現在の設定を置き換えます" - Cancel = "キャンセル" - - RestoreDialog = { - Title = "バックアップを復元しますか?" - Message = "復元するとプロキシと Sub-Store が停止し、現在の設定、プロファイル、上書き、Sub-Store データが置き換えられます." - } - - Message = { - ExportSuccess = "バックアップをエクスポートしました." - RestoreSuccess = "復元が完了しました.すべての画面を更新するにはアプリを再起動してください." - } - - Error = { - OpenOutputFailed = "バックアップファイルを書き込めません" - OpenInputFailed = "バックアップファイルを読み込めません" - OperationFailed = "操作に失敗しました: %s" - } - } -} diff --git a/locale/lang/ja/Home.fvv b/locale/lang/ja/Home.fvv deleted file mode 100644 index 7c7f7faa1..000000000 --- a/locale/lang/ja/Home.fvv +++ /dev/null @@ -1,80 +0,0 @@ - -Home = { - Title = "YumeBox" - - Message = { - ConfigSwitched = "設定を切り替えました" - ConfigSwitchFailed = "設定の切り替えに失敗しました: %s" - Preparing = "準備中..." - BuiltinGeoRequired = "先に Builtin 版をインストールしてください" - StartFailed = "開始に失敗しました: %s" - RuntimeUnavailable = "ランタイムを利用できません.もう一度お試しください." - StopFailed = "停止に失敗しました: %s" - } - - Control = { - HintAddProfile = "先にプロファイルを追加してください" - HintEnableProfile = "先に「設定」ページでプロファイルを有効にしてください" - } - - NodeInfo = { - Node = "ノード" - Delay = "遅延" - Unknown = "不明" - DelayValue = "%dms" - } - - Traffic = { - UpShort = "UP" - DownShort = "DOWN" - Upload = "アップロード" - Download = "ダウンロード" - NoProfile = "プロファイルなし" - } - - IpInfo = { - ExitIp = "出口 IP" - } - - Status = { - Connecting = "接続中" - Disconnecting = "切断中" - Running = "実行中" - Lost = "切断されました" - TapToStart = "タップして開始" - } - - Settings = { - Title = "ホーム設定" - Quote = "一言" - ClassicHome = "クラシックホームを使用" - ExpandSidebar = "サイドバーを展開" - ChangeWallpaper = "壁紙を変更" - } - - Control = { - HintAddProfile = "先にプロファイルを追加してください" - HintEnableProfile = "先に「設定」ページでプロファイルを有効にしてください" - Start = "開始" - Stop = "停止" - } - - ProxyMode = { - Vpn = "VPN" - Tun = "TUN" - Ebpf = "eBPF" - } - - PreviewGuide = { - Title = "YumeBox へようこそ" - Description = "下部の「開始」をタップして接続します" - Next = "次へ" - Start = "はじめる" - WallpaperTitle = "壁紙を変更" - WallpaperDescription = "壁紙を長押ししてアルバムから選びます" - SwipeTitle = "ページをスワイプ" - SwipeDescription = "ホームを横にスワイプしてプロキシ、プロファイル、設定を切り替え" - AddTitle = "システム壁紙を設定" - AddDescription = "スイッチをオンにして権限を許可すると、現在のシステム壁紙を使用できます" - } -} diff --git a/locale/lang/ja/Log.fvv b/locale/lang/ja/Log.fvv deleted file mode 100644 index 6d9877abe..000000000 --- a/locale/lang/ja/Log.fvv +++ /dev/null @@ -1,36 +0,0 @@ - -Log = { - Title = "ログ" - Summary = "リアルタイム実行ログ" - SearchHint = "ログを検索" - - Level = { - All = "すべて" - Debug = "Debug" - Info = "Info" - Warning = "Warning" - Error = "Error" - Filter = "レベル絞り込み" - } - - Action = { - Export = "書き出し" - Copied = "ログをコピーしました" - } - - Empty = { - Connecting = "ログに接続中" - ConnectingHint = "コアのライブログストリームを開いています" - Retrying = "ログへ再接続中" - RetryingHint = "接続が復帰すると自動で再開します" - NoLogs = "ログはまだありません" - LiveHint = "コアからライブログを受信中" - NoMatch = "選択したレベルに一致するログがありません" - NoResults = "一致するログがありません" - } - - Detail = { - WaitingLog = "ログはまだありません" - WillShowWhenGenerated = "ログが生成されるとここに表示されます" - } -} diff --git a/locale/lang/ja/MetaFeature.fvv b/locale/lang/ja/MetaFeature.fvv deleted file mode 100644 index e428e9183..000000000 --- a/locale/lang/ja/MetaFeature.fvv +++ /dev/null @@ -1,61 +0,0 @@ - -MetaFeature = { - Title = "Meta 機能" - - Section = { - ConnectionAndTraffic = "接続、ログ、ルール" - Routing = "ルーティング" - } - - GeoX = { - OnlineUpdateTitle = "GeoX を更新" - OnlineUpdateSummary = "データベースをダウンロード" - } - - CustomRouting = { - Title = "カスタムルーティング" - Summary = "独立したルーティングルール設定" - EditYaml = "YAML を編集" - ManualYamlPresetDiscarded = "手動編集した YAML を保護するため、未保存のプリセット変更を破棄しました." - GroupTypeTitle = "グループ種別" - GroupTypeUrlTest = "UrlTest" - GroupTypeFallback = "Fallback" - UrlTestRegionGroupTitle = "UrlTest 地域グループ" - FallbackRegionGroupTitle = "Fallback 地域グループ" - Region = { - HongKong = "香港自動グループ" - Taiwan = "台湾自動グループ" - Japan = "日本自動グループ" - Singapore = "シンガポール自動グループ" - UnitedStates = "米国自動グループ" - Other = "その他の地域自動グループ" - } - Item = { - Proxy = "プロキシルール" - Ads = "広告ブロック" - China = "中国本土を直接接続" - Global = "中国国外の地域ルール" - Match = "最終 MATCH" - } - } - - RuntimeRules = { - Title = "ルール" - Summary = "実行中ルールの確認と一時的な切り替え" - } - - Download = { - DialogTitle = "GeoX をオンライン更新" - DownloadComplete = "ダウンロード完了: %d/%d" - } - - AgeKey = { - Section = "Age キー" - X25519Title = "X25519" - HybridTitle = "mlkem768-x25519" - SecretKey = "秘密鍵" - PublicKey = "公開鍵" - Generate = "生成" - DerivePublicKey = "公開鍵を導出" - } -} diff --git a/locale/lang/ja/NetworkSettings.fvv b/locale/lang/ja/NetworkSettings.fvv deleted file mode 100644 index 0eafa93b2..000000000 --- a/locale/lang/ja/NetworkSettings.fvv +++ /dev/null @@ -1,128 +0,0 @@ - -NetworkSettings = { - Title = "ネットワーク設定" - - Section = { - VpnOptions = "サービス設定" - Advanced = "詳細" - ProxyOptions = "アクセス制御" - Kernel = "カーネル" - } - - Advanced = { - DisableOverrideTitle = "すべての上書きを無効化" - } - - RunMode = { - SectionTitle = "実行モード" - VpnServiceTitle = "Vpn Service" - VpnServiceSummary = "システム VPN による全体プロキシ" - TunTitle = "Tun" - TunSummary = "Root が必要な仮想ネットワークインターフェース" - EbpfTitle = "eBPF" - EbpfSummary = "Root eBPF プロキシ" - } - - VpnOptions = { - BypassPrivateTitle = "プライベートネットワークをバイパス" - DnsHijackTitle = "DNS ハイジャック" - AllowBypassTitle = "アプリのバイパスを許可" - EnableIpv6Title = "IPv6 を有効化" - SystemProxyTitle = "VPN 内蔵システムプロキシ" - } - - EbpfOptions = { - BypassCnTitle = "中国 IP をカーネルでバイパス" - } - - TunOptions = { - Title = "Tun 設定" - IfNameTitle = "仮想 NIC" - MtuTitle = "MTU" - StackTitle = "ネットワークスタック" - StackSystem = "System" - StackGVisor = "gVisor" - StackMixed = "Mixed" - StackMips = "MIPS" - AutoRouteTitle = "自動ルート" - StrictRouteTitle = "厳密ルート" - AutoRedirectTitle = "自動リダイレクト" - DnsModeTitle = "DNS モード" - DnsRedirHost = "RedirHost" - DnsFakeIp = "FakeIP" - Ipv6Title = "IPv6 を有効化" - } - - - Kernel = { - ActiveTitle = "使用中のカーネル" - BundledAlpha = "Builtin" - RefreshTitle = "最新カーネルを取得" - DownloadTitle = "リモートカーネル" - FetchButton = "最新を取得" - DownloadButton = "ダウンロード" - CustomTitle = "カスタムカーネル" - CustomMethodTitle = "インポート方法" - CustomUrlMethod = "プラグインURLを入力" - CustomFileMethod = "プラグインをアップロード" - CustomUrlLabel = "プラグインURL" - CustomChooseFile = "プラグインファイルを選択" - CustomInstallButton = "インストールして有効化" - } - - ProxyOptions = { - AccessControlModeTitle = "アクセス制御モード" - AllowAll = "すべて許可" - AllowSelected = "選択のみ許可" - RejectSelected = "選択を拒否" - ManageAccessControlTitle = "アクセス制御を管理" - } - - WifiAutomation = { - Title = "Wi-Fi 自動化" - EnabledTitle = "Wi-Fi 自動化" - WifiNameHeading = "Wi-Fi 名" - NetworkChangeSection = "ネットワークの切替" - OtherWifiTitle = "他の Wi-Fi に接続したとき" - NoWifiTitle = "Wi-Fi 未接続時(モバイル通信 / Ethernet / オフライン)" - AddCurrent = "現在の Wi-Fi を追加" - AddManual = "Wi-Fi を手動追加" - Scan = "Wi-Fi をスキャン" - Scanning = "Wi-Fi をスキャンしています…" - ScanEmpty = "追加できる Wi-Fi が見つかりません" - ScanUnavailable = "Wi-Fi をスキャンできません.Wi-Fi、位置情報の許可、システムの位置情報を確認してください." - ManualDialogTitle = "Wi-Fi を追加" - EditDialogTitle = "Wi-Fi を編集" - ManualDialogLabel = "Wi-Fi 名" - StartAction = "VPN を開始" - StopAction = "VPN を停止" - KeepAction = "何もしない" - ActionTitle = "接続時" - ProfileAction = "プロファイルに切り替え" - NoSwitchAction = "切り替えない" - EmptyRules = "Wi-Fi ルールはありません" - VpnOnly = "Wi-Fi 自動化は VPN モードでのみ利用できます" - PermissionTitle = "Wi-Fi 名の読み取りを許可" - PermissionMessage = "Android では Wi-Fi 名は位置情報に関連する情報です.YumeBox は自動化を有効にするか Wi-Fi スキャンをタップしたときだけ、端末上でのルール照合または結果表示のために正確な位置情報を使用します.GPS の読み取りや Wi-Fi 名の送信は行いません." - ApproximateTitle = "正確な位置情報が必要です" - ApproximateMessage = "おおよその位置情報では Wi-Fi 名が非表示のままです.正確な位置情報を許可してください." - DeniedTitle = "位置情報の許可が必要です" - DeniedMessage = "許可されるまで Wi-Fi 自動化はオフのままです." - SettingsTitle = "設定で位置情報を許可" - SettingsMessage = "Android はこの許可を再表示しません.アプリ情報の位置情報で「アプリの使用中のみ許可」と正確な位置情報を有効にしてください." - LocationTitle = "システムの位置情報をオンにする" - LocationMessage = "システムの位置情報がオフの場合、Android は Wi-Fi 名を隠します.YumeBox は GPS を読み取りません." - Grant = "許可する" - OpenSettings = "設定を開く" - TurnOnLocation = "位置情報をオンにする" - Added = "Wi-Fi ルールを追加しました" - Duplicate = "この Wi-Fi はすでにルールにあります" - NoWifi = "Wi-Fi 接続が見つかりません" - Unavailable = "Wi-Fi 名を取得できません.位置情報の許可とシステム位置情報を確認してください." - } - - Error = { - VpnDenied = "VPN 権限が拒否されました" - RootRequired = "Root モードには YumeBox の利用可能な Root 権限が必要です" - } -} diff --git a/locale/lang/ja/Onboarding.fvv b/locale/lang/ja/Onboarding.fvv deleted file mode 100644 index cf61d42a6..000000000 --- a/locale/lang/ja/Onboarding.fvv +++ /dev/null @@ -1,73 +0,0 @@ - -Onboarding = { - Navigation = { - Back = "戻る" - Next = "次へ" - Enter = "アプリへ" - Start = "はじめる" - } - - Welcome = { - Tagline = "軽量・モダン・オープンなプロキシクライアント" - } - - Permission = { - Title = "実行時の権限を確認" - Subtitle = "権限は通知やアプリ別プロキシ機能に影響します" - - Common = { - Granted = "許可済み" - } - - Notification = { - Title = "通知の権限" - SummaryNeed = "接続状態と通信量の通知を表示します" - SummaryNotRequired = "お使いの Android では不要です" - } - - AppList = { - Title = "アプリ一覧の権限" - SummaryNeed = "アプリ別プロキシ機能に必要です" - } - } - - Privacy = { - Title = "プライバシー条項を確認" - Subtitle = "内容を確認して同意すると続行できます" - RichTextLead = "YumeBox を使う前にプライバシー条項への同意が必要です." - RichTextPrefix = "続行する前に " - RichTextConnector = " と " - RichTextSuffix = " を確認して同意してください." - TermsLink = "利用規約" - PolicyLink = "プライバシーポリシー" - Accept = { - Title = "プライバシーポリシーを読み、同意します" - } - } - - Personalize = { - Title = "インターフェースを調整" - Subtitle = "テーマモードとアクセントカラーは設定からいつでも変更できます" - } - - Finish = { - Title = "準備完了" - Subtitle = "セットアップが完了し、メイン画面へ進みます" - } - - Project = { - Github = { - Title = "GitHub リポジトリ" - Summary = "github.com/yumeyucca/YumeBox" - } - Community = { - Title = "コミュニティ" - Summary = "チャンネルやチャットに参加" - } - } - - Sheet = { - PrivacyPolicyTitle = "プライバシーポリシー" - LoadFailed = "ポリシー内容の読み込みに失敗しました" - } -} diff --git a/locale/lang/ja/OpenSourceLicenses.fvv b/locale/lang/ja/OpenSourceLicenses.fvv deleted file mode 100644 index bebe369e4..000000000 --- a/locale/lang/ja/OpenSourceLicenses.fvv +++ /dev/null @@ -1,8 +0,0 @@ - -OpenSourceLicenses = { - Title = "オープンソースライセンス" - - LicenseSheet = { - NoContent = "ライセンス内容がありません" - } -} diff --git a/locale/lang/ja/Override.fvv b/locale/lang/ja/Override.fvv deleted file mode 100644 index 059de7bce..000000000 --- a/locale/lang/ja/Override.fvv +++ /dev/null @@ -1,116 +0,0 @@ - -Override = { - Title = "上書き設定" - - Action = { - Create = "設定を作成" - New = "新規設定" - NetworkImport = "リンクからインポート" - } - - BuiltIn = { - PreventDnsLeak = "DNS リークを防止" - AddDirectRules = "直通ルールを追加" - PuddingDog = "Pudding Dog 購読変換" - Acl4ssrOnlineFull = "ACL4SSR Online Full" - CopyName = "%s (コピー)" - } - - Empty = { - Title = "上書き設定がありません" - Hint = "下のボタンで新規作成するか、設定ファイルをインポート" - UserTitle = "インポート済みの上書きがありません" - UserHint = "YAML / JS の上書きを作成またはインポートできます" - } - - Section = { - BuiltIn = "組み込み" - User = "インポート済み" - } - - Status = { - InUse = "使用中" - NotInUse = "未使用" - BuiltIn = "組み込み" - } - - Card = { - Copy = "設定をコピー" - Export = "設定を書き出し" - Edit = "設定を編集" - Delete = "設定を削除" - EditButton = "編集" - DeleteButton = "削除" - Apply = "設定を適用" - ApplyButton = "適用" - } - - ApplySheet = { - Title = "購読へ適用" - Empty = "購読がありません" - Success = "適用範囲を更新しました" - Failed = "適用範囲の更新に失敗しました: %s" - Button = { - Cancel = "キャンセル" - Confirm = "確定" - } - } - - Import = { - ReadError = "インポートファイルを読み取れません" - Failed = "インポートに失敗しました: %s" - FileError = "ファイルの読み取りに失敗しました: %s" - NetworkError = "リンクのインポートに失敗しました: %s" - InvalidUrl = "HTTP または HTTPS の URL を入力してください" - HttpError = "HTTP 要求に失敗しました: %d" - UnsupportedType = "YAML または JS のみ対応" - EmptyJavaScript = "JS ファイルが空です" - } - - Export = { - Failed = "書き出しに失敗しました: %s" - Success = "設定を書き出しました: %s" - } - - Dialog = { - Create = { - Title = "設定を追加" - Name = "設定名" - Url = "設定 URL" - Type = "作成種別" - } - Delete = { - Title = "設定を削除" - InUseMessage = "設定 %s は購読で使用中です.削除すると関連付けが解除されます.本当に削除しますか?この操作は元に戻せません." - Message = "設定 %s を削除しますか?この操作は元に戻せません." - } - Button = { - Cancel = "キャンセル" - Delete = "削除" - } - } - - - - - - - Draft = { - BasicRouting = "基本ルーティング" - ServiceRouting = "サービスルーティング" - } - - - - Save = { - ImportDefaultName = "インポートした上書き設定" - Failed = "上書き設定の保存に失敗しました" - } - - - - Label = { - RulesReplace = "ルールを上書き" - } - -} diff --git a/locale/lang/ja/ProfilesPage.fvv b/locale/lang/ja/ProfilesPage.fvv deleted file mode 100644 index 620856370..000000000 --- a/locale/lang/ja/ProfilesPage.fvv +++ /dev/null @@ -1,118 +0,0 @@ - -ProfilesPage = { - Title = "プロファイル" - - Action = { - UpdateAll = "すべて更新" - AddProfile = "プロファイルを追加" - } - - Empty = { - NoProfiles = "プロファイルがありません" - Hint = "右上からプロファイルを追加" - } - - Sheet = { - AddTitle = "プロファイルを追加" - EditTitle = "プロファイルを編集" - Complete = "完了" - } - - Type = { - Title = "プロファイル種別" - Subscription = "購読 URL" - LocalFile = "ローカルファイル" - QrScan = "QR コードをスキャン" - } - - Input = { - ProfileName = "プロファイル名" - SubscriptionUrl = "購読 URL (HTTP/HTTPS)" - SelectFile = "タップしてファイルを選択" - NewProfile = "新規プロファイル" - AgeSecretKey = "Age 秘密鍵(任意)" - } - - QrScanner = { - NeedPermission = "カメラ権限が必要です" - NeedCamera = "スキャンにはカメラ権限が必要です" - SelectFromAlbum = "アルバムから QR コードを選択" - RecognizeSuccess = "認識に成功しました" - RecognizeFailed = "QR コードを認識できませんでした" - RecognizeError = "認識に失敗しました: %s" - } - - Message = { - UnknownFile = "不明なファイル" - } - - Validation = { - EnterUrl = "URL を入力してください" - SelectFile = "ファイルを選択してください" - YamlOnly = ".yaml または .yml 形式のみ対応" - } - - Progress = { - Downloading = "ダウンロード中..." - } - - Button = { - Cancel = "キャンセル" - Confirm = "確定" - } - - DeleteDialog = { - Title = "プロファイルを削除" - Message = "「%s」を削除しますか?" - Confirm = "削除" - } - - EditDialog = { - Title = "プロファイル名を編集" - } - - LinkSettings = { - Title = "リンク設定" - OpenMode = "開き方" - OpenModeInApp = "アプリ内" - OpenModeExternal = "外部ブラウザ" - DefaultLink = "既定リンク" - DefaultLinkSummary = "左上のショートカットをタップしたときに開くリンク" - AddLink = "リンクを追加" - EditLink = "リンクを編集" - Name = "名前" - Url = "URL" - Close = "閉じる" - Validation = { - EnterName = "名前を入力してください" - EnterUrl = "URL を入力してください" - InvalidUrl = "有効な URL を入力してください" - } - } - - ShareDialog = { - Title = "プロファイルを共有" - ShareFile = "設定ファイルを共有" - ShareLink = "購読リンクを共有" - NoLink = "このプロファイルには購読リンクがありません" - ImportedConfigMissing = "インポートした設定がありません: %s" - } - - - SettingsDialog = { - Title = "購読設定" - ChangeLink = "購読リンクを変更" - CustomRouting = "カスタムルーティング" - CustomRoutingSummary = "独立したルーティングルール" - NoDescription = "説明未設定" - EditProfile = "プロファイルを編集" - OpenConfig = "エディターで開く" - EditSettings = "購読設定" - SectionType = "設定種別" - SectionSubscription = "購読情報" - SectionOverride = "上書き設定" - SaveFailed = "プロファイルの保存に失敗しました" - ConfigMissing = "設定が見つかりません: %s" - AgeSecretKey = "Age 秘密鍵" - } -} diff --git a/locale/lang/ja/ProfilesVM.fvv b/locale/lang/ja/ProfilesVM.fvv deleted file mode 100644 index 80b471504..000000000 --- a/locale/lang/ja/ProfilesVM.fvv +++ /dev/null @@ -1,24 +0,0 @@ - -ProfilesVM = { - Message = { - ProfileAdded = "プロファイルを追加しました: %s" - AddFailed = "プロファイルの追加に失敗しました: %s" - ProfileDeleted = "プロファイルを削除しました" - DeleteFailed = "プロファイルの削除に失敗しました: %s" - ProfileUpdated = "プロファイルを更新しました: %s" - UpdateFailed = "プロファイルの更新に失敗しました: %s" - ToggleFailed = "状態の切り替えに失敗しました: %s" - ProvidersPartial = "プロファイルを保存しました.外部リソース %d 件が失敗: %s" - ProvidersUndiscovered = "プロファイルを保存しましたが、外部リソース一覧を認識できませんでした" - } - - Progress = { - Preparing = "ダウンロードを準備中..." - Verifying = "設定を検証中..." - ImportComplete = "インポート完了" - } - - Error = { - ProfileNotExist = "プロファイルが存在しません" - } -} \ No newline at end of file diff --git a/locale/lang/ja/Providers.fvv b/locale/lang/ja/Providers.fvv deleted file mode 100644 index b6bfc2b1b..000000000 --- a/locale/lang/ja/Providers.fvv +++ /dev/null @@ -1,39 +0,0 @@ - -Providers = { - Title = "外部リソース" - - Action = { - UpdateAll = "すべて更新" - Update = "更新" - Upload = "アップロード" - Operation = "操作" - } - - Empty = { - NotRunning = "プロキシが起動していません" - NotRunningHint = "外部リソースを表示するにはプロキシを開始してください" - NoProviders = "外部リソースがありません" - NoProvidersHint = "現在のプロファイルに外部リソースがありません" - } - - Type = { - ProxyProviders = "プロキシプロバイダー (%d)" - RuleProviders = "ルールプロバイダー (%d)" - } - - VehicleType = { - Http = "HTTP" - File = "ファイル" - Inline = "インライン" - Compatible = "互換" - } - - Message = { - FetchFailed = "リソースの取得に失敗しました: %s" - UpdateSuccess = "%s を更新しました" - UpdateFailed = "更新に失敗しました: %s" - AllUpdated = "すべて更新しました" - UploadSuccess = "%s をアップロードしました" - UploadFailed = "アップロードに失敗しました: %s" - } -} diff --git a/locale/lang/ja/Proxy.fvv b/locale/lang/ja/Proxy.fvv deleted file mode 100644 index 549a72ad5..000000000 --- a/locale/lang/ja/Proxy.fvv +++ /dev/null @@ -1,56 +0,0 @@ - -Proxy = { - Title = "ノード" - - Mode = { - Direct = "ダイレクト" - } - - Action = { - Panel = "パネル" - Test = "テスト" - Sort = "並び替え" - LocateCurrent = "現在のノードを表示" - More = "その他" - } - - Node = { - Timeout = "タイムアウト" - Count = "%d ノード" - } - - - Empty = { - NoNodes = "ノードがありません" - Hint = "設定ページでプロファイルを読み込んでください" - } - - Testing = { - Group = "ノードグループをテスト中: %s" - All = "すべてのノードグループをテスト中..." - RequestSent = "テスト要求を送信しました" - Progress = "テスト中 %d/%d" - Completed = "テスト完了" - Failed = "テストに失敗しました: %s" - InProgress = "ノードをテスト中" - } - - Selection = { - Switched = "切り替え先: %s" - Failed = "切り替えに失敗しました" - Error = "切り替えに失敗しました: %s" - } - - SortMode = { - Default = "既定" - ByName = "名前順" - ByLatency = "遅延順" - } - - DisplayMode = { - SingleDetailed = "1列・詳細" - SingleSimple = "1列・簡易" - DoubleDetailed = "2列・詳細" - DoubleSimple = "2列・簡易" - } -} diff --git a/locale/lang/ja/Rules.fvv b/locale/lang/ja/Rules.fvv deleted file mode 100644 index a6ecee5af..000000000 --- a/locale/lang/ja/Rules.fvv +++ /dev/null @@ -1,25 +0,0 @@ - -Rules = { - Title = "ルール" - Summary = "実行中ルールの確認と一時的な切り替え" - SearchHint = "ルールを検索" - - Label = { - Proxy = "ポリシー" - HitRate = "ヒット率 %s" - } - - Message = { - ToggleFailed = "ルールの切り替えに失敗しました: %s" - } - - Empty = { - Loading = "読み込み中" - LoadingHint = "コアからルールを取得しています" - NotRunning = "プロキシが起動していません" - NotRunningHint = "ルールを表示するにはプロキシを開始してください" - NoRules = "ルールがありません" - NoRulesHint = "現在の設定にルールがありません" - NoResults = "一致するルールがありません" - } -} diff --git a/locale/lang/ja/Service.fvv b/locale/lang/ja/Service.fvv deleted file mode 100644 index bd7c56f97..000000000 --- a/locale/lang/ja/Service.fvv +++ /dev/null @@ -1,26 +0,0 @@ - -Service = { - Notification = { - Running = "実行中" - UnknownProfile = "不明なプロファイル" - NoNode = "未選択" - CurrentNode = "現在のノード:%s" - CurrentNodeLabel = "現在のノード" - RealtimeTraffic = "リアルタイム通信量" - SpeedLine = "下り %s 上り %s" - TotalTraffic = "合計 %s" - LogChannel = "ログ記録" - LogRecording = "ログを記録中" - LogRecordingPending = "記録中..." - Stop = "停止" - } - - Tile = { - ClickToOpen = "タップしてアプリを開く" - ClickToStartProxy = "プロキシを開始" - ClickToStopProxy = "プロキシを停止" - Connecting = "接続中..." - Disconnecting = "切断中..." - } - -} diff --git a/locale/lang/ja/Settings.fvv b/locale/lang/ja/Settings.fvv deleted file mode 100644 index 8b2e836b9..000000000 --- a/locale/lang/ja/Settings.fvv +++ /dev/null @@ -1,35 +0,0 @@ - -Settings = { - Title = "設定" - - Section = { - UiSettings = "UI 設定" - More = "その他" - } - - UiSettings = { - App = "アプリ" - AppSummary = "テーマ、言語、動作" - Network = "ネットワーク" - NetworkSummary = "プロキシモード、DNS、アクセス制御" - Override = "上書き" - OverrideSummary = "YAML / JS / ルールの上書き" - MetaFeatures = "Meta 機能" - MetaFeaturesSummary = "接続、ログ、ルール、統計" - } - - More = { - Lab = "ラボ" - LabSummary = "Sub-Store と実験機能" - Logs = "ログ" - LogsSummary = "実行ログ" - Onboarding = "セットアップガイド" - OnboardingSummary = "ようこそガイドを再表示" - About = "情報" - AboutSummary = "バージョンとライセンス" - } - - Error = { - WebviewFailed = "WebView を開けません: %s" - } -} diff --git a/locale/lang/ja/TrafficStatistics.fvv b/locale/lang/ja/TrafficStatistics.fvv deleted file mode 100644 index be60d5e0d..000000000 --- a/locale/lang/ja/TrafficStatistics.fvv +++ /dev/null @@ -1,54 +0,0 @@ - -TrafficStatistics = { - Title = "統計" - EntrySummary = "通信量の利用状況を表示" - - TimeRange = { - Today = "今日" - Week = "今週" - } - - Summary = { - TodayTraffic = "今日の通信量" - WeekTraffic = "今週の通信量" - Average = "平均" - DayTrafficTip = "%s の通信量" - } - - Donut = { - Other = "その他" - } - - Action = { - Clear = "統計を消去" - ClearSuccess = "統計を消去しました" - } - - Section = { - Traffic = "通信量" - TopApps = "通信量の多いアプリ" - TodayApps = "今日のアプリ" - WeekApps = "直近 7 日のアプリ" - SystemTraffic = "システム通信量" - EmptyApps = "アプリの通信量統計はありません" - } - - Metric = { - Download = "下り" - Upload = "上り" - UsageLine = "下り %s 上り %s" - SortByName = "名前" - SortByUsage = "使用量" - } - - Weekday = { - Mon = "月" - Tue = "火" - Wed = "水" - Thu = "木" - Fri = "金" - Sat = "土" - Sun = "日" - Today = "今日" - } -} diff --git a/locale/lang/ja/Util.fvv b/locale/lang/ja/Util.fvv deleted file mode 100644 index 410a1b83b..000000000 --- a/locale/lang/ja/Util.fvv +++ /dev/null @@ -1,6 +0,0 @@ - -Util = { - Error = { - UnknownError = "不明なエラー" - } -} diff --git a/locale/lang/ru/About.fvv b/locale/lang/ru/About.fvv deleted file mode 100644 index 5d127525c..000000000 --- a/locale/lang/ru/About.fvv +++ /dev/null @@ -1,44 +0,0 @@ - -About = { - Title = "О приложении" - - App = { - Description = "Android-клиент с открытым исходным кодом на базе mihomo" - VersionLoading = "Загрузка..." - VersionFailed = "Не удалось загрузить" - } - - Debug = { - Title = "Debug" - TestInitialization = "Тестовая инициализация" - InitializationReset = "Состояние инициализации сброшено" - } - - Section = { - ProjectLinks = "Ссылки проекта" - More = "Ещё" - Support = "Поддержка" - License = "Лицензия" - } - - Link = { - TelegramGroup = "Группа Telegram" - TelegramChannel = "Канал Telegram" - } - - Support = { - ExportLogs = "Экспорт журналов" - ReportIssue = "Сообщить о проблеме" - ExportSuccess = "Журналы экспортированы" - ExportFailed = "Не удалось экспортировать журналы" - } - - License = { - Libraries = "Библиотеки" - LibrariesSummary = "Просмотреть все сторонние библиотеки, используемые в приложении" - AgplName = "GNU Affero General Public License v3.0" - AgplDescription = "Эта программа — свободное ПО: вы можете распространять и/или изменять её на условиях GNU Affero General Public License." - } - - Copyright = "© 2025 – Present YumeYucca" -} diff --git a/locale/lang/ru/AccessControl.fvv b/locale/lang/ru/AccessControl.fvv deleted file mode 100644 index 958e05906..000000000 --- a/locale/lang/ru/AccessControl.fvv +++ /dev/null @@ -1,48 +0,0 @@ - -AccessControl = { - Title = "Контроль доступа" - - Search = { - Placeholder = "Поиск приложений..." - Empty = "Нет подходящих приложений" - } - - AppList = { - Title = "Список приложений (выбрано: %d)" - Loading = "Загрузка..." - } - - Settings = { - Title = "Настройки контроля доступа" - ShowSystemApps = "Показывать системные приложения" - SelectedFirst = "Выбранные сначала" - SortMode = "Сортировка" - SortModeCurrent = "Сейчас: %s" - BatchOperation = "Пакетные действия" - SelectAll = "Выбрать все" - DeselectAll = "Снять выбор" - Invert = "Инвертировать" - ImportExport = "Импорт/экспорт" - Import = "Импорт из буфера" - Export = "Экспорт в буфер" - ImportSuccess = "Импортировано имён пакетов: %d" - ExportSuccess = "Скопировано имён пакетов в буфер: %d" - ImportFailed = "Импорт не удался" - RegionQuickSelect = "Быстрый выбор по региону" - ChinaApps = "Китайские приложения" - OverseasApps = "Некитайские приложения" - RegionSelectResult = "Быстрый выбор «%s», всего %d" - } - - SortMode = { - PackageName = "Имя пакета" - Label = "Название приложения" - InstallTime = "Время установки" - UpdateTime = "Время обновления" - } - - Button = { - Cancel = "Отмена" - Confirm = "Подтвердить" - } -} diff --git a/locale/lang/ru/AppSettings.fvv b/locale/lang/ru/AppSettings.fvv deleted file mode 100644 index de1f31daf..000000000 --- a/locale/lang/ru/AppSettings.fvv +++ /dev/null @@ -1,93 +0,0 @@ - -AppSettings = { - Title = "Настройки приложения" - - Section = { - Behavior = "Поведение" - Interface = "Интерфейс" - Privacy = "Конфиденциальность" - Service = "Служба" - Network = "Сеть" - Navigation = "Навигация" - Home = "Главная" - } - - Behavior = { - AutoStartTitle = "Автозапуск" - AutoUpdateOnStartTitle = "Обновлять при запуске" - } - - Interface = { - ThemeModeTitle = "Режим темы" - ThemeModeSummary = "Выберите стиль темы приложения" - ThemeModeSystem = "Как в системе" - ThemeModeLight = "Светлая" - ThemeModeDark = "Тёмная" - LanguageTitle = "Язык приложения" - LanguageSystem = "Как в системе" - LanguageChinese = "简体中文" - LanguageChineseTraditional = "繁體中文" - LanguageEnglish = "English" - LanguageJapanese = "日本語" - LanguageRussian = "Русский" - - ColorThemeTitle = "Палитра темы" - ColorThemePickerTitle = "Выбрать цвет темы" - ColorThemeCodeLabel = "Код цвета темы (#RRGGBB)" - ColorThemeCustomSummary = "Текущий цвет темы: %s" - ThemeColorPolarityInvertTitle = "Инвертировать цвет переднего плана" - TopBarBlurTitle = "Размытие" - AutoHideNavbarTitle = "Автоскрытие панели навигации" - - PageScaleTitle = "Масштаб страницы" - PageScaleDialogSummary = "80% - 120%" - PredictiveBackTitle = "Предиктивный жест назад" - PredictiveBackRestartSummary = "Вступит в силу при следующем запуске приложения" - PredictiveBackProgressTitle = "Амплитуда возврата" - - ClassicHomeTitle = "Классическая главная" - SystemWallpaperTitle = "Установить системные обои" - CustomIconTitle = "Пользовательский значок приложения" - HomeQuoteTitle = "Цитата на главной" - HomeQuoteDefault = "На тихом маршруте ждать, пока облако закончит роуминг" - EditHomeQuoteTitle = "Изменить цитату" - HomeWallpaperImportFailed = "Не удалось скопировать обои локально; используется исходный источник" - } - - Privacy = { - - HideFromRecentsTitle = "Скрыть карточку в недавних" - } - - ServiceSection = { - TrafficNotificationTitle = "Показывать уведомление о трафике" - ExitUiWhenBackgroundTitle = "Освобождать UI в фоне" - SuperIslandTitle = "Super Island" - ShizukuTitle = "Доступ через Shizuku" - ShizukuNotRunning = "Сначала установите и запустите Shizuku" - ShizukuPermissionRequired = "Нажмите, чтобы запросить разрешение Shizuku" - ShizukuReady = "Shizuku разрешён, Super Island готов" - ShizukuStatusUnavailable = "Недоступен" - ShizukuStatusPending = "Не разрешён" - ShizukuStatusGranted = "Разрешён" - BatteryOptimizationTitle = "Без ограничений батареи" - BatteryOptimizationAlreadyDisabled = "Оптимизация батареи уже отключена" - } - - Network = { - CustomUserAgentTitle = "Свой User-Agent" - CustomUserAgentSummaryDefault = "Не задан, используется значение по умолчанию" - } - - WarningDialog = { - Title = "Предупреждение" - } - - EditDialog = { - UserAgentTitle = "Изменить User-Agent" - } - - Button = { - Apply = "Применить" - } -} diff --git a/locale/lang/ru/Component.fvv b/locale/lang/ru/Component.fvv deleted file mode 100644 index 593161c95..000000000 --- a/locale/lang/ru/Component.fvv +++ /dev/null @@ -1,107 +0,0 @@ - -Component = { - ProfileCard = { - Update = "Обновить" - Export = "Экспорт" - Edit = "Изменить" - Delete = "Удалить" - RemoteSubscription = "Удалённая подписка" - LocalFile = "Локальный файл" - LocalConfig = "Локальная конфигурация" - ClickToUpdate = "Нажмите «Обновить», чтобы получить сведения о подписке" - Traffic = "Трафик: %s / %s (%d%%)" - UsedTraffic = "Использовано: %s" - ExpireAt = "Истекает: %s (осталось %d дн.)" - ExpireToday = "Истекает: сегодня" - Expired = "Истекло: %s" - JustNow = "Только что" - MinutesAgo = "%d мин. назад" - HoursAgo = "%d ч. назад" - DaysAgo = "%d дн. назад" - } - - WebView = { - InvalidUrl = "Недействительный URL" - } - - Selector = { - NotModify = "Не изменять" - Enable = "Включить" - Disable = "Отключить" - Replace = "Заменить" - Prepend = "В начало" - Append = "В конец" - Merge = "Объединить" - } - - Navigation = { - Back = "Назад" - } - - Message = { - Confirm = "Подтвердить" - Hint = "Подсказка" - Error = "Ошибка" - Success = "Успешно" - } - - Button = { - Cancel = "Отмена" - Confirm = "Подтвердить" - Clear = "Очистить" - Copy = "Копировать" - } - - Flag = { - ContentDescription = "Флаг %s" - } - - Loading = { - Starting = "Запуск..." - } - - - ConfigInput = { - PortLabel = "Порт (оставьте пустым, чтобы не менять)" - CountItems = "Элементов: %d" - } - - BottomBar = { - Home = "Главная" - Proxy = "Прокси" - Config = "Профили" - Setting = "Настройки" - } - - Editor = { - CountItems = "Всего %d" - Action = { - Search = "Поиск" - } - Dialog = { - AddTitle = "Добавить запись" - EditTitle = "Изменить запись" - ResetTitle = "Подтвердить сброс" - ResetMessage = "Очистить все записи и вернуть неизменённое состояние?" - } - Empty = { - Title = "Нет записей" - Hint = "Нажмите кнопку справа сверху, чтобы добавить" - } - Error = { - KeyEmpty = "Ключ не может быть пустым" - KeyExists = "Ключ уже существует" - } - Rule = { - Type = "Тип правила" - Target = "Цель" - Content = "Содержимое правила" - Src = "IP источника" - NoResolve = "Не разрешать" - TargetReject = "REJECT" - TargetDirect = "DIRECT" - TargetMatch = "MATCH" - ErrorContentRequired = "Содержимое правила не может быть пустым" - } - } -} diff --git a/locale/lang/ru/Connection.fvv b/locale/lang/ru/Connection.fvv deleted file mode 100644 index 6839396e2..000000000 --- a/locale/lang/ru/Connection.fvv +++ /dev/null @@ -1,64 +0,0 @@ - -Connection = { - Title = "Соединения" - Summary = "Просмотр активных соединений" - - Tab = { - Active = "Активные" - Closed = "Закрытые" - } - - Search = "Поиск" - SearchHint = "Поиск хоста, процесса..." - - SortBy = "Сортировка:" - Sort = { - Time = "Время" - Upload = "Отдача" - Download = "Загрузка" - Host = "Хост" - } - - ChainCount = "x%d" - - RelativeTime = { - JustNow = "Только что" - MinutesAgo = "%d мин. назад" - HoursAgo = "%d ч. назад" - DaysAgo = "%d дн. назад" - Date = "%02d-%02d" - } - - Detail = { - Title = "Сведения о соединении" - - Action = { - Interrupting = "Прерывание соединения..." - Interrupt = "Прервать соединение" - } - - Section = { - Info = "Информация о соединении" - Rule = "Правило" - Chain = "Цепочка прокси" - } - - Label = { - Host = "Хост" - Protocol = "Протокол" - Process = "Процесс" - SourceAddress = "Адрес источника" - DestinationAddress = "Адрес назначения" - Duration = "Длительность" - Upload = "Отдача" - Download = "Загрузка" - Type = "Тип" - Content = "Содержимое" - Chain = "Цепочка" - } - } - - Loading = "Загрузка..." - Empty = "Нет активных соединений" - NoResults = "Нет подходящих соединений" -} diff --git a/locale/lang/ru/Editor.fvv b/locale/lang/ru/Editor.fvv deleted file mode 100644 index b945cab7c..000000000 --- a/locale/lang/ru/Editor.fvv +++ /dev/null @@ -1,24 +0,0 @@ -<Редактор> -Editor = { - Title = { - Config = "Изменить конфигурацию" - Preview = "Предпросмотр конфигурации" - Override = "Изменить переопределение" - Profile = "Изменить профиль" - } - Action = { - Format = "Форматировать" - Save = "Сохранить" - } - Message = { - FormatSuccess = "Форматирование выполнено" - FormatSkipped = "Форматирование не удалось или не требуется" - SaveFailed = "Ошибка сохранения" - } - Discard = { - Title = "Несохранённые изменения" - Summary = "Есть несохранённые изменения. Отменить их?" - Confirm = "Отменить" - } - JsonSubtitle = "Редактировать в формате JSON" -} diff --git a/locale/lang/ru/Feature.fvv b/locale/lang/ru/Feature.fvv deleted file mode 100644 index 6106d9e89..000000000 --- a/locale/lang/ru/Feature.fvv +++ /dev/null @@ -1,92 +0,0 @@ - -Feature = { - Title = "Управление функциями" - - ServiceStatus = { - Section = "Состояние службы" - SwitchStartSubStore = "Запустить службу Sub-Store" - OpenSubStorePanel = "Открыть панель Sub-Store" - AllowLan = "Разрешить доступ по LAN" - AutoCloseModeTitle = "Таймер автозакрытия" - AutoCloseModeAlwaysOn = "Всегда включено" - AutoCloseMode5Min = "5 минут" - AutoCloseMode10Min = "10 минут" - AutoClosed = "Sub-Store автоматически закрыт" - } - - Panel = { - Section = "Выбор панели" - SelectPanel = "Выбрать панель" - OpenMode = "Протокол панели" - OpenPanel = "Открыть внешнюю панель" - Unknown = "Неизвестная панель" - CreateShortcut = "Создать ярлык на рабочем столе" - CreateShortcutSummary = "Добавить текущую панель на главный экран с иконкой сайта" - ShortcutTitle = "Создать ярлык" - ShortcutName = "Имя" - ShortcutPickIcon = "Выбрать иконку" - ShortcutResetIcon = "Сбросить" - } - - RemoteController = { - Section = "Внешнее управление" - ModeTitle = "Режим внешнего контроллера" - ControlBackend = "Управляющий бэкенд" - AddBackend = "Добавить бэкенд" - EditBackend = "Изменить бэкенд" - Name = "Имя" - Host = "IP / хост" - Port = "Порт" - Secret = "Секрет (необязательно)" - Protocol = "Протокол" - PortRangeError = "Порт должен быть в диапазоне 1-65535" - Connected = "Подключено: режим %s" - ConnectionFailed = "Ошибка подключения: %s" - Delete = "Удалить" - } - - SubStore = { - Section = "Ресурсы Sub-Store" - JavetLibraryReady = "Среда выполнения готова" - JavetLibraryDownload = "Скачать и установить среду выполнения" - JavetAvailable = "Проверить обновления" - DownloadHint = "Скачать и установить среду выполнения" - JavetDownloadSuccess = "Среда выполнения установлена" - JavetDownloadFailed = "Не удалось установить среду выполнения" - DownloadResources = "Скачать ресурсы" - DownloadResourcesSummary = "Скачать файлы ресурсов" - Not32Bit = "Sub-Store не поддерживает 32-битные устройства" - DownloadSubStoreFirst = "Сначала скачайте ресурсы Sub-Store" - JavetNotReady = "Сначала скачайте и установите среду выполнения" - FrontendDownloadSuccess = "Фронтенд Sub-Store скачан" - FrontendDownloadFailed = "Не удалось скачать фронтенд Sub-Store" - BackendDownloadSuccess = "Бэкенд Sub-Store скачан" - BackendDownloadFailed = "Не удалось скачать бэкенд Sub-Store" - DownloadError = "Ошибка загрузки: %s" - } - - BackupRestore = { - Section = "Резервное копирование" - ExportTitle = "Экспорт резервной копии" - ExportSummary = "Экспорт настроек, профилей, переопределений и данных Sub-Store" - RestoreTitle = "Восстановить резервную копию" - RestoreSummary = "Выберите файл резервной копии и замените текущую конфигурацию" - Cancel = "Отмена" - - RestoreDialog = { - Title = "Восстановить резервную копию?" - Message = "Восстановление остановит прокси и Sub-Store, затем заменит текущие настройки, профили, переопределения и данные Sub-Store." - } - - Message = { - ExportSuccess = "Резервная копия успешно экспортирована." - RestoreSuccess = "Восстановление завершено. Перезапустите приложение, чтобы обновить все экраны." - } - - Error = { - OpenOutputFailed = "Не удалось записать файл резервной копии" - OpenInputFailed = "Не удалось прочитать файл резервной копии" - OperationFailed = "Операция не удалась: %s" - } - } -} diff --git a/locale/lang/ru/Home.fvv b/locale/lang/ru/Home.fvv deleted file mode 100644 index 5b015f00f..000000000 --- a/locale/lang/ru/Home.fvv +++ /dev/null @@ -1,80 +0,0 @@ - -Home = { - Title = "YumeBox" - - Message = { - ConfigSwitched = "Профиль переключён" - ConfigSwitchFailed = "Не удалось переключить профиль: %s" - Preparing = "Подготовка..." - BuiltinGeoRequired = "Сначала установите версию Builtin" - StartFailed = "Не удалось запустить: %s" - RuntimeUnavailable = "Среда выполнения недоступна. Повторите попытку." - StopFailed = "Не удалось остановить: %s" - } - - Control = { - HintAddProfile = "Сначала добавьте профиль" - HintEnableProfile = "Сначала включите профиль на странице «Профили»" - } - - NodeInfo = { - Node = "Узел" - Delay = "Задержка" - Unknown = "Неизвестно" - DelayValue = "%dms" - } - - Traffic = { - UpShort = "UP" - DownShort = "DOWN" - Upload = "ОТПРАВКА" - Download = "СКАЧИВАНИЕ" - NoProfile = "Нет профиля" - } - - IpInfo = { - ExitIp = "Выходной IP" - } - - Status = { - Connecting = "Подключение" - Disconnecting = "Отключение" - Running = "Работает" - Lost = "Связь потеряна" - TapToStart = "Нажмите, чтобы запустить" - } - - Settings = { - Title = "Настройки главной" - Quote = "Цитата" - ClassicHome = "Использовать классическую главную" - ExpandSidebar = "Развернуть боковую панель" - ChangeWallpaper = "Сменить обои" - } - - Control = { - HintAddProfile = "Сначала добавьте профиль" - HintEnableProfile = "Сначала включите профиль на странице «Профили»" - Start = "Старт" - Stop = "Стоп" - } - - ProxyMode = { - Vpn = "VPN" - Tun = "TUN" - Ebpf = "eBPF" - } - - PreviewGuide = { - Title = "Добро пожаловать в YumeBox" - Description = "Нажмите «Старт» внизу, чтобы подключиться" - Next = "Далее" - Start = "Начать" - WallpaperTitle = "Сменить обои" - WallpaperDescription = "Удерживайте обои, чтобы выбрать изображение из альбома" - SwipeTitle = "Листайте страницы" - SwipeDescription = "Смахивайте по главному экрану, чтобы перейти к прокси, профилям и настройкам" - AddTitle = "Установить системные обои" - AddDescription = "Включите переключатель и предоставьте доступ для использования текущих системных обоев" - } -} diff --git a/locale/lang/ru/Log.fvv b/locale/lang/ru/Log.fvv deleted file mode 100644 index 24e02d60c..000000000 --- a/locale/lang/ru/Log.fvv +++ /dev/null @@ -1,36 +0,0 @@ - -Log = { - Title = "Журналы" - Summary = "Журналы выполнения в реальном времени" - SearchHint = "Поиск по журналам" - - Level = { - All = "Все" - Debug = "Debug" - Info = "Info" - Warning = "Warning" - Error = "Error" - Filter = "Фильтр уровня" - } - - Action = { - Export = "Экспорт" - Copied = "Журнал скопирован" - } - - Empty = { - Connecting = "Подключение к журналам" - ConnectingHint = "Открытие потока логов ядра" - Retrying = "Повторное подключение к журналам" - RetryingHint = "После восстановления соединение продолжится автоматически" - NoLogs = "Журналов пока нет" - LiveHint = "Получение логов ядра в реальном времени" - NoMatch = "Нет логов выбранного уровня" - NoResults = "Нет подходящих логов" - } - - Detail = { - WaitingLog = "Журналов пока нет" - WillShowWhenGenerated = "Журналы появятся здесь по мере поступления" - } -} diff --git a/locale/lang/ru/MetaFeature.fvv b/locale/lang/ru/MetaFeature.fvv deleted file mode 100644 index aa002fe22..000000000 --- a/locale/lang/ru/MetaFeature.fvv +++ /dev/null @@ -1,61 +0,0 @@ - -MetaFeature = { - Title = "Функции Meta" - - Section = { - ConnectionAndTraffic = "Соединения, журналы и правила" - Routing = "Маршрутизация" - } - - GeoX = { - OnlineUpdateTitle = "Обновить GeoX" - OnlineUpdateSummary = "Скачать базу данных" - } - - CustomRouting = { - Title = "Своя маршрутизация" - Summary = "Отдельная конфигурация правил маршрутизации" - EditYaml = "Редактировать YAML" - ManualYamlPresetDiscarded = "Несохранённые изменения пресета отменены для защиты YAML, отредактированного вручную." - GroupTypeTitle = "Типы групп" - GroupTypeUrlTest = "UrlTest" - GroupTypeFallback = "Fallback" - UrlTestRegionGroupTitle = "Региональные группы UrlTest" - FallbackRegionGroupTitle = "Региональные группы Fallback" - Region = { - HongKong = "Автовыбор Гонконга" - Taiwan = "Автовыбор Тайваня" - Japan = "Автовыбор Японии" - Singapore = "Автовыбор Сингапура" - UnitedStates = "Автовыбор США" - Other = "Автовыбор других регионов" - } - Item = { - Proxy = "Правила прокси" - Ads = "Блокировка рекламы" - China = "Материковый Китай напрямую" - Global = "Геоправила вне Китая" - Match = "Финальный MATCH" - } - } - - RuntimeRules = { - Title = "Правила" - Summary = "Просмотр и временное переключение правил" - } - - Download = { - DialogTitle = "Онлайн-обновление GeoX" - DownloadComplete = "Загрузка завершена: %d/%d" - } - - AgeKey = { - Section = "Ключи Age" - X25519Title = "X25519" - HybridTitle = "mlkem768-x25519" - SecretKey = "Секретный ключ" - PublicKey = "Открытый ключ" - Generate = "Сгенерировать" - DerivePublicKey = "Вывести открытый ключ" - } -} diff --git a/locale/lang/ru/NetworkSettings.fvv b/locale/lang/ru/NetworkSettings.fvv deleted file mode 100644 index 725bb9ba9..000000000 --- a/locale/lang/ru/NetworkSettings.fvv +++ /dev/null @@ -1,128 +0,0 @@ - -NetworkSettings = { - Title = "Сетевые настройки" - - Section = { - VpnOptions = "Параметры службы" - Advanced = "Дополнительно" - ProxyOptions = "Контроль доступа" - Kernel = "Ядро" - } - - Advanced = { - DisableOverrideTitle = "Отключить все переопределения" - } - - RunMode = { - SectionTitle = "Режим работы" - VpnServiceTitle = "Vpn Service" - VpnServiceSummary = "Системный VPN, глобальный прокси" - TunTitle = "Tun" - TunSummary = "Виртуальный сетевой интерфейс, требующий root" - EbpfTitle = "eBPF" - EbpfSummary = "Root eBPF прокси" - } - - VpnOptions = { - BypassPrivateTitle = "Обходить частные сети" - DnsHijackTitle = "Перехват DNS" - AllowBypassTitle = "Разрешить обход приложениями" - EnableIpv6Title = "Включить IPv6" - SystemProxyTitle = "Встроенный системный прокси VPN" - } - - EbpfOptions = { - BypassCnTitle = "Обходить IP материкового Китая в ядре" - } - - TunOptions = { - Title = "Параметры Tun" - IfNameTitle = "Виртуальный NIC" - MtuTitle = "MTU" - StackTitle = "Сетевой стек" - StackSystem = "System" - StackGVisor = "gVisor" - StackMixed = "Mixed" - StackMips = "MIPS" - AutoRouteTitle = "Автомаршрут" - StrictRouteTitle = "Строгий маршрут" - AutoRedirectTitle = "Автоперенаправление" - DnsModeTitle = "Режим DNS" - DnsRedirHost = "RedirHost" - DnsFakeIp = "FakeIP" - Ipv6Title = "Включить IPv6" - } - - - Kernel = { - ActiveTitle = "Активное ядро" - BundledAlpha = "Builtin" - RefreshTitle = "Получить последние ядра" - DownloadTitle = "Удалённые ядра" - FetchButton = "Получить последние" - DownloadButton = "Скачать" - CustomTitle = "Пользовательское ядро" - CustomMethodTitle = "Способ импорта" - CustomUrlMethod = "Ввести URL плагина" - CustomFileMethod = "Загрузить плагин" - CustomUrlLabel = "URL плагина" - CustomChooseFile = "Выбрать файл плагина" - CustomInstallButton = "Установить и включить" - } - - ProxyOptions = { - AccessControlModeTitle = "Режим контроля доступа" - AllowAll = "Разрешить все" - AllowSelected = "Разрешить выбранные" - RejectSelected = "Запретить выбранные" - ManageAccessControlTitle = "Управление контролем доступа" - } - - WifiAutomation = { - Title = "Автоматизация Wi-Fi" - EnabledTitle = "Автоматизация Wi-Fi" - WifiNameHeading = "Имя Wi-Fi" - NetworkChangeSection = "Смена сети" - OtherWifiTitle = "При подключении к другой Wi-Fi" - NoWifiTitle = "Когда Wi-Fi отключён (сотовая сеть / Ethernet / офлайн)" - AddCurrent = "Добавить текущий Wi-Fi" - AddManual = "Добавить Wi-Fi вручную" - Scan = "Сканировать Wi-Fi" - Scanning = "Сканирование Wi-Fi…" - ScanEmpty = "Сети Wi-Fi не найдены" - ScanUnavailable = "Не удалось сканировать Wi-Fi. Проверьте Wi-Fi, разрешение на местоположение и системное местоположение." - ManualDialogTitle = "Добавить Wi-Fi" - EditDialogTitle = "Изменить Wi-Fi" - ManualDialogLabel = "Имя Wi-Fi" - StartAction = "Запустить VPN" - StopAction = "Остановить VPN" - KeepAction = "Ничего не делать" - ActionTitle = "При подключении" - ProfileAction = "Переключиться на профиль" - NoSwitchAction = "Не переключать" - EmptyRules = "Нет правил Wi-Fi" - VpnOnly = "Автоматизация Wi-Fi доступна только в режиме VPN" - PermissionTitle = "Разрешить чтение имени Wi-Fi" - PermissionMessage = "Android считает имена Wi-Fi данными, связанными с местоположением. YumeBox использует точное местоположение только при включении автоматизации или нажатии «Сканировать Wi-Fi», чтобы сопоставить правила на этом устройстве или показать результаты. GPS не читается, имена Wi-Fi не отправляются." - ApproximateTitle = "Требуется точное местоположение" - ApproximateMessage = "Приблизительное местоположение скрывает имя Wi-Fi. Разрешите точное местоположение." - DeniedTitle = "Требуется разрешение на местоположение" - DeniedMessage = "Автоматизация Wi-Fi останется выключенной до выдачи разрешения." - SettingsTitle = "Включите разрешение в настройках" - SettingsMessage = "Android больше не покажет этот запрос. В информации о приложении разрешите местоположение только во время использования и включите точное местоположение." - LocationTitle = "Включите системное местоположение" - LocationMessage = "При выключенном системном местоположении Android скрывает имена Wi-Fi. YumeBox не читает GPS." - Grant = "Разрешить" - OpenSettings = "Открыть настройки" - TurnOnLocation = "Включить местоположение" - Added = "Правило Wi-Fi добавлено" - Duplicate = "Этот Wi-Fi уже есть в правилах" - NoWifi = "Подключение Wi-Fi не найдено" - Unavailable = "Имя Wi-Fi недоступно. Проверьте разрешение и системное местоположение." - } - - Error = { - VpnDenied = "Разрешение VPN отклонено" - RootRequired = "Для root-режима у YumeBox должен быть рабочий root-доступ" - } -} diff --git a/locale/lang/ru/Onboarding.fvv b/locale/lang/ru/Onboarding.fvv deleted file mode 100644 index 2ffbfd154..000000000 --- a/locale/lang/ru/Onboarding.fvv +++ /dev/null @@ -1,73 +0,0 @@ - -Onboarding = { - Navigation = { - Back = "Назад" - Next = "Далее" - Enter = "В приложение" - Start = "Начать" - } - - Welcome = { - Tagline = "Лёгкий, современный и открытый прокси-клиент" - } - - Permission = { - Title = "Подтвердите доступ во время работы" - Subtitle = "Разрешения влияют на уведомления и прокси по приложениям" - - Common = { - Granted = "Разрешено" - } - - Notification = { - Title = "Разрешение на уведомления" - SummaryNeed = "Показывать состояние подключения и уведомления о трафике" - SummaryNotRequired = "На вашей версии Android не требуется" - } - - AppList = { - Title = "Разрешение на список приложений" - SummaryNeed = "Нужно для прокси по приложениям" - } - } - - Privacy = { - Title = "Подтвердите условия конфиденциальности" - Subtitle = "Ознакомьтесь и примите условия, чтобы продолжить" - RichTextLead = "Перед использованием YumeBox нужно принять условия конфиденциальности." - RichTextPrefix = "Перед продолжением ознакомьтесь и примите " - RichTextConnector = " и " - RichTextSuffix = "." - TermsLink = "Условия использования" - PolicyLink = "Политику конфиденциальности" - Accept = { - Title = "Я прочитал(а) и согласен(на) с политикой конфиденциальности" - } - } - - Personalize = { - Title = "Настройте интерфейс" - Subtitle = "Режим темы и акцентный цвет можно изменить позже в настройках" - } - - Finish = { - Title = "Готово" - Subtitle = "Настройка завершена, переход к основному экрану" - } - - Project = { - Github = { - Title = "Репозиторий GitHub" - Summary = "github.com/yumeyucca/YumeBox" - } - Community = { - Title = "Сообщество" - Summary = "Перейти в канал или чат" - } - } - - Sheet = { - PrivacyPolicyTitle = "Политика конфиденциальности" - LoadFailed = "Не удалось загрузить текст политики" - } -} diff --git a/locale/lang/ru/OpenSourceLicenses.fvv b/locale/lang/ru/OpenSourceLicenses.fvv deleted file mode 100644 index f40834757..000000000 --- a/locale/lang/ru/OpenSourceLicenses.fvv +++ /dev/null @@ -1,8 +0,0 @@ - -OpenSourceLicenses = { - Title = "Лицензии с открытым исходным кодом" - - LicenseSheet = { - NoContent = "Содержимое лицензии отсутствует" - } -} diff --git a/locale/lang/ru/Override.fvv b/locale/lang/ru/Override.fvv deleted file mode 100644 index e594307d2..000000000 --- a/locale/lang/ru/Override.fvv +++ /dev/null @@ -1,116 +0,0 @@ - -Override = { - Title = "Переопределения" - - Action = { - Create = "Создать конфигурацию" - New = "Новая конфигурация" - NetworkImport = "Импорт по ссылке" - } - - BuiltIn = { - PreventDnsLeak = "Предотвратить утечки DNS" - AddDirectRules = "Добавить правила прямого доступа" - PuddingDog = "Конвертация подписки Pudding Dog" - Acl4ssrOnlineFull = "ACL4SSR Online Full" - CopyName = "%s (копия)" - } - - Empty = { - Title = "Нет переопределений" - Hint = "Нажмите кнопку ниже, чтобы создать конфигурацию, или импортируйте файл" - UserTitle = "Нет импортированных переопределений" - UserHint = "Создайте или импортируйте YAML / JS переопределение" - } - - Section = { - BuiltIn = "Встроенные" - User = "Импортированные" - } - - Status = { - InUse = "Используется" - NotInUse = "Не используется" - BuiltIn = "Встроенное" - } - - Card = { - Copy = "Копировать конфигурацию" - Export = "Экспорт конфигурации" - Edit = "Изменить конфигурацию" - Delete = "Удалить конфигурацию" - EditButton = "Изменить" - DeleteButton = "Удалить" - Apply = "Применить конфигурацию" - ApplyButton = "Применить" - } - - ApplySheet = { - Title = "Применить к подпискам" - Empty = "Нет подписок" - Success = "Область применения обновлена" - Failed = "Не удалось обновить область применения: %s" - Button = { - Cancel = "Отмена" - Confirm = "Подтвердить" - } - } - - Import = { - ReadError = "Не удалось прочитать файл импорта" - Failed = "Импорт не удался: %s" - FileError = "Не удалось прочитать файл: %s" - NetworkError = "Импорт по ссылке не удался: %s" - InvalidUrl = "Введите URL HTTP или HTTPS" - HttpError = "HTTP-запрос не удался: %d" - UnsupportedType = "Поддерживаются только YAML или JS" - EmptyJavaScript = "JS-файл пуст" - } - - Export = { - Failed = "Экспорт не удался: %s" - Success = "Конфигурация экспортирована: %s" - } - - Dialog = { - Create = { - Title = "Добавить конфигурацию" - Name = "Имя конфигурации" - Url = "URL конфигурации" - Type = "Тип создания" - } - Delete = { - Title = "Удалить конфигурацию" - InUseMessage = "Конфигурация %s используется подписками. Удаление снимет привязку. Удалить? Это действие нельзя отменить." - Message = "Удалить конфигурацию %s? Это действие нельзя отменить." - } - Button = { - Cancel = "Отмена" - Delete = "Удалить" - } - } - - - - - - - Draft = { - BasicRouting = "Базовая маршрутизация" - ServiceRouting = "Сервисная маршрутизация" - } - - - - Save = { - ImportDefaultName = "Импортированное переопределение" - Failed = "Не удалось сохранить переопределение" - } - - - - Label = { - RulesReplace = "Переопределить правила" - } - -} diff --git a/locale/lang/ru/ProfilesPage.fvv b/locale/lang/ru/ProfilesPage.fvv deleted file mode 100644 index 75353fd04..000000000 --- a/locale/lang/ru/ProfilesPage.fvv +++ /dev/null @@ -1,118 +0,0 @@ - -ProfilesPage = { - Title = "Профили" - - Action = { - UpdateAll = "Обновить все" - AddProfile = "Добавить профиль" - } - - Empty = { - NoProfiles = "Нет профилей" - Hint = "Нажмите справа сверху, чтобы добавить профиль" - } - - Sheet = { - AddTitle = "Добавить профиль" - EditTitle = "Изменить профиль" - Complete = "Готово" - } - - Type = { - Title = "Тип профиля" - Subscription = "URL подписки" - LocalFile = "Локальный файл" - QrScan = "Сканировать QR-код" - } - - Input = { - ProfileName = "Имя профиля" - SubscriptionUrl = "URL подписки (HTTP/HTTPS)" - SelectFile = "Нажмите, чтобы выбрать файл" - NewProfile = "Новый профиль" - AgeSecretKey = "Секретный ключ Age (необязательно)" - } - - QrScanner = { - NeedPermission = "Требуется доступ к камере" - NeedCamera = "Для сканирования нужен доступ к камере" - SelectFromAlbum = "Выбрать QR-код из альбома" - RecognizeSuccess = "Распознавание успешно" - RecognizeFailed = "Не удалось распознать QR-код" - RecognizeError = "Ошибка распознавания: %s" - } - - Message = { - UnknownFile = "Неизвестный файл" - } - - Validation = { - EnterUrl = "Введите URL" - SelectFile = "Выберите файл" - YamlOnly = "Поддерживаются только форматы .yaml или .yml" - } - - Progress = { - Downloading = "Загрузка..." - } - - Button = { - Cancel = "Отмена" - Confirm = "Подтвердить" - } - - DeleteDialog = { - Title = "Удалить профиль" - Message = "Удалить «%s»?" - Confirm = "Удалить" - } - - EditDialog = { - Title = "Изменить имя профиля" - } - - LinkSettings = { - Title = "Настройки ссылок" - OpenMode = "Способ открытия" - OpenModeInApp = "В приложении" - OpenModeExternal = "Во внешнем браузере" - DefaultLink = "Ссылка по умолчанию" - DefaultLinkSummary = "Ссылка, открываемая при нажатии ярлыка слева сверху" - AddLink = "Добавить ссылку" - EditLink = "Изменить ссылку" - Name = "Имя" - Url = "URL" - Close = "Закрыть" - Validation = { - EnterName = "Введите имя" - EnterUrl = "Введите URL" - InvalidUrl = "Введите действительный URL" - } - } - - ShareDialog = { - Title = "Поделиться профилем" - ShareFile = "Поделиться файлом конфигурации" - ShareLink = "Поделиться ссылкой подписки" - NoLink = "У этого профиля нет ссылки подписки" - ImportedConfigMissing = "Импортированная конфигурация отсутствует: %s" - } - - - SettingsDialog = { - Title = "Настройки подписки" - ChangeLink = "Изменить ссылку подписки" - CustomRouting = "Своя маршрутизация" - CustomRoutingSummary = "Отдельные правила маршрутизации" - NoDescription = "Описание не задано" - EditProfile = "Изменить профиль" - OpenConfig = "Открыть в редакторе" - EditSettings = "Настройки подписки" - SectionType = "Тип настроек" - SectionSubscription = "Сведения о подписке" - SectionOverride = "Переопределение" - SaveFailed = "Не удалось сохранить профиль" - ConfigMissing = "Конфигурация не найдена: %s" - AgeSecretKey = "Секретный ключ Age" - } -} diff --git a/locale/lang/ru/ProfilesVM.fvv b/locale/lang/ru/ProfilesVM.fvv deleted file mode 100644 index e0412b10d..000000000 --- a/locale/lang/ru/ProfilesVM.fvv +++ /dev/null @@ -1,24 +0,0 @@ - -ProfilesVM = { - Message = { - ProfileAdded = "Профиль добавлен: %s" - AddFailed = "Не удалось добавить профиль: %s" - ProfileDeleted = "Профиль удалён" - DeleteFailed = "Не удалось удалить профиль: %s" - ProfileUpdated = "Профиль обновлён: %s" - UpdateFailed = "Не удалось обновить профиль: %s" - ToggleFailed = "Не удалось переключить состояние: %s" - ProvidersPartial = "Профиль сохранён; %d внешних ресурсов не загрузились: %s" - ProvidersUndiscovered = "Профиль сохранён, но список внешних ресурсов не распознан" - } - - Progress = { - Preparing = "Подготовка загрузки..." - Verifying = "Проверка конфигурации..." - ImportComplete = "Импорт завершён" - } - - Error = { - ProfileNotExist = "Профиль не существует" - } -} \ No newline at end of file diff --git a/locale/lang/ru/Providers.fvv b/locale/lang/ru/Providers.fvv deleted file mode 100644 index 416c33517..000000000 --- a/locale/lang/ru/Providers.fvv +++ /dev/null @@ -1,39 +0,0 @@ - -Providers = { - Title = "Внешние ресурсы" - - Action = { - UpdateAll = "Обновить все" - Update = "Обновить" - Upload = "Загрузить" - Operation = "Действие" - } - - Empty = { - NotRunning = "Прокси не запущен" - NotRunningHint = "Запустите прокси, чтобы просмотреть внешние ресурсы" - NoProviders = "Нет внешних ресурсов" - NoProvidersHint = "В текущем профиле нет внешних ресурсов" - } - - Type = { - ProxyProviders = "Провайдеры прокси (%d)" - RuleProviders = "Провайдеры правил (%d)" - } - - VehicleType = { - Http = "HTTP" - File = "Файл" - Inline = "Встроенный" - Compatible = "Совместимый" - } - - Message = { - FetchFailed = "Не удалось получить ресурсы: %s" - UpdateSuccess = "%s успешно обновлён" - UpdateFailed = "Обновление не удалось: %s" - AllUpdated = "Все обновлены" - UploadSuccess = "%s успешно загружен" - UploadFailed = "Загрузка не удалась: %s" - } -} diff --git a/locale/lang/ru/Proxy.fvv b/locale/lang/ru/Proxy.fvv deleted file mode 100644 index 840efaa4e..000000000 --- a/locale/lang/ru/Proxy.fvv +++ /dev/null @@ -1,56 +0,0 @@ - -Proxy = { - Title = "Узлы" - - Mode = { - Direct = "Напрямую" - } - - Action = { - Panel = "Панель" - Test = "Тест" - Sort = "Сортировка" - LocateCurrent = "Найти текущий узел" - More = "Ещё" - } - - Node = { - Timeout = "Таймаут" - Count = "Узлов: %d" - } - - - Empty = { - NoNodes = "Нет узлов" - Hint = "Загрузите профиль на странице «Профили»" - } - - Testing = { - Group = "Тестирование группы узлов: %s" - All = "Тестирование всех групп узлов..." - RequestSent = "Запрос теста отправлен" - Progress = "Тест %d/%d" - Completed = "Тест завершён" - Failed = "Тест не удался: %s" - InProgress = "Тестирование узла" - } - - Selection = { - Switched = "Переключено на: %s" - Failed = "Не удалось переключить" - Error = "Не удалось переключить: %s" - } - - SortMode = { - Default = "По умолчанию" - ByName = "По имени" - ByLatency = "По задержке" - } - - DisplayMode = { - SingleDetailed = "1 колонка, подробно" - SingleSimple = "1 колонка, кратко" - DoubleDetailed = "2 колонки, подробно" - DoubleSimple = "2 колонки, кратко" - } -} diff --git a/locale/lang/ru/Rules.fvv b/locale/lang/ru/Rules.fvv deleted file mode 100644 index 2471656f3..000000000 --- a/locale/lang/ru/Rules.fvv +++ /dev/null @@ -1,25 +0,0 @@ - -Rules = { - Title = "Правила" - Summary = "Просмотр и временное переключение правил" - SearchHint = "Поиск правил" - - Label = { - Proxy = "Политика" - HitRate = "Попадания %s" - } - - Message = { - ToggleFailed = "Не удалось переключить правило: %s" - } - - Empty = { - Loading = "Загрузка" - LoadingHint = "Получение правил из ядра" - NotRunning = "Прокси не запущен" - NotRunningHint = "Запустите прокси, чтобы просмотреть правила" - NoRules = "Нет правил" - NoRulesHint = "В текущем профиле нет правил" - NoResults = "Нет подходящих правил" - } -} diff --git a/locale/lang/ru/Service.fvv b/locale/lang/ru/Service.fvv deleted file mode 100644 index 9755c5620..000000000 --- a/locale/lang/ru/Service.fvv +++ /dev/null @@ -1,26 +0,0 @@ - -Service = { - Notification = { - Running = "Работает" - UnknownProfile = "Неизвестный профиль" - NoNode = "Не выбран" - CurrentNode = "Текущий узел: %s" - CurrentNodeLabel = "Текущий узел" - RealtimeTraffic = "Трафик в реальном времени" - SpeedLine = "↓ %s ↑ %s" - TotalTraffic = "Всего %s" - LogChannel = "Запись журнала" - LogRecording = "Идёт запись журнала" - LogRecordingPending = "Запись..." - Stop = "Стоп" - } - - Tile = { - ClickToOpen = "Нажмите, чтобы открыть приложение" - ClickToStartProxy = "Запустить прокси" - ClickToStopProxy = "Остановить прокси" - Connecting = "Подключение..." - Disconnecting = "Отключение..." - } - -} diff --git a/locale/lang/ru/Settings.fvv b/locale/lang/ru/Settings.fvv deleted file mode 100644 index a73a20637..000000000 --- a/locale/lang/ru/Settings.fvv +++ /dev/null @@ -1,35 +0,0 @@ - -Settings = { - Title = "Настройки" - - Section = { - UiSettings = "Интерфейс" - More = "Ещё" - } - - UiSettings = { - App = "Приложение" - AppSummary = "Тема, язык и поведение" - Network = "Сеть" - NetworkSummary = "Режим прокси, DNS и контроль доступа" - Override = "Переопределения" - OverrideSummary = "YAML, JS и переопределение правил" - MetaFeatures = "Функции Meta" - MetaFeaturesSummary = "Соединения, журналы, правила и статистика" - } - - More = { - Lab = "Лаборатория" - LabSummary = "Sub-Store и экспериментальные функции" - Logs = "Журналы" - LogsSummary = "Журналы выполнения" - Onboarding = "Мастер настройки" - OnboardingSummary = "Показать приветственный гид снова" - About = "О приложении" - AboutSummary = "Версия и лицензия" - } - - Error = { - WebviewFailed = "Не удалось открыть WebView: %s" - } -} diff --git a/locale/lang/ru/TrafficStatistics.fvv b/locale/lang/ru/TrafficStatistics.fvv deleted file mode 100644 index 5801cb31c..000000000 --- a/locale/lang/ru/TrafficStatistics.fvv +++ /dev/null @@ -1,54 +0,0 @@ - -TrafficStatistics = { - Title = "Статистика" - EntrySummary = "Просмотр использования трафика" - - TimeRange = { - Today = "Сегодня" - Week = "Неделя" - } - - Summary = { - TodayTraffic = "Трафик за сегодня" - WeekTraffic = "Трафик за неделю" - Average = "Среднее" - DayTrafficTip = "Трафик %s" - } - - Donut = { - Other = "Другое" - } - - Action = { - Clear = "Очистить статистику" - ClearSuccess = "Статистика очищена" - } - - Section = { - Traffic = "Трафик" - TopApps = "Топ приложений" - TodayApps = "Приложения за сегодня" - WeekApps = "Приложения за 7 дней" - SystemTraffic = "Системный трафик" - EmptyApps = "Нет статистики по приложениям" - } - - Metric = { - Download = "Загрузка" - Upload = "Отдача" - UsageLine = "↓ %s ↑ %s" - SortByName = "Имя" - SortByUsage = "Использование" - } - - Weekday = { - Mon = "Пн" - Tue = "Вт" - Wed = "Ср" - Thu = "Чт" - Fri = "Пт" - Sat = "Сб" - Sun = "Вс" - Today = "Сегодня" - } -} diff --git a/locale/lang/ru/Util.fvv b/locale/lang/ru/Util.fvv deleted file mode 100644 index ffb764b4a..000000000 --- a/locale/lang/ru/Util.fvv +++ /dev/null @@ -1,6 +0,0 @@ - -Util = { - Error = { - UnknownError = "Неизвестная ошибка" - } -} diff --git a/locale/lang/zh/About.fvv b/locale/lang/zh/About.fvv deleted file mode 100644 index 273cb189e..000000000 --- a/locale/lang/zh/About.fvv +++ /dev/null @@ -1,44 +0,0 @@ - -About = { - Title = "關於" - - App = { - Description = "基於 mihomo 的開源 Android 用戶端" - VersionLoading = "載入中..." - VersionFailed = "載入失敗" - } - - Debug = { - Title = "Debug" - TestInitialization = "測試初始化" - InitializationReset = "初始化狀態已重設" - } - - Section = { - ProjectLinks = "專案連結" - More = "更多" - Support = "支援" - License = "授權" - } - - Link = { - TelegramGroup = "Telegram 群組" - TelegramChannel = "Telegram 頻道" - } - - Support = { - ExportLogs = "匯出日誌" - ReportIssue = "回報問題" - ExportSuccess = "日誌已匯出" - ExportFailed = "日誌匯出失敗" - } - - License = { - Libraries = "引用函式庫" - LibrariesSummary = "檢視本應用使用的所有第三方函式庫" - AgplName = "GNU Affero General Public License v3.0" - AgplDescription = "本程式為自由軟體:你可依 GNU Affero 通用公眾授權條款重新散布與/或修改." - } - - Copyright = "© 2025 – 至今 YumeYucca" -} diff --git a/locale/lang/zh/AccessControl.fvv b/locale/lang/zh/AccessControl.fvv deleted file mode 100644 index ca6f33ca7..000000000 --- a/locale/lang/zh/AccessControl.fvv +++ /dev/null @@ -1,48 +0,0 @@ - -AccessControl = { - Title = "存取控制" - - Search = { - Placeholder = "搜尋應用..." - Empty = "沒有符合的應用" - } - - AppList = { - Title = "應用列表 (%d 已選取)" - Loading = "載入中..." - } - - Settings = { - Title = "存取控制設定" - ShowSystemApps = "顯示系統應用" - SelectedFirst = "已選應用優先" - SortMode = "排序方式" - SortModeCurrent = "目前:%s" - BatchOperation = "批次操作" - SelectAll = "全選" - DeselectAll = "全不選" - Invert = "反選" - ImportExport = "匯入/匯出" - Import = "從剪貼簿匯入" - Export = "匯出到剪貼簿" - ImportSuccess = "匯入成功:%d 個套件名稱" - ExportSuccess = "已複製 %d 個套件名稱到剪貼簿" - ImportFailed = "匯入失敗" - RegionQuickSelect = "地區快速選取" - ChinaApps = "中國應用" - OverseasApps = "非中國應用" - RegionSelectResult = "已依「%s」快速選取,共 %d 個" - } - - SortMode = { - PackageName = "套件名稱" - Label = "應用名稱" - InstallTime = "安裝時間" - UpdateTime = "更新時間" - } - - Button = { - Cancel = "取消" - Confirm = "確定" - } -} diff --git a/locale/lang/zh/AppSettings.fvv b/locale/lang/zh/AppSettings.fvv deleted file mode 100644 index a8cdd039a..000000000 --- a/locale/lang/zh/AppSettings.fvv +++ /dev/null @@ -1,93 +0,0 @@ - -AppSettings = { - Title = "應用設定" - - Section = { - Behavior = "行為" - Interface = "介面" - Privacy = "隱私" - Service = "服務" - Network = "網路" - Navigation = "導航" - Home = "首頁" - } - - Behavior = { - AutoStartTitle = "自動啟動" - AutoUpdateOnStartTitle = "啟動時更新設定檔" - } - - Interface = { - ThemeModeTitle = "主題模式" - ThemeModeSummary = "選擇應用的主題樣式" - ThemeModeSystem = "跟隨系統" - ThemeModeLight = "淺色" - ThemeModeDark = "深色" - LanguageTitle = "應用語言" - LanguageSystem = "跟隨系統" - LanguageChinese = "简体中文" - LanguageChineseTraditional = "繁體中文" - LanguageEnglish = "English" - LanguageJapanese = "日本語" - LanguageRussian = "Русский" - - ColorThemeTitle = "主題配色" - ColorThemePickerTitle = "選擇主題色" - ColorThemeCodeLabel = "主題色代碼(#RRGGBB)" - ColorThemeCustomSummary = "目前主題色:%s" - ThemeColorPolarityInvertTitle = "反轉主題前景色" - TopBarBlurTitle = "背景模糊" - AutoHideNavbarTitle = "滑動隱藏底欄" - - PageScaleTitle = "頁面縮放" - PageScaleDialogSummary = "80% - 120%" - PredictiveBackTitle = "預測返回手勢" - PredictiveBackRestartSummary = "下次啟動應用後生效" - PredictiveBackProgressTitle = "預測返回幅度" - - ClassicHomeTitle = "經典首頁" - SystemWallpaperTitle = "設定為系統桌布" - CustomIconTitle = "自訂應用圖示" - HomeQuoteTitle = "首頁一言" - HomeQuoteDefault = "在安靜的線路上,等一朵雲完成漫遊" - EditHomeQuoteTitle = "編輯一言" - HomeWallpaperImportFailed = "無法將桌布複製到本機,已改用原始來源" - } - - Privacy = { - - HideFromRecentsTitle = "隱藏最近工作卡片" - } - - ServiceSection = { - TrafficNotificationTitle = "顯示流量通知" - ExitUiWhenBackgroundTitle = "背景隱藏時釋放介面" - SuperIslandTitle = "超級島" - ShizukuTitle = "Shizuku 授權" - ShizukuNotRunning = "請先安裝並啟動 Shizuku" - ShizukuPermissionRequired = "點擊此處申請 Shizuku 權限" - ShizukuReady = "Shizuku 已授權,超級島可以正常運作" - ShizukuStatusUnavailable = "未執行" - ShizukuStatusPending = "待授權" - ShizukuStatusGranted = "已授權" - BatteryOptimizationTitle = "電池最佳化無限制" - BatteryOptimizationAlreadyDisabled = "電池最佳化已關閉" - } - - Network = { - CustomUserAgentTitle = "自訂 User-Agent" - CustomUserAgentSummaryDefault = "未設定,使用預設值" - } - - WarningDialog = { - Title = "警告" - } - - EditDialog = { - UserAgentTitle = "編輯 User-Agent" - } - - Button = { - Apply = "套用" - } -} diff --git a/locale/lang/zh/Component.fvv b/locale/lang/zh/Component.fvv deleted file mode 100644 index 63ce127ee..000000000 --- a/locale/lang/zh/Component.fvv +++ /dev/null @@ -1,107 +0,0 @@ - -Component = { - ProfileCard = { - Update = "更新" - Export = "匯出" - Edit = "編輯" - Delete = "刪除" - RemoteSubscription = "遠端訂閱" - LocalFile = "本機檔案" - LocalConfig = "本機設定檔" - ClickToUpdate = "點一下更新以取得訂閱資訊" - Traffic = "流量:%s / %s (%d%%)" - UsedTraffic = "已用:%s" - ExpireAt = "到期:%s (剩餘 %d 天)" - ExpireToday = "到期:今天" - Expired = "已過期:%s" - JustNow = "剛剛" - MinutesAgo = "%d 分鐘前" - HoursAgo = "%d 小時前" - DaysAgo = "%d 天前" - } - - WebView = { - InvalidUrl = "無效的 URL" - } - - Selector = { - NotModify = "不修改" - Enable = "啟用" - Disable = "停用" - Replace = "取代" - Prepend = "前置" - Append = "後置" - Merge = "合併" - } - - Navigation = { - Back = "返回" - } - - Message = { - Confirm = "確定" - Hint = "提示" - Error = "錯誤" - Success = "成功" - } - - Button = { - Cancel = "取消" - Confirm = "確定" - Clear = "清除" - Copy = "複製" - } - - Flag = { - ContentDescription = "%s 旗幟" - } - - Loading = { - Starting = "啟動中..." - } - - - ConfigInput = { - PortLabel = "連接埠 (留空表示不修改)" - CountItems = "%d 項" - } - - BottomBar = { - Home = "首頁" - Proxy = "代理" - Config = "設定檔" - Setting = "設定" - } - - Editor = { - CountItems = "共 %d 項" - Action = { - Search = "搜尋" - } - Dialog = { - AddTitle = "新增項目" - EditTitle = "編輯項目" - ResetTitle = "重設確認" - ResetMessage = "清空所有項目並恢復為不修改狀態?" - } - Empty = { - Title = "暫無項目" - Hint = "點右上角按鈕新增" - } - Error = { - KeyEmpty = "鍵不能為空" - KeyExists = "鍵已存在" - } - Rule = { - Type = "規則類型" - Target = "目標" - Content = "規則內容" - Src = "來源 IP" - NoResolve = "不解析" - TargetReject = "REJECT" - TargetDirect = "DIRECT" - TargetMatch = "MATCH" - ErrorContentRequired = "規則內容不能為空" - } - } -} diff --git a/locale/lang/zh/Connection.fvv b/locale/lang/zh/Connection.fvv deleted file mode 100644 index b53dc8e65..000000000 --- a/locale/lang/zh/Connection.fvv +++ /dev/null @@ -1,64 +0,0 @@ - -Connection = { - Title = "連線" - Summary = "檢視目前作用中連線" - - Tab = { - Active = "作用中" - Closed = "已關閉" - } - - Search = "搜尋" - SearchHint = "搜尋主機、程序..." - - SortBy = "排序:" - Sort = { - Time = "時間" - Upload = "上傳" - Download = "下載" - Host = "主機" - } - - ChainCount = "x%d" - - RelativeTime = { - JustNow = "剛剛" - MinutesAgo = "%d 分鐘前" - HoursAgo = "%d 小時前" - DaysAgo = "%d 天前" - Date = "%02d-%02d" - } - - Detail = { - Title = "連線詳情" - - Action = { - Interrupting = "正在中斷連線..." - Interrupt = "中斷連線" - } - - Section = { - Info = "連線資訊" - Rule = "規則" - Chain = "代理鏈路" - } - - Label = { - Host = "目標主機" - Protocol = "協定" - Process = "程序" - SourceAddress = "來源位址" - DestinationAddress = "目標位址" - Duration = "連線時長" - Upload = "上傳" - Download = "下載" - Type = "類型" - Content = "內容" - Chain = "鏈路" - } - } - - Loading = "載入中..." - Empty = "暫無作用中連線" - NoResults = "沒有符合的連線" -} diff --git a/locale/lang/zh/Editor.fvv b/locale/lang/zh/Editor.fvv deleted file mode 100644 index 292177ba3..000000000 --- a/locale/lang/zh/Editor.fvv +++ /dev/null @@ -1,24 +0,0 @@ -<編輯器> -Editor = { - Title = { - Config = "編輯設定" - Preview = "設定預覽" - Override = "編輯覆寫設定" - Profile = "編輯訂閱設定" - } - Action = { - Format = "格式化" - Save = "儲存" - } - Message = { - FormatSuccess = "格式化成功" - FormatSkipped = "格式化失敗或無需格式化" - SaveFailed = "儲存失敗" - } - Discard = { - Title = "未儲存的修改" - Summary = "目前有未儲存的修改,確定要放棄嗎?" - Confirm = "放棄" - } - JsonSubtitle = "使用 JSON 格式編輯" -} diff --git a/locale/lang/zh/Feature.fvv b/locale/lang/zh/Feature.fvv deleted file mode 100644 index 4a251efe7..000000000 --- a/locale/lang/zh/Feature.fvv +++ /dev/null @@ -1,92 +0,0 @@ - -Feature = { - Title = "功能管理" - - ServiceStatus = { - Section = "服務狀態" - SwitchStartSubStore = "啟動 Sub-Store 服務" - OpenSubStorePanel = "開啟 Sub-Store 面板" - AllowLan = "允許區域網路存取" - AutoCloseModeTitle = "自動關閉時間" - AutoCloseModeAlwaysOn = "常開" - AutoCloseMode5Min = "5 分鐘" - AutoCloseMode10Min = "10 分鐘" - AutoClosed = "Sub-Store 已自動關閉" - } - - Panel = { - Section = "面板選擇" - SelectPanel = "選擇面板" - OpenMode = "面板通訊協定" - OpenPanel = "開啟外部面板" - Unknown = "未知面板" - CreateShortcut = "在桌面建立捷徑" - CreateShortcutSummary = "將目前面板加入桌面,使用網站圖示" - ShortcutTitle = "建立捷徑" - ShortcutName = "名稱" - ShortcutPickIcon = "選擇圖示" - ShortcutResetIcon = "重設" - } - - RemoteController = { - Section = "外部控制" - ModeTitle = "外部控制器模式" - ControlBackend = "控制後端" - AddBackend = "新增後端" - EditBackend = "編輯後端" - Name = "名稱" - Host = "IP / 主機" - Port = "連接埠" - Secret = "密鑰(可留空)" - Protocol = "通訊協定" - PortRangeError = "連接埠範圍必須是 1-65535" - Connected = "連線成功:模式 %s" - ConnectionFailed = "連線失敗:%s" - Delete = "刪除" - } - - SubStore = { - Section = "Sub-Store 資源" - JavetLibraryReady = "執行階段已就緒" - JavetLibraryDownload = "下載並安裝執行階段" - JavetAvailable = "點一下檢查更新" - DownloadHint = "點一下下載並安裝執行階段" - JavetDownloadSuccess = "執行階段安裝完成" - JavetDownloadFailed = "執行階段安裝失敗" - DownloadResources = "下載資源" - DownloadResourcesSummary = "下載資源檔案" - Not32Bit = "Sub-Store 不支援 32 位元裝置" - DownloadSubStoreFirst = "請先下載 Sub-Store 資源" - JavetNotReady = "請先下載並安裝執行階段" - FrontendDownloadSuccess = "Sub-Store 前端下載完成" - FrontendDownloadFailed = "Sub-Store 前端下載失敗" - BackendDownloadSuccess = "Sub-Store 後端下載完成" - BackendDownloadFailed = "Sub-Store 後端下載失敗" - DownloadError = "下載出錯:%s" - } - - BackupRestore = { - Section = "資料備份" - ExportTitle = "匯出備份" - ExportSummary = "匯出設定、訂閱、覆寫與 Sub-Store 資料" - RestoreTitle = "還原備份" - RestoreSummary = "選擇備份檔案並覆蓋目前設定" - Cancel = "取消" - - RestoreDialog = { - Title = "還原備份?" - Message = "還原會停止代理與 Sub-Store,並覆蓋目前設定、訂閱、覆寫與 Sub-Store 資料." - } - - Message = { - ExportSuccess = "備份匯出完成" - RestoreSuccess = "還原完成,建議重新啟動應用以重新整理全部介面" - } - - Error = { - OpenOutputFailed = "無法寫入備份檔案" - OpenInputFailed = "無法讀取備份檔案" - OperationFailed = "操作失敗:%s" - } - } -} diff --git a/locale/lang/zh/Home.fvv b/locale/lang/zh/Home.fvv deleted file mode 100644 index 285783fb1..000000000 --- a/locale/lang/zh/Home.fvv +++ /dev/null @@ -1,80 +0,0 @@ - -Home = { - Title = "YumeBox" - - Message = { - ConfigSwitched = "設定檔已切換" - ConfigSwitchFailed = "設定檔切換失敗:%s" - Preparing = "準備中..." - BuiltinGeoRequired = "請先安裝 Builtin 版本" - StartFailed = "啟動失敗:%s" - RuntimeUnavailable = "核心執行環境不可用,請重試" - StopFailed = "停止失敗:%s" - } - - Control = { - HintAddProfile = "請先新增設定檔" - HintEnableProfile = "請先在「設定檔」頁面啟用一個設定" - } - - NodeInfo = { - Node = "節點" - Delay = "延遲" - Unknown = "未知" - DelayValue = "%dms" - } - - Traffic = { - UpShort = "UP" - DownShort = "DOWN" - Upload = "上傳" - Download = "下載" - NoProfile = "無設定檔" - } - - IpInfo = { - ExitIp = "出口 IP" - } - - Status = { - Connecting = "連線中" - Disconnecting = "斷線中" - Running = "執行中" - Lost = "失聯" - TapToStart = "輕觸啟動" - } - - Settings = { - Title = "首頁設定" - Quote = "一言" - ClassicHome = "使用經典首頁" - ExpandSidebar = "展開側邊欄" - ChangeWallpaper = "更換桌布" - } - - Control = { - HintAddProfile = "請先新增設定檔" - HintEnableProfile = "請先在「設定檔」頁面啟用一個設定" - Start = "啟動" - Stop = "停止" - } - - ProxyMode = { - Vpn = "VPN" - Tun = "TUN" - Ebpf = "eBPF" - } - - PreviewGuide = { - Title = "歡迎使用 YumeBox" - Description = "點亮底部「啟動」,一鍵連線" - Next = "下一個" - Start = "開始使用" - WallpaperTitle = "更換桌布" - WallpaperDescription = "長按桌布,從相簿換圖" - SwipeTitle = "左右滑動" - SwipeDescription = "橫向滑動首頁,切換代理、設定檔和設定頁面" - AddTitle = "設定系統桌布" - AddDescription = "開啟開關並完成權限申請,讓首頁使用目前的系統桌布" - } -} diff --git a/locale/lang/zh/Log.fvv b/locale/lang/zh/Log.fvv deleted file mode 100644 index 1006caa0e..000000000 --- a/locale/lang/zh/Log.fvv +++ /dev/null @@ -1,36 +0,0 @@ - -Log = { - Title = "日誌" - Summary = "即時執行日誌" - SearchHint = "搜尋日誌" - - Level = { - All = "全部" - Debug = "Debug" - Info = "Info" - Warning = "Warning" - Error = "Error" - Filter = "等級篩選" - } - - Action = { - Export = "匯出" - Copied = "已複製日誌" - } - - Empty = { - Connecting = "正在連線日誌" - ConnectingHint = "正在連線核心即時日誌流" - Retrying = "正在重新連線日誌" - RetryingHint = "連線恢復後會自動繼續顯示" - NoLogs = "暫無日誌" - LiveHint = "正在從核心即時取得日誌" - NoMatch = "沒有符合目前等級的日誌" - NoResults = "沒有符合的日誌" - } - - Detail = { - WaitingLog = "暫無日誌" - WillShowWhenGenerated = "有日誌時會顯示在這裡" - } -} diff --git a/locale/lang/zh/MetaFeature.fvv b/locale/lang/zh/MetaFeature.fvv deleted file mode 100644 index 155562220..000000000 --- a/locale/lang/zh/MetaFeature.fvv +++ /dev/null @@ -1,61 +0,0 @@ - -MetaFeature = { - Title = "Meta 功能" - - Section = { - ConnectionAndTraffic = "連線、日誌與規則" - Routing = "分流相關" - } - - GeoX = { - OnlineUpdateTitle = "更新 GeoX" - OnlineUpdateSummary = "下載資料庫檔案" - } - - CustomRouting = { - Title = "自訂分流" - Summary = "獨立的分流規則設定" - EditYaml = "編輯 YAML" - ManualYamlPresetDiscarded = "已捨棄未儲存的預設切換,以保護手寫 YAML 內容" - GroupTypeTitle = "策略組類型" - GroupTypeUrlTest = "UrlTest" - GroupTypeFallback = "Fallback" - UrlTestRegionGroupTitle = "UrlTest 地區組" - FallbackRegionGroupTitle = "Fallback 地區組" - Region = { - HongKong = "香港自動群組" - Taiwan = "台灣自動群組" - Japan = "日本自動群組" - Singapore = "新加坡自動群組" - UnitedStates = "美國自動群組" - Other = "其他地區自動群組" - } - Item = { - Proxy = "代理規則集" - Ads = "廣告攔截" - China = "中國大陸直連" - Global = "境外地理規則" - Match = "最終 MATCH" - } - } - - RuntimeRules = { - Title = "規則" - Summary = "檢視並暫時開關執行中規則" - } - - Download = { - DialogTitle = "線上更新 GeoX" - DownloadComplete = "下載完成:%d/%d" - } - - AgeKey = { - Section = "Age 金鑰" - X25519Title = "X25519" - HybridTitle = "mlkem768-x25519" - SecretKey = "私鑰" - PublicKey = "公鑰" - Generate = "產生" - DerivePublicKey = "推導公鑰" - } -} diff --git a/locale/lang/zh/NetworkSettings.fvv b/locale/lang/zh/NetworkSettings.fvv deleted file mode 100644 index b213179e9..000000000 --- a/locale/lang/zh/NetworkSettings.fvv +++ /dev/null @@ -1,128 +0,0 @@ - -NetworkSettings = { - Title = "網路設定" - - Section = { - VpnOptions = "服務設定" - Advanced = "進階選項" - ProxyOptions = "存取控制" - Kernel = "核心" - } - - Advanced = { - DisableOverrideTitle = "停用所有覆寫" - } - - RunMode = { - SectionTitle = "執行模式" - VpnServiceTitle = "Vpn Service" - VpnServiceSummary = "系統 VPN 全域代理" - TunTitle = "Tun" - TunSummary = "需要 Root 的虛擬網卡" - EbpfTitle = "eBPF" - EbpfSummary = "需要 Root 的 eBPF 轉發代理" - } - - VpnOptions = { - BypassPrivateTitle = "略過私人網路" - DnsHijackTitle = "DNS 劫持" - AllowBypassTitle = "允許應用略過" - EnableIpv6Title = "啟用 IPv6" - SystemProxyTitle = "VPN 內建系統代理" - } - - EbpfOptions = { - BypassCnTitle = "中國大陸 IP 不經核心" - } - - TunOptions = { - Title = "Tun 設定" - IfNameTitle = "虛擬網卡" - MtuTitle = "MTU" - StackTitle = "協定堆疊" - StackSystem = "System" - StackGVisor = "gVisor" - StackMixed = "Mixed" - StackMips = "MIPS" - AutoRouteTitle = "自動路由" - StrictRouteTitle = "嚴格路由" - AutoRedirectTitle = "自動重新導向" - DnsModeTitle = "DNS 模式" - DnsRedirHost = "RedirHost" - DnsFakeIp = "FakeIP" - Ipv6Title = "啟用 IPv6" - } - - - Kernel = { - ActiveTitle = "目前核心" - BundledAlpha = "Builtin" - RefreshTitle = "取得最新核心" - DownloadTitle = "遠端核心" - FetchButton = "取得最新" - DownloadButton = "下載" - CustomTitle = "自訂內核" - CustomMethodTitle = "匯入方式" - CustomUrlMethod = "填寫內核連結" - CustomFileMethod = "上傳插件" - CustomUrlLabel = "插件連結" - CustomChooseFile = "選擇插件檔案" - CustomInstallButton = "安裝並啟用" - } - - ProxyOptions = { - AccessControlModeTitle = "存取控制模式" - AllowAll = "允許全部" - AllowSelected = "允許所選" - RejectSelected = "拒絕所選" - ManageAccessControlTitle = "管理存取控制清單" - } - - WifiAutomation = { - Title = "Wi-Fi 自動化" - EnabledTitle = "Wi-Fi 自動化" - WifiNameHeading = "Wi-Fi 名稱" - NetworkChangeSection = "網路切換" - OtherWifiTitle = "連線其他 Wi-Fi 時" - NoWifiTitle = "未連線 Wi-Fi 時(行動網路 / 乙太網路 / 離線)" - AddCurrent = "新增目前 Wi-Fi" - AddManual = "手動新增 Wi-Fi" - Scan = "掃描 Wi-Fi" - Scanning = "正在掃描 Wi-Fi…" - ScanEmpty = "未掃描到可新增的 Wi-Fi" - ScanUnavailable = "無法掃描 Wi-Fi.請檢查 Wi-Fi、位置權限和系統位置資訊." - ManualDialogTitle = "新增 Wi-Fi" - EditDialogTitle = "編輯 Wi-Fi" - ManualDialogLabel = "Wi-Fi 名稱" - StartAction = "啟動 VPN" - StopAction = "停止 VPN" - KeepAction = "不操作" - ActionTitle = "連線時" - ProfileAction = "切換到設定檔" - NoSwitchAction = "不切換" - EmptyRules = "尚未新增 Wi-Fi 規則" - VpnOnly = "Wi-Fi 自動化僅可用於 VPN 模式" - PermissionTitle = "允許讀取 Wi-Fi 名稱" - PermissionMessage = "Android 將 Wi-Fi 名稱視為位置敏感資訊.YumeBox 只在你啟用自動化或點選掃描 Wi-Fi 時使用精確位置權限,在本機比對規則或顯示掃描結果;不會讀取 GPS 或上傳 Wi-Fi 名稱." - ApproximateTitle = "需要精確位置" - ApproximateMessage = "大致位置仍會隱藏 Wi-Fi 名稱.請允許精確位置後繼續." - DeniedTitle = "需要位置權限" - DeniedMessage = "授予位置權限前,Wi-Fi 自動化會保持關閉." - SettingsTitle = "在設定中啟用位置權限" - SettingsMessage = "系統不再顯示權限請求.請在「應用程式資訊 > 權限 > 位置」中選擇「僅在使用應用程式期間允許」,並啟用精確位置." - LocationTitle = "開啟系統位置資訊" - LocationMessage = "系統位置關閉時,Android 會隱藏 Wi-Fi 名稱.YumeBox 不會讀取 GPS." - Grant = "授予權限" - OpenSettings = "前往設定" - TurnOnLocation = "開啟位置資訊" - Added = "已新增 Wi-Fi 規則" - Duplicate = "該 Wi-Fi 已在規則中" - NoWifi = "未偵測到 Wi-Fi 連線" - Unavailable = "無法讀取 Wi-Fi 名稱.請檢查位置權限和系統位置資訊." - } - - Error = { - VpnDenied = "VPN 權限被拒絕" - RootRequired = "Root 模式需要 YumeBox 已取得可用的 Root 權限" - } -} diff --git a/locale/lang/zh/Onboarding.fvv b/locale/lang/zh/Onboarding.fvv deleted file mode 100644 index 906cf1425..000000000 --- a/locale/lang/zh/Onboarding.fvv +++ /dev/null @@ -1,73 +0,0 @@ - -Onboarding = { - Navigation = { - Back = "返回" - Next = "下一步" - Enter = "進入應用" - Start = "開始體驗" - } - - Welcome = { - Tagline = "輕量 · 現代 · 自由的代理用戶端" - } - - Permission = { - Title = "確認執行權限" - Subtitle = "權限會影響通知與分應用代理等功能" - - Common = { - Granted = "已授權" - } - - Notification = { - Title = "通知權限" - SummaryNeed = "用於顯示連線狀態與流量通知" - SummaryNotRequired = "目前系統無需額外授權" - } - - AppList = { - Title = "應用列表權限" - SummaryNeed = "用於分應用代理等功能" - } - } - - Privacy = { - Title = "確認隱私與協議" - Subtitle = "閱讀並同意協議後方可繼續" - RichTextLead = "在開始使用前需要同意隱私協議,才能繼續使用 YumeBox." - RichTextPrefix = "繼續前請先閱讀並同意 " - RichTextConnector = " 與 " - RichTextSuffix = "." - TermsLink = "《使用條款》" - PolicyLink = "《隱私政策》" - Accept = { - Title = "我已閱讀並同意隱私政策" - } - } - - Personalize = { - Title = "調整介面風格" - Subtitle = "主題模式與主色可隨時在設定中修改" - } - - Finish = { - Title = "準備完成" - Subtitle = "基礎設定已就緒,即將進入主頁" - } - - Project = { - Github = { - Title = "GitHub 倉庫" - Summary = "github.com/yumeyucca/YumeBox" - } - Community = { - Title = "社群頻道" - Summary = "加入頻道或群組繼續回饋" - } - } - - Sheet = { - PrivacyPolicyTitle = "隱私政策" - LoadFailed = "無法載入協議內容" - } -} diff --git a/locale/lang/zh/OpenSourceLicenses.fvv b/locale/lang/zh/OpenSourceLicenses.fvv deleted file mode 100644 index e8e2b579a..000000000 --- a/locale/lang/zh/OpenSourceLicenses.fvv +++ /dev/null @@ -1,8 +0,0 @@ - -OpenSourceLicenses = { - Title = "開源授權" - - LicenseSheet = { - NoContent = "暫無授權內容" - } -} diff --git a/locale/lang/zh/Override.fvv b/locale/lang/zh/Override.fvv deleted file mode 100644 index bd1216631..000000000 --- a/locale/lang/zh/Override.fvv +++ /dev/null @@ -1,116 +0,0 @@ - -Override = { - Title = "覆寫設定" - - Action = { - Create = "建立設定" - New = "新增設定" - NetworkImport = "連結匯入" - } - - BuiltIn = { - PreventDnsLeak = "防止 DNS 洩漏" - AddDirectRules = "新增直連規則" - PuddingDog = "布丁狗的訂閱轉換" - Acl4ssrOnlineFull = "ACL4SSR Online Full" - CopyName = "%s (副本)" - } - - Empty = { - Title = "暫無覆寫設定" - Hint = "點下方按鈕建立新設定,或匯入設定檔" - UserTitle = "暫無匯入覆寫" - UserHint = "可新增或匯入 YAML / JS 覆寫" - } - - Section = { - BuiltIn = "內建" - User = "已匯入" - } - - Status = { - InUse = "使用中" - NotInUse = "未使用" - BuiltIn = "內建" - } - - Card = { - Copy = "複製設定" - Export = "匯出設定" - Edit = "編輯設定" - Delete = "刪除設定" - EditButton = "編輯" - DeleteButton = "刪除" - Apply = "套用設定" - ApplyButton = "套用" - } - - ApplySheet = { - Title = "套用到訂閱" - Empty = "暫無訂閱" - Success = "已更新套用範圍" - Failed = "更新套用範圍失敗:%s" - Button = { - Cancel = "取消" - Confirm = "確定" - } - } - - Import = { - ReadError = "無法讀取匯入檔案" - Failed = "匯入失敗: %s" - FileError = "讀取檔案失敗: %s" - NetworkError = "連結匯入失敗: %s" - InvalidUrl = "請輸入 HTTP 或 HTTPS 連結" - HttpError = "HTTP 請求失敗:%d" - UnsupportedType = "僅支援 YAML 或 JS" - EmptyJavaScript = "JS 檔案為空" - } - - Export = { - Failed = "匯出失敗:%s" - Success = "已匯出設定:%s" - } - - Dialog = { - Create = { - Title = "新增設定" - Name = "設定名稱" - Url = "設定連結" - Type = "建立類型" - } - Delete = { - Title = "刪除設定" - InUseMessage = "設定 %s 正在被訂閱使用,刪除後將解除綁定關係.確定要刪除嗎?此操作無法復原." - Message = "確定要刪除設定 %s 嗎?此操作無法復原." - } - Button = { - Cancel = "取消" - Delete = "刪除" - } - } - - - - - - - Draft = { - BasicRouting = "基礎分流" - ServiceRouting = "服務分流" - } - - - - Save = { - ImportDefaultName = "匯入的覆寫設定" - Failed = "儲存覆寫失敗" - } - - - - Label = { - RulesReplace = "覆蓋規則" - } - -} diff --git a/locale/lang/zh/ProfilesPage.fvv b/locale/lang/zh/ProfilesPage.fvv deleted file mode 100644 index c44662971..000000000 --- a/locale/lang/zh/ProfilesPage.fvv +++ /dev/null @@ -1,118 +0,0 @@ - -ProfilesPage = { - Title = "設定檔" - - Action = { - UpdateAll = "一鍵更新全部" - AddProfile = "新增設定檔" - } - - Empty = { - NoProfiles = "暫無設定檔" - Hint = "點右上角新增設定檔" - } - - Sheet = { - AddTitle = "新增設定檔" - EditTitle = "編輯設定檔" - Complete = "完成" - } - - Type = { - Title = "設定檔類型" - Subscription = "訂閱連結" - LocalFile = "本機檔案" - QrScan = "掃描 QR Code" - } - - Input = { - ProfileName = "設定檔名稱" - SubscriptionUrl = "訂閱連結 (HTTP/HTTPS)" - SelectFile = "點一下選擇檔案" - NewProfile = "新設定檔" - AgeSecretKey = "Age 私鑰(選填)" - } - - QrScanner = { - NeedPermission = "需要相機權限" - NeedCamera = "需要相機權限才能掃描" - SelectFromAlbum = "從相簿選擇 QR Code 圖片" - RecognizeSuccess = "辨識成功" - RecognizeFailed = "未能辨識到 QR Code" - RecognizeError = "辨識失敗:%s" - } - - Message = { - UnknownFile = "未知檔案" - } - - Validation = { - EnterUrl = "請輸入連結" - SelectFile = "請選擇檔案" - YamlOnly = "僅支援 .yaml 或 .yml 格式" - } - - Progress = { - Downloading = "下載中..." - } - - Button = { - Cancel = "取消" - Confirm = "確定" - } - - DeleteDialog = { - Title = "刪除設定檔" - Message = "確定要刪除「%s」嗎?" - Confirm = "刪除" - } - - EditDialog = { - Title = "編輯設定檔名稱" - } - - LinkSettings = { - Title = "連結設定" - OpenMode = "開啟方式" - OpenModeInApp = "應用內開啟" - OpenModeExternal = "外部瀏覽器" - DefaultLink = "預設連結" - DefaultLinkSummary = "點左上角捷徑按鈕時開啟的連結" - AddLink = "新增連結" - EditLink = "編輯連結" - Name = "名稱" - Url = "連結" - Close = "關閉" - Validation = { - EnterName = "請輸入名稱" - EnterUrl = "請輸入連結" - InvalidUrl = "請輸入有效的連結" - } - } - - ShareDialog = { - Title = "分享設定檔" - ShareFile = "分享設定檔" - ShareLink = "分享訂閱連結" - NoLink = "此設定檔沒有訂閱連結" - ImportedConfigMissing = "匯入設定不存在:%s" - } - - - SettingsDialog = { - Title = "訂閱設定" - ChangeLink = "變更訂閱連結" - CustomRouting = "自訂分流" - CustomRoutingSummary = "獨立的分流規則" - NoDescription = "未設定說明" - EditProfile = "編輯設定檔" - OpenConfig = "以編輯器開啟" - EditSettings = "訂閱設定" - SectionType = "設定類型" - SectionSubscription = "訂閱資訊" - SectionOverride = "覆寫設定" - SaveFailed = "儲存設定檔失敗" - ConfigMissing = "設定檔不存在:%s" - AgeSecretKey = "Age 私鑰" - } -} diff --git a/locale/lang/zh/ProfilesVM.fvv b/locale/lang/zh/ProfilesVM.fvv deleted file mode 100644 index 817f12c15..000000000 --- a/locale/lang/zh/ProfilesVM.fvv +++ /dev/null @@ -1,24 +0,0 @@ - -ProfilesVM = { - Message = { - ProfileAdded = "設定檔已新增:%s" - AddFailed = "新增設定檔失敗:%s" - ProfileDeleted = "設定檔已刪除" - DeleteFailed = "刪除設定檔失敗:%s" - ProfileUpdated = "設定檔已更新:%s" - UpdateFailed = "更新設定檔失敗:%s" - ToggleFailed = "切換狀態失敗:%s" - ProvidersPartial = "設定檔已儲存,%d 個外部資源失敗:%s" - ProvidersUndiscovered = "設定檔已儲存,但未能識別外部資源列表" - } - - Progress = { - Preparing = "準備下載..." - Verifying = "正在驗證設定..." - ImportComplete = "匯入完成" - } - - Error = { - ProfileNotExist = "設定檔不存在" - } -} \ No newline at end of file diff --git a/locale/lang/zh/Providers.fvv b/locale/lang/zh/Providers.fvv deleted file mode 100644 index 5b00a9b8f..000000000 --- a/locale/lang/zh/Providers.fvv +++ /dev/null @@ -1,39 +0,0 @@ - -Providers = { - Title = "外部資源" - - Action = { - UpdateAll = "更新全部" - Update = "更新" - Upload = "上傳" - Operation = "操作" - } - - Empty = { - NotRunning = "代理未啟動" - NotRunningHint = "請先啟動代理服務以檢視外部資源" - NoProviders = "暫無外部資源" - NoProvidersHint = "目前設定檔未包含外部資源" - } - - Type = { - ProxyProviders = "代理提供者 (%d)" - RuleProviders = "規則提供者 (%d)" - } - - VehicleType = { - Http = "HTTP" - File = "檔案" - Inline = "內嵌" - Compatible = "相容" - } - - Message = { - FetchFailed = "取得外部資源失敗: %s" - UpdateSuccess = "%s 更新成功" - UpdateFailed = "更新失敗: %s" - AllUpdated = "全部更新完成" - UploadSuccess = "%s 上傳成功" - UploadFailed = "上傳失敗: %s" - } -} diff --git a/locale/lang/zh/Proxy.fvv b/locale/lang/zh/Proxy.fvv deleted file mode 100644 index 4069eefdd..000000000 --- a/locale/lang/zh/Proxy.fvv +++ /dev/null @@ -1,56 +0,0 @@ - -Proxy = { - Title = "節點" - - Mode = { - Direct = "直連" - } - - Action = { - Panel = "面板" - Test = "測試" - Sort = "排序" - LocateCurrent = "定位目前節點" - More = "更多" - } - - Node = { - Timeout = "逾時" - Count = "%d 節點" - } - - - Empty = { - NoNodes = "暫無節點" - Hint = "請在設定檔頁面載入設定檔" - } - - Testing = { - Group = "正在測試節點組:%s" - All = "正在測試所有節點組..." - RequestSent = "測試請求已送出" - Progress = "正在測試 %d/%d" - Completed = "測試完成" - Failed = "測試失敗:%s" - InProgress = "正在測試節點" - } - - Selection = { - Switched = "已切換到:%s" - Failed = "切換失敗" - Error = "切換失敗:%s" - } - - SortMode = { - Default = "預設順序" - ByName = "依名稱排序" - ByLatency = "依延遲排序" - } - - DisplayMode = { - SingleDetailed = "單欄詳細" - SingleSimple = "單欄簡潔" - DoubleDetailed = "雙欄詳細" - DoubleSimple = "雙欄簡潔" - } -} diff --git a/locale/lang/zh/Rules.fvv b/locale/lang/zh/Rules.fvv deleted file mode 100644 index a5e32ff91..000000000 --- a/locale/lang/zh/Rules.fvv +++ /dev/null @@ -1,25 +0,0 @@ - -Rules = { - Title = "規則" - Summary = "檢視並暫時開關執行中規則" - SearchHint = "搜尋規則" - - Label = { - Proxy = "策略" - HitRate = "命中率 %s" - } - - Message = { - ToggleFailed = "切換規則失敗:%s" - } - - Empty = { - Loading = "載入中" - LoadingHint = "正在從核心拉取規則" - NotRunning = "代理未啟動" - NotRunningHint = "請先啟動代理服務以檢視規則" - NoRules = "暫無規則" - NoRulesHint = "目前設定檔未包含規則" - NoResults = "沒有符合的規則" - } -} diff --git a/locale/lang/zh/Service.fvv b/locale/lang/zh/Service.fvv deleted file mode 100644 index 8c36af587..000000000 --- a/locale/lang/zh/Service.fvv +++ /dev/null @@ -1,26 +0,0 @@ - -Service = { - Notification = { - Running = "執行中" - UnknownProfile = "未知設定檔" - NoNode = "未選擇" - CurrentNode = "當前節點:%s" - CurrentNodeLabel = "當前節點" - RealtimeTraffic = "即時流量" - SpeedLine = "下行 %s 上行 %s" - TotalTraffic = "總流量 %s" - LogChannel = "日誌記錄" - LogRecording = "正在記錄日誌" - LogRecordingPending = "日誌記錄中..." - Stop = "停止" - } - - Tile = { - ClickToOpen = "點一下開啟應用" - ClickToStartProxy = "啟動代理" - ClickToStopProxy = "停止代理" - Connecting = "連線中..." - Disconnecting = "斷線中..." - } - -} diff --git a/locale/lang/zh/Settings.fvv b/locale/lang/zh/Settings.fvv deleted file mode 100644 index 8a9657d63..000000000 --- a/locale/lang/zh/Settings.fvv +++ /dev/null @@ -1,35 +0,0 @@ - -Settings = { - Title = "設定" - - Section = { - UiSettings = "介面設定" - More = "更多" - } - - UiSettings = { - App = "應用" - AppSummary = "主題、語言與行為" - Network = "網路" - NetworkSummary = "代理模式、DNS 與存取控制" - Override = "覆寫" - OverrideSummary = "YAML、JS 與規則覆寫" - MetaFeatures = "Meta 功能" - MetaFeaturesSummary = "連線、日誌、規則與統計" - } - - More = { - Lab = "實驗室" - LabSummary = "Sub-Store 與實驗功能" - Logs = "日誌" - LogsSummary = "執行日誌" - Onboarding = "新手引導" - OnboardingSummary = "重新查看歡迎引導" - About = "關於" - AboutSummary = "版本與授權" - } - - Error = { - WebviewFailed = "無法開啟 WebView:%s" - } -} diff --git a/locale/lang/zh/TrafficStatistics.fvv b/locale/lang/zh/TrafficStatistics.fvv deleted file mode 100644 index d3e1a399c..000000000 --- a/locale/lang/zh/TrafficStatistics.fvv +++ /dev/null @@ -1,54 +0,0 @@ - -TrafficStatistics = { - Title = "統計" - EntrySummary = "檢視流量使用情況" - - TimeRange = { - Today = "今日" - Week = "本週" - } - - Summary = { - TodayTraffic = "今日流量" - WeekTraffic = "本週流量" - Average = "平均" - DayTrafficTip = "%s流量" - } - - Donut = { - Other = "其他" - } - - Action = { - Clear = "清空統計" - ClearSuccess = "統計資料已清空" - } - - Section = { - Traffic = "流量" - TopApps = "高流量應用" - TodayApps = "今日應用流量" - WeekApps = "近 7 天應用流量" - SystemTraffic = "系統流量" - EmptyApps = "暫無應用流量統計" - } - - Metric = { - Download = "下行" - Upload = "上行" - UsageLine = "下行 %s 上行 %s" - SortByName = "名稱" - SortByUsage = "流量" - } - - Weekday = { - Mon = "週一" - Tue = "週二" - Wed = "週三" - Thu = "週四" - Fri = "週五" - Sat = "週六" - Sun = "週日" - Today = "今日" - } -} diff --git a/locale/lang/zh/Util.fvv b/locale/lang/zh/Util.fvv deleted file mode 100644 index 3526b3b6e..000000000 --- a/locale/lang/zh/Util.fvv +++ /dev/null @@ -1,6 +0,0 @@ - -Util = { - Error = { - UnknownError = "未知錯誤" - } -} diff --git a/locale/lang/zh_Hans/About.fvv b/locale/lang/zh_Hans/About.fvv deleted file mode 100644 index e18e71f92..000000000 --- a/locale/lang/zh_Hans/About.fvv +++ /dev/null @@ -1,44 +0,0 @@ - -About = { - Title = "关于" - - App = { - Description = "基于 mihomo 的开源 Android 客户端" - VersionLoading = "加载中..." - VersionFailed = "加载失败" - } - - Debug = { - Title = "Debug" - TestInitialization = "测试初始化" - InitializationReset = "初始化状态已重置" - } - - Section = { - ProjectLinks = "项目链接" - More = "更多" - Support = "支持" - License = "许可证" - } - - Link = { - TelegramGroup = "Telegram 群组" - TelegramChannel = "Telegram 频道" - } - - Support = { - ExportLogs = "导出日志" - ReportIssue = "报告问题" - ExportSuccess = "日志已导出" - ExportFailed = "日志导出失败" - } - - License = { - Libraries = "引用库" - LibrariesSummary = "查看本应用使用的所有第三方库" - AgplName = "GNU Affero General Public License v3.0" - AgplDescription = "本程序是自由软件:你可以根据 GNU Affero 通用公共许可证的条款重新分发和修改." - } - - Copyright = "© 2025 – 至今 YumeYucca" -} diff --git a/locale/lang/zh_Hans/AccessControl.fvv b/locale/lang/zh_Hans/AccessControl.fvv deleted file mode 100644 index 8b4a825a1..000000000 --- a/locale/lang/zh_Hans/AccessControl.fvv +++ /dev/null @@ -1,48 +0,0 @@ - -AccessControl = { - Title = "访问控制" - - Search = { - Placeholder = "搜索应用..." - Empty = "没有匹配的应用" - } - - AppList = { - Title = "应用列表 (%d 已选择)" - Loading = "加载中..." - } - - Settings = { - Title = "访问控制设置" - ShowSystemApps = "显示系统应用" - SelectedFirst = "已选应用优先" - SortMode = "排序方式" - SortModeCurrent = "当前:%s" - BatchOperation = "批量操作" - SelectAll = "全选" - DeselectAll = "全不选" - Invert = "反选" - ImportExport = "导入/导出" - Import = "从剪贴板导入" - Export = "导出到剪贴板" - ImportSuccess = "导入成功:%d 个包名" - ExportSuccess = "已复制 %d 个包名到剪贴板" - ImportFailed = "导入失败" - RegionQuickSelect = "地区快捷选择" - ChinaApps = "中国应用" - OverseasApps = "非中国应用" - RegionSelectResult = "已按「%s」快捷选择,共 %d 个" - } - - SortMode = { - PackageName = "包名" - Label = "应用名称" - InstallTime = "安装时间" - UpdateTime = "更新时间" - } - - Button = { - Cancel = "取消" - Confirm = "确定" - } -} diff --git a/locale/lang/zh_Hans/AppSettings.fvv b/locale/lang/zh_Hans/AppSettings.fvv deleted file mode 100644 index 3b125be34..000000000 --- a/locale/lang/zh_Hans/AppSettings.fvv +++ /dev/null @@ -1,93 +0,0 @@ - -AppSettings = { - Title = "应用设置" - - Section = { - Behavior = "行为" - Interface = "界面" - Privacy = "隐私" - Service = "服务" - Network = "网络" - Navigation = "导航" - Home = "首页" - } - - Behavior = { - AutoStartTitle = "自动启动" - AutoUpdateOnStartTitle = "启动更新配置" - } - - Interface = { - ThemeModeTitle = "主题模式" - ThemeModeSummary = "选择应用的主题样式" - ThemeModeSystem = "跟随系统" - ThemeModeLight = "浅色" - ThemeModeDark = "深色" - LanguageTitle = "应用语言" - LanguageSystem = "跟随系统" - LanguageChinese = "简体中文" - LanguageChineseTraditional = "繁體中文" - LanguageEnglish = "English" - LanguageJapanese = "日本語" - LanguageRussian = "Русский" - - ColorThemeTitle = "主题配色" - ColorThemePickerTitle = "选择主题色" - ColorThemeCodeLabel = "主题色代码(#RRGGBB)" - ColorThemeCustomSummary = "当前主题色:%s" - ThemeColorPolarityInvertTitle = "反转主题前景色" - TopBarBlurTitle = "背景模糊" - AutoHideNavbarTitle = "滑动隐藏底栏" - - PageScaleTitle = "页面缩放" - PageScaleDialogSummary = "80% - 120%" - PredictiveBackTitle = "预测返回手势" - PredictiveBackRestartSummary = "下次启动应用后生效" - PredictiveBackProgressTitle = "预测返回幅度" - - ClassicHomeTitle = "经典首页" - SystemWallpaperTitle = "设置为系统壁纸" - CustomIconTitle = "自定义应用图标" - HomeQuoteTitle = "首页一言" - HomeQuoteDefault = "在安静的线路上,等一朵云完成漫游" - EditHomeQuoteTitle = "编辑一言" - HomeWallpaperImportFailed = "无法将壁纸复制到本地,已改用原始来源" - } - - Privacy = { - - HideFromRecentsTitle = "隐藏后台卡片" - } - - ServiceSection = { - TrafficNotificationTitle = "显示流量通知" - ExitUiWhenBackgroundTitle = "后台隐藏时释放界面" - SuperIslandTitle = "超级岛" - ShizukuTitle = "Shizuku 授权" - ShizukuNotRunning = "请先安装并启动 Shizuku" - ShizukuPermissionRequired = "点击此处申请 Shizuku 权限" - ShizukuReady = "Shizuku 已授权,超级岛可正常工作" - ShizukuStatusUnavailable = "未运行" - ShizukuStatusPending = "待授权" - ShizukuStatusGranted = "已授权" - BatteryOptimizationTitle = "电池优化无限制" - BatteryOptimizationAlreadyDisabled = "电池优化已关闭" - } - - Network = { - CustomUserAgentTitle = "自定义 User-Agent" - CustomUserAgentSummaryDefault = "未设置,使用默认值" - } - - WarningDialog = { - Title = "警告" - } - - EditDialog = { - UserAgentTitle = "编辑 User-Agent" - } - - Button = { - Apply = "应用" - } -} diff --git a/locale/lang/zh_Hans/Component.fvv b/locale/lang/zh_Hans/Component.fvv deleted file mode 100644 index af24666a1..000000000 --- a/locale/lang/zh_Hans/Component.fvv +++ /dev/null @@ -1,107 +0,0 @@ - -Component = { - ProfileCard = { - Update = "更新" - Export = "导出" - Edit = "编辑" - Delete = "删除" - RemoteSubscription = "远程订阅" - LocalFile = "本地文件" - LocalConfig = "本地配置文件" - ClickToUpdate = "点击更新获取订阅信息" - Traffic = "流量:%s / %s (%d%%)" - UsedTraffic = "已用:%s" - ExpireAt = "到期:%s (剩余%d 天)" - ExpireToday = "到期:今天" - Expired = "已过期:%s" - JustNow = "刚刚" - MinutesAgo = "%d 分钟前" - HoursAgo = "%d 小时前" - DaysAgo = "%d 天前" - } - - WebView = { - InvalidUrl = "无效的 URL" - } - - Selector = { - NotModify = "不修改" - Enable = "启用" - Disable = "禁用" - Replace = "替换" - Prepend = "前置" - Append = "后置" - Merge = "合并" - } - - Navigation = { - Back = "返回" - } - - Message = { - Confirm = "确定" - Hint = "提示" - Error = "错误" - Success = "成功" - } - - Button = { - Cancel = "取消" - Confirm = "确定" - Clear = "清除" - Copy = "复制" - } - - Flag = { - ContentDescription = "%s 旗帜" - } - - Loading = { - Starting = "启动中..." - } - - - ConfigInput = { - PortLabel = "端口号 (留空表示不修改)" - CountItems = "%d 项" - } - - BottomBar = { - Home = "首页" - Proxy = "代理" - Config = "配置" - Setting = "设置" - } - - Editor = { - CountItems = "共 %d 项" - Action = { - Search = "搜索" - } - Dialog = { - AddTitle = "添加条目" - EditTitle = "编辑条目" - ResetTitle = "重置确认" - ResetMessage = "清空所有条目并恢复为不修改状态?" - } - Empty = { - Title = "暂无条目" - Hint = "点击右上角按钮添加" - } - Error = { - KeyEmpty = "键不能为空" - KeyExists = "键已存在" - } - Rule = { - Type = "规则类型" - Target = "目标" - Content = "规则内容" - Src = "源 IP" - NoResolve = "不解析" - TargetReject = "REJECT" - TargetDirect = "DIRECT" - TargetMatch = "MATCH" - ErrorContentRequired = "规则内容不能为空" - } - } -} diff --git a/locale/lang/zh_Hans/Connection.fvv b/locale/lang/zh_Hans/Connection.fvv deleted file mode 100644 index 4f3f175ab..000000000 --- a/locale/lang/zh_Hans/Connection.fvv +++ /dev/null @@ -1,64 +0,0 @@ - -Connection = { - Title = "连接" - Summary = "查看当前活动连接" - - Tab = { - Active = "活动中" - Closed = "已关闭" - } - - Search = "搜索" - SearchHint = "搜索主机、进程..." - - SortBy = "排序:" - Sort = { - Time = "时间" - Upload = "上传" - Download = "下载" - Host = "主机" - } - - ChainCount = "x%d" - - RelativeTime = { - JustNow = "刚刚" - MinutesAgo = "%d 分钟前" - HoursAgo = "%d 小时前" - DaysAgo = "%d 天前" - Date = "%02d-%02d" - } - - Detail = { - Title = "连接详情" - - Action = { - Interrupting = "正在打断连接..." - Interrupt = "打断连接" - } - - Section = { - Info = "连接信息" - Rule = "规则" - Chain = "代理链路" - } - - Label = { - Host = "目标主机" - Protocol = "协议" - Process = "进程" - SourceAddress = "源地址" - DestinationAddress = "目标地址" - Duration = "连接时长" - Upload = "上传" - Download = "下载" - Type = "类型" - Content = "内容" - Chain = "链路" - } - } - - Loading = "加载中..." - Empty = "暂无活动连接" - NoResults = "没有匹配的连接" -} diff --git a/locale/lang/zh_Hans/Editor.fvv b/locale/lang/zh_Hans/Editor.fvv deleted file mode 100644 index 611e1710c..000000000 --- a/locale/lang/zh_Hans/Editor.fvv +++ /dev/null @@ -1,24 +0,0 @@ -<编辑器> -Editor = { - Title = { - Config = "编辑配置" - Preview = "配置预览" - Override = "编辑覆写配置" - Profile = "编辑订阅配置" - } - Action = { - Format = "格式化" - Save = "保存" - } - Message = { - FormatSuccess = "格式化成功" - FormatSkipped = "格式化失败或无需格式化" - SaveFailed = "保存失败" - } - Discard = { - Title = "未保存的修改" - Summary = "当前有未保存的修改,确定要放弃吗?" - Confirm = "放弃" - } - JsonSubtitle = "使用 JSON 格式编辑" -} diff --git a/locale/lang/zh_Hans/Feature.fvv b/locale/lang/zh_Hans/Feature.fvv deleted file mode 100644 index bbb53ad0d..000000000 --- a/locale/lang/zh_Hans/Feature.fvv +++ /dev/null @@ -1,92 +0,0 @@ - -Feature = { - Title = "功能管理" - - ServiceStatus = { - Section = "服务状态" - SwitchStartSubStore = "启动 Sub-Store 服务" - OpenSubStorePanel = "打开 Sub-Store 面板" - AllowLan = "允许局域网访问" - AutoCloseModeTitle = "自动关闭时间" - AutoCloseModeAlwaysOn = "常开" - AutoCloseMode5Min = "5 分钟" - AutoCloseMode10Min = "10 分钟" - AutoClosed = "Sub-Store 已自动关闭" - } - - Panel = { - Section = "面板选择" - SelectPanel = "选择面板" - OpenMode = "面板协议" - OpenPanel = "打开外部面板" - Unknown = "未知面板" - CreateShortcut = "在桌面创建快捷方式" - CreateShortcutSummary = "将当前面板添加到桌面,使用网站图标,点击直接打开" - ShortcutTitle = "创建快捷方式" - ShortcutName = "名称" - ShortcutPickIcon = "选择图标" - ShortcutResetIcon = "恢复默认" - } - - RemoteController = { - Section = "外部控制" - ModeTitle = "外部控制器模式" - ControlBackend = "控制后端" - AddBackend = "添加后端" - EditBackend = "编辑后端" - Name = "名称" - Host = "IP / Host" - Port = "端口" - Secret = "密钥(可留空)" - Protocol = "协议" - PortRangeError = "端口范围必须是 1-65535" - Connected = "连接成功:模式 %s" - ConnectionFailed = "连接失败:%s" - Delete = "删除" - } - - SubStore = { - Section = "Sub-Store 资源" - JavetLibraryReady = "运行库已就绪" - JavetLibraryDownload = "下载安装运行库" - JavetAvailable = "点击检查更新" - DownloadHint = "点击下载安装运行库" - JavetDownloadSuccess = "运行库安装完成" - JavetDownloadFailed = "运行库安装失败" - DownloadResources = "下载资源" - DownloadResourcesSummary = "下载资源文件" - Not32Bit = "Sub-Store 不支持 32 位设备" - DownloadSubStoreFirst = "请先下载 Sub-Store 资源" - JavetNotReady = "请先下载安装运行库" - FrontendDownloadSuccess = "Sub-Store 前端下载完成" - FrontendDownloadFailed = "Sub-Store 前端下载失败" - BackendDownloadSuccess = "Sub-Store 后端下载完成" - BackendDownloadFailed = "Sub-Store 后端下载失败" - DownloadError = "下载出错:%s" - } - - BackupRestore = { - Section = "数据备份" - ExportTitle = "导出备份" - ExportSummary = "导出设置、订阅、覆写和 Sub-Store 数据" - RestoreTitle = "恢复备份" - RestoreSummary = "选择备份文件并覆盖当前配置" - Cancel = "取消" - - RestoreDialog = { - Title = "恢复备份?" - Message = "恢复会停止代理和 Sub-Store,并覆盖当前设置、订阅、覆写和 Sub-Store 数据." - } - - Message = { - ExportSuccess = "备份导出完成" - RestoreSuccess = "恢复完成,建议重启应用以刷新全部界面" - } - - Error = { - OpenOutputFailed = "无法写入备份文件" - OpenInputFailed = "无法读取备份文件" - OperationFailed = "操作失败:%s" - } - } -} diff --git a/locale/lang/zh_Hans/Home.fvv b/locale/lang/zh_Hans/Home.fvv deleted file mode 100644 index 437f8cecc..000000000 --- a/locale/lang/zh_Hans/Home.fvv +++ /dev/null @@ -1,80 +0,0 @@ - -Home = { - Title = "YumeBox" - - Message = { - ConfigSwitched = "配置已切换" - ConfigSwitchFailed = "配置切换失败:%s" - Preparing = "正在准备..." - BuiltinGeoRequired = "请先安装 Builtin 版本" - StartFailed = "启动失败:%s" - RuntimeUnavailable = "内核运行时不可用,请重试" - StopFailed = "停止失败:%s" - } - - Control = { - HintAddProfile = "请先添加配置文件" - HintEnableProfile = "请先在「配置」页面启用一个配置" - } - - NodeInfo = { - Node = "节点" - Delay = "延迟" - Unknown = "未知" - DelayValue = "%dms" - } - - Traffic = { - UpShort = "UP" - DownShort = "DOWN" - Upload = "上传" - Download = "下载" - NoProfile = "无配置" - } - - IpInfo = { - ExitIp = "出口 IP" - } - - Status = { - Connecting = "连接中" - Disconnecting = "断开中" - Running = "运行中" - Lost = "失联" - TapToStart = "轻触启动" - } - - Settings = { - Title = "首页设置" - Quote = "一言" - ClassicHome = "回退经典首页" - ExpandSidebar = "展开侧边栏" - ChangeWallpaper = "更换壁纸" - } - - Control = { - HintAddProfile = "请先添加配置文件" - HintEnableProfile = "请先在「配置」页面启用一个配置" - Start = "启动" - Stop = "停止" - } - - ProxyMode = { - Vpn = "VPN" - Tun = "TUN" - Ebpf = "eBPF" - } - - PreviewGuide = { - Title = "欢迎使用 YumeBox" - Description = "点亮底部「启动」,一键连接" - Next = "下一个" - Start = "开始使用" - WallpaperTitle = "更换壁纸" - WallpaperDescription = "长按壁纸,从相册换图" - SwipeTitle = "左右滑动" - SwipeDescription = "横向滑动首页,切换代理、配置和设置页面" - AddTitle = "设置系统壁纸" - AddDescription = "开启开关并完成权限申请,让首页使用当前系统壁纸" - } -} diff --git a/locale/lang/zh_Hans/Log.fvv b/locale/lang/zh_Hans/Log.fvv deleted file mode 100644 index d3fa4df1b..000000000 --- a/locale/lang/zh_Hans/Log.fvv +++ /dev/null @@ -1,36 +0,0 @@ - -Log = { - Title = "日志" - Summary = "实时运行日志" - SearchHint = "搜索日志" - - Level = { - All = "全部" - Debug = "Debug" - Info = "Info" - Warning = "Warning" - Error = "Error" - Filter = "等级筛选" - } - - Action = { - Export = "导出" - Copied = "已复制日志" - } - - Empty = { - Connecting = "正在连接日志" - ConnectingHint = "正在连接内核实时日志流" - Retrying = "正在重连日志" - RetryingHint = "连接恢复后将自动继续显示" - NoLogs = "暂无日志" - LiveHint = "正在从内核实时获取日志" - NoMatch = "没有符合当前等级的日志" - NoResults = "没有匹配的日志" - } - - Detail = { - WaitingLog = "暂无日志" - WillShowWhenGenerated = "有日志时会显示在这里" - } -} diff --git a/locale/lang/zh_Hans/MetaFeature.fvv b/locale/lang/zh_Hans/MetaFeature.fvv deleted file mode 100644 index a8a74bb35..000000000 --- a/locale/lang/zh_Hans/MetaFeature.fvv +++ /dev/null @@ -1,61 +0,0 @@ - -MetaFeature = { - Title = "Meta 功能" - - Section = { - ConnectionAndTraffic = "连接、日志与规则" - Routing = "分流相关" - } - - GeoX = { - OnlineUpdateTitle = "更新 GeoX" - OnlineUpdateSummary = "下载数据库文件" - } - - CustomRouting = { - Title = "自定义分流" - Summary = "独立的分流规则配置" - EditYaml = "编辑 YAML" - ManualYamlPresetDiscarded = "已丢弃未保存的预设开关,以保护手写 YAML 内容" - GroupTypeTitle = "策略组类型" - GroupTypeUrlTest = "UrlTest" - GroupTypeFallback = "Fallback" - UrlTestRegionGroupTitle = "UrlTest 地区组" - FallbackRegionGroupTitle = "Fallback 地区组" - Region = { - HongKong = "香港自动组" - Taiwan = "台湾自动组" - Japan = "日本自动组" - Singapore = "新加坡自动组" - UnitedStates = "美国自动组" - Other = "冷门地区自动组" - } - Item = { - Proxy = "代理规则集" - Ads = "广告拦截" - China = "中国大陆直连" - Global = "境外地理规则" - Match = "兜底 MATCH" - } - } - - RuntimeRules = { - Title = "规则" - Summary = "查看并临时开关运行时规则" - } - - Download = { - DialogTitle = "更新 GeoX" - DownloadComplete = "下载完成:%d/%d" - } - - AgeKey = { - Section = "Age 密钥" - X25519Title = "X25519" - HybridTitle = "mlkem768-x25519" - SecretKey = "私钥" - PublicKey = "公钥" - Generate = "生成" - DerivePublicKey = "推导公钥" - } -} diff --git a/locale/lang/zh_Hans/NetworkSettings.fvv b/locale/lang/zh_Hans/NetworkSettings.fvv deleted file mode 100644 index d34be06c0..000000000 --- a/locale/lang/zh_Hans/NetworkSettings.fvv +++ /dev/null @@ -1,128 +0,0 @@ - -NetworkSettings = { - Title = "网络设置" - - Section = { - VpnOptions = "服务配置" - Advanced = "高级选项" - ProxyOptions = "访问控制" - Kernel = "内核" - } - - Advanced = { - DisableOverrideTitle = "禁用所有覆写" - } - - RunMode = { - SectionTitle = "运行模式" - VpnServiceTitle = "Vpn Service" - VpnServiceSummary = "系统 VPN 全局代理" - TunTitle = "Tun" - TunSummary = "需要 Root 的虚拟网卡" - EbpfTitle = "eBPF" - EbpfSummary = "需要 Root 的 eBPF 转发代理" - } - - VpnOptions = { - BypassPrivateTitle = "绕过私有网络" - DnsHijackTitle = "DNS 劫持" - AllowBypassTitle = "允许应用绕过" - EnableIpv6Title = "运行 IPv6" - SystemProxyTitle = "VPN 系统代理" - } - - EbpfOptions = { - BypassCnTitle = "国内 IP 不过核心" - } - - TunOptions = { - Title = "Tun 配置" - IfNameTitle = "虚拟网卡" - MtuTitle = "MTU" - StackTitle = "协议栈" - StackSystem = "System" - StackGVisor = "gVisor" - StackMixed = "Mixed" - StackMips = "MIPS" - AutoRouteTitle = "自动路由" - StrictRouteTitle = "严格路由" - AutoRedirectTitle = "自动重定向" - DnsModeTitle = "DNS 模式" - DnsRedirHost = "RedirHost" - DnsFakeIp = "FakeIP" - Ipv6Title = "启用 IPv6" - } - - - Kernel = { - ActiveTitle = "当前内核" - BundledAlpha = "Builtin" - RefreshTitle = "获取最新内核" - DownloadTitle = "远程内核" - FetchButton = "获取最新" - DownloadButton = "下载" - CustomTitle = "自定义内核" - CustomMethodTitle = "导入方式" - CustomUrlMethod = "填写内核链接" - CustomFileMethod = "上传插件" - CustomUrlLabel = "插件链接" - CustomChooseFile = "选择插件文件" - CustomInstallButton = "安装并启用" - } - - ProxyOptions = { - AccessControlModeTitle = "访问控制模式" - AllowAll = "允许所有" - AllowSelected = "允许选择" - RejectSelected = "拒绝选择" - ManageAccessControlTitle = "管理访问控制列表" - } - - WifiAutomation = { - Title = "Wi-Fi 自动化" - EnabledTitle = "Wi-Fi 自动化" - WifiNameHeading = "Wi-Fi 名称" - NetworkChangeSection = "网络切换" - OtherWifiTitle = "连接其他 Wi-Fi 时" - NoWifiTitle = "未连接 Wi-Fi 时(蜂窝 / 以太网 / 离线)" - AddCurrent = "添加当前 Wi-Fi" - AddManual = "手动添加 Wi-Fi" - Scan = "扫描 Wi-Fi" - Scanning = "正在扫描 Wi-Fi…" - ScanEmpty = "未扫描到可添加的 Wi-Fi" - ScanUnavailable = "无法扫描 Wi-Fi.请检查 Wi-Fi、位置权限和系统位置信息." - ManualDialogTitle = "添加 Wi-Fi" - EditDialogTitle = "编辑 Wi-Fi" - ManualDialogLabel = "Wi-Fi 名称" - StartAction = "启动 VPN" - StopAction = "停止 VPN" - KeepAction = "不操作" - ActionTitle = "连接时" - ProfileAction = "切换到配置" - NoSwitchAction = "不切换" - EmptyRules = "尚未添加 Wi-Fi 规则" - VpnOnly = "Wi-Fi 自动化仅在 VPN 模式下可用" - PermissionTitle = "允许读取 Wi-Fi 名称" - PermissionMessage = "Android 将 Wi-Fi 名称视为位置敏感信息.YumeBox 只在你开启自动化或点击扫描 Wi-Fi 时使用精确位置权限,在本机匹配规则或显示扫描结果;不会读取 GPS 或上传 Wi-Fi 名称." - ApproximateTitle = "需要精确位置" - ApproximateMessage = "大致位置仍会隐藏 Wi-Fi 名称.请允许精确位置后继续." - DeniedTitle = "需要位置权限" - DeniedMessage = "授予位置权限前,Wi-Fi 自动化会保持关闭." - SettingsTitle = "在设置中启用位置权限" - SettingsMessage = "系统不再显示权限请求.请在“应用信息 > 权限 > 位置”中选择“仅在使用应用期间允许”,并启用精确位置." - LocationTitle = "开启系统位置信息" - LocationMessage = "系统位置关闭时,Android 会隐藏 Wi-Fi 名称.YumeBox 不会读取 GPS." - Grant = "授予权限" - OpenSettings = "前往设置" - TurnOnLocation = "开启位置信息" - Added = "已添加 Wi-Fi 规则" - Duplicate = "该 Wi-Fi 已在规则中" - NoWifi = "未检测到 Wi-Fi 连接" - Unavailable = "无法读取 Wi-Fi 名称.请检查位置权限和系统位置信息." - } - - Error = { - VpnDenied = "VPN 权限被拒绝" - RootRequired = "Root 模式需要 YumeBox 已获取可用的 Root 权限" - } -} diff --git a/locale/lang/zh_Hans/Onboarding.fvv b/locale/lang/zh_Hans/Onboarding.fvv deleted file mode 100644 index 092831aa2..000000000 --- a/locale/lang/zh_Hans/Onboarding.fvv +++ /dev/null @@ -1,73 +0,0 @@ - -Onboarding = { - Navigation = { - Back = "返回" - Next = "下一步" - Enter = "进入应用" - Start = "开始体验" - } - - Welcome = { - Tagline = "轻量 · 现代 · 自由的代理客户端" - } - - Permission = { - Title = "确认运行权限" - Subtitle = "权限会影响通知和分应用代理等功能" - - Common = { - Granted = "已授权" - } - - Notification = { - Title = "通知权限" - SummaryNeed = "用于显示连接状态和流量通知" - SummaryNotRequired = "当前系统无需额外授权" - } - - AppList = { - Title = "应用列表权限" - SummaryNeed = "用于分应用代理等功能" - } - } - - Privacy = { - Title = "确认隐私与协议" - Subtitle = "阅读并同意协议后方可继续" - RichTextLead = "在开始使用前需要同意隐私协议,才能继续使用 YumeBox." - RichTextPrefix = "继续前请先阅读并同意 " - RichTextConnector = " 与 " - RichTextSuffix = "." - TermsLink = "《使用条款》" - PolicyLink = "《隐私政策》" - Accept = { - Title = "我已阅读并同意隐私政策" - } - } - - Personalize = { - Title = "调整界面风格" - Subtitle = "主题模式和主色可随时在设置中修改" - } - - Finish = { - Title = "准备完成" - Subtitle = "基础设置已就绪即将进入主页" - } - - Project = { - Github = { - Title = "GitHub 仓库" - Summary = "github.com/yumeyucca/YumeBox" - } - Community = { - Title = "社区频道" - Summary = "加入频道或群组继续反馈" - } - } - - Sheet = { - PrivacyPolicyTitle = "隐私政策" - LoadFailed = "无法加载协议内容" - } -} diff --git a/locale/lang/zh_Hans/OpenSourceLicenses.fvv b/locale/lang/zh_Hans/OpenSourceLicenses.fvv deleted file mode 100644 index cf4b95dbe..000000000 --- a/locale/lang/zh_Hans/OpenSourceLicenses.fvv +++ /dev/null @@ -1,8 +0,0 @@ - -OpenSourceLicenses = { - Title = "开源许可证" - - LicenseSheet = { - NoContent = "暂无许可证内容" - } -} diff --git a/locale/lang/zh_Hans/Override.fvv b/locale/lang/zh_Hans/Override.fvv deleted file mode 100644 index 4465794fa..000000000 --- a/locale/lang/zh_Hans/Override.fvv +++ /dev/null @@ -1,116 +0,0 @@ - -Override = { - Title = "覆写配置" - - Action = { - Create = "创建配置" - New = "新建配置" - NetworkImport = "链接导入" - } - - BuiltIn = { - PreventDnsLeak = "防止 DNS 泄露" - AddDirectRules = "添加直连规则" - PuddingDog = "布丁狗的订阅转换" - Acl4ssrOnlineFull = "ACL4SSR Online Full" - CopyName = "%s (副本)" - } - - Empty = { - Title = "暂无覆写配置" - Hint = "点击下方按钮创建新配置,或导入配置文件" - UserTitle = "暂无导入覆写" - UserHint = "可新建或导入 YAML / JS 覆写" - } - - Section = { - BuiltIn = "内置覆写" - User = "导入覆写" - } - - Status = { - InUse = "使用中" - NotInUse = "未使用" - BuiltIn = "内置" - } - - Card = { - Copy = "复制配置" - Export = "导出配置" - Edit = "编辑配置" - Delete = "删除配置" - EditButton = "编辑" - DeleteButton = "删除" - Apply = "应用配置" - ApplyButton = "应用" - } - - ApplySheet = { - Title = "应用到订阅" - Empty = "暂无订阅" - Success = "已更新应用范围" - Failed = "更新应用范围失败:%s" - Button = { - Cancel = "取消" - Confirm = "确定" - } - } - - Import = { - ReadError = "无法读取导入文件" - Failed = "导入失败: %s" - FileError = "读取文件失败: %s" - NetworkError = "链接导入失败: %s" - InvalidUrl = "请输入 HTTP 或 HTTPS 链接" - HttpError = "HTTP 请求失败:%d" - UnsupportedType = "仅支持 YAML 或 JS" - EmptyJavaScript = "JS 文件为空" - } - - Export = { - Failed = "导出失败:%s" - Success = "已导出配置:%s" - } - - Dialog = { - Create = { - Title = "添加配置" - Name = "配置名称" - Url = "配置链接" - Type = "创建类型" - } - Delete = { - Title = "删除配置" - InUseMessage = "配置 %s 正在被订阅使用,删除后将解除绑定关系.确定要删除吗?此操作不可恢复." - Message = "确定要删除配置 %s 吗?此操作不可恢复." - } - Button = { - Cancel = "取消" - Delete = "删除" - } - } - - - - - - - Draft = { - BasicRouting = "基础分流" - ServiceRouting = "服务分流" - } - - - - Save = { - ImportDefaultName = "导入的覆写配置" - Failed = "保存覆写失败" - } - - - - Label = { - RulesReplace = "覆盖规则" - } - -} diff --git a/locale/lang/zh_Hans/ProfilesPage.fvv b/locale/lang/zh_Hans/ProfilesPage.fvv deleted file mode 100644 index 1f7841c71..000000000 --- a/locale/lang/zh_Hans/ProfilesPage.fvv +++ /dev/null @@ -1,118 +0,0 @@ - -ProfilesPage = { - Title = "配置" - - Action = { - UpdateAll = "一键更新所有" - AddProfile = "添加配置" - } - - Empty = { - NoProfiles = "暂无配置文件" - Hint = "点击右上角添加配置" - } - - Sheet = { - AddTitle = "添加配置文件" - EditTitle = "编辑配置文件" - Complete = "完成" - } - - Type = { - Title = "配置类型" - Subscription = "订阅链接" - LocalFile = "本地文件" - QrScan = "扫码添加" - } - - Input = { - ProfileName = "配置名称" - SubscriptionUrl = "订阅链接 (HTTP/HTTPS)" - SelectFile = "点击选择文件" - NewProfile = "新配置" - AgeSecretKey = "Age 私钥(可选)" - } - - QrScanner = { - NeedPermission = "需要相机权限" - NeedCamera = "需要相机权限才能扫码" - SelectFromAlbum = "从相册选择二维码图片" - RecognizeSuccess = "识别成功" - RecognizeFailed = "未能识别到二维码" - RecognizeError = "识别失败:%s" - } - - Message = { - UnknownFile = "未知文件" - } - - Validation = { - EnterUrl = "请输入链接" - SelectFile = "请选择文件" - YamlOnly = "仅支持 .yaml 或 .yml 格式的配置文件" - } - - Progress = { - Downloading = "下载中..." - } - - Button = { - Cancel = "取消" - Confirm = "确定" - } - - DeleteDialog = { - Title = "删除配置" - Message = "确定要删除「%s」吗?" - Confirm = "删除" - } - - EditDialog = { - Title = "编辑配置名称" - } - - LinkSettings = { - Title = "链接设置" - OpenMode = "打开方式" - OpenModeInApp = "App 内打开" - OpenModeExternal = "外部浏览器" - DefaultLink = "默认链接" - DefaultLinkSummary = "点击左上角快捷按钮时打开的链接" - AddLink = "添加链接" - EditLink = "编辑链接" - Name = "名称" - Url = "链接" - Close = "关闭" - Validation = { - EnterName = "请输入名称" - EnterUrl = "请输入链接" - InvalidUrl = "请输入有效的链接" - } - } - - ShareDialog = { - Title = "分享配置" - ShareFile = "分享配置文件" - ShareLink = "分享订阅链接" - NoLink = "该配置没有订阅链接" - ImportedConfigMissing = "导入配置不存在:%s" - } - - - SettingsDialog = { - Title = "订阅设置" - ChangeLink = "更改订阅链接" - CustomRouting = "自定义分流" - CustomRoutingSummary = "独立的分流规则" - NoDescription = "未设置说明" - EditProfile = "编辑配置" - OpenConfig = "编辑器打开" - EditSettings = "订阅设置" - SectionType = "设置类型" - SectionSubscription = "订阅信息" - SectionOverride = "覆写配置" - SaveFailed = "保存配置失败" - ConfigMissing = "配置不存在:%s" - AgeSecretKey = "Age 私钥" - } -} diff --git a/locale/lang/zh_Hans/ProfilesVM.fvv b/locale/lang/zh_Hans/ProfilesVM.fvv deleted file mode 100644 index 2b1041742..000000000 --- a/locale/lang/zh_Hans/ProfilesVM.fvv +++ /dev/null @@ -1,24 +0,0 @@ - -ProfilesVM = { - Message = { - ProfileAdded = "配置已添加:%s" - AddFailed = "添加配置失败:%s" - ProfileDeleted = "配置已删除" - DeleteFailed = "删除配置失败:%s" - ProfileUpdated = "配置已更新:%s" - UpdateFailed = "更新配置失败:%s" - ToggleFailed = "切换状态失败:%s" - ProvidersPartial = "配置已保存,%d 个外部资源失败:%s" - ProvidersUndiscovered = "配置已保存,但未能识别外部资源列表" - } - - Progress = { - Preparing = "准备下载..." - Verifying = "正在验证配置..." - ImportComplete = "导入完成" - } - - Error = { - ProfileNotExist = "配置不存在" - } -} \ No newline at end of file diff --git a/locale/lang/zh_Hans/Providers.fvv b/locale/lang/zh_Hans/Providers.fvv deleted file mode 100644 index 520bb6331..000000000 --- a/locale/lang/zh_Hans/Providers.fvv +++ /dev/null @@ -1,39 +0,0 @@ - -Providers = { - Title = "外部资源" - - Action = { - UpdateAll = "更新全部" - Update = "更新" - Upload = "上传" - Operation = "操作" - } - - Empty = { - NotRunning = "代理未启动" - NotRunningHint = "请先启动代理服务以查看外部资源" - NoProviders = "暂无外部资源" - NoProvidersHint = "当前配置未包含外部资源" - } - - Type = { - ProxyProviders = "代理提供者 (%d)" - RuleProviders = "规则提供者 (%d)" - } - - VehicleType = { - Http = "HTTP" - File = "文件" - Inline = "内联" - Compatible = "兼容" - } - - Message = { - FetchFailed = "获取外部资源失败: %s" - UpdateSuccess = "%s 更新成功" - UpdateFailed = "更新失败: %s" - AllUpdated = "全部更新完成" - UploadSuccess = "%s 上传成功" - UploadFailed = "上传失败: %s" - } -} diff --git a/locale/lang/zh_Hans/Proxy.fvv b/locale/lang/zh_Hans/Proxy.fvv deleted file mode 100644 index 74f7c97b7..000000000 --- a/locale/lang/zh_Hans/Proxy.fvv +++ /dev/null @@ -1,56 +0,0 @@ - -Proxy = { - Title = "节点" - - Mode = { - Direct = "直连" - } - - Action = { - Panel = "面板" - Test = "测试" - Sort = "排序" - LocateCurrent = "定位当前节点" - More = "更多" - } - - Node = { - Timeout = "超时" - Count = "%d 节点" - } - - - Empty = { - NoNodes = "暂无节点" - Hint = "请在配置页面加载配置文件" - } - - Testing = { - Group = "正在测试节点组:%s" - All = "正在测试所有节点组..." - RequestSent = "测试请求已发送" - Progress = "正在测试 %d/%d" - Completed = "测试完成" - Failed = "测试失败:%s" - InProgress = "正在测试节点" - } - - Selection = { - Switched = "已切换到:%s" - Failed = "切换失败" - Error = "切换失败:%s" - } - - SortMode = { - Default = "默认顺序" - ByName = "按名称排序" - ByLatency = "按延迟排序" - } - - DisplayMode = { - SingleDetailed = "单列详细" - SingleSimple = "单列简洁" - DoubleDetailed = "双列详细" - DoubleSimple = "双列简洁" - } -} diff --git a/locale/lang/zh_Hans/Rules.fvv b/locale/lang/zh_Hans/Rules.fvv deleted file mode 100644 index 7e7c1a97b..000000000 --- a/locale/lang/zh_Hans/Rules.fvv +++ /dev/null @@ -1,25 +0,0 @@ - -Rules = { - Title = "规则" - Summary = "查看并临时开关运行时规则" - SearchHint = "搜索规则" - - Label = { - Proxy = "策略" - HitRate = "命中率 %s" - } - - Message = { - ToggleFailed = "切换规则失败:%s" - } - - Empty = { - Loading = "加载中" - LoadingHint = "正在从内核拉取规则" - NotRunning = "代理未启动" - NotRunningHint = "请先启动代理服务以查看规则" - NoRules = "暂无规则" - NoRulesHint = "当前配置未包含规则" - NoResults = "没有匹配的规则" - } -} diff --git a/locale/lang/zh_Hans/Service.fvv b/locale/lang/zh_Hans/Service.fvv deleted file mode 100644 index 95dac7bdd..000000000 --- a/locale/lang/zh_Hans/Service.fvv +++ /dev/null @@ -1,26 +0,0 @@ - -Service = { - Notification = { - Running = "运行中" - UnknownProfile = "未知配置" - NoNode = "未选择" - CurrentNode = "当前节点:%s" - CurrentNodeLabel = "当前节点" - RealtimeTraffic = "实时流量" - SpeedLine = "下行 %s 上行 %s" - TotalTraffic = "总流量 %s" - LogChannel = "日志记录" - LogRecording = "正在记录日志" - LogRecordingPending = "日志记录中..." - Stop = "停止" - } - - Tile = { - ClickToOpen = "点击打开应用" - ClickToStartProxy = "启动代理" - ClickToStopProxy = "停止代理" - Connecting = "正在连接..." - Disconnecting = "正在断开..." - } - -} diff --git a/locale/lang/zh_Hans/Settings.fvv b/locale/lang/zh_Hans/Settings.fvv deleted file mode 100644 index 771285730..000000000 --- a/locale/lang/zh_Hans/Settings.fvv +++ /dev/null @@ -1,35 +0,0 @@ - -Settings = { - Title = "设置" - - Section = { - UiSettings = "界面设置" - More = "更多" - } - - UiSettings = { - App = "应用" - AppSummary = "主题、语言与行为" - Network = "网络" - NetworkSummary = "代理模式、DNS 与访问控制" - Override = "覆写" - OverrideSummary = "YAML、JS 与规则覆写" - MetaFeatures = "Meta 功能" - MetaFeaturesSummary = "连接、日志、规则与统计" - } - - More = { - Lab = "实验室" - LabSummary = "Sub-Store 与实验功能" - Logs = "日志" - LogsSummary = "运行日志" - Onboarding = "新手引导" - OnboardingSummary = "重新查看欢迎引导" - About = "关于" - AboutSummary = "版本与许可" - } - - Error = { - WebviewFailed = "无法打开 WebView:%s" - } -} diff --git a/locale/lang/zh_Hans/TrafficStatistics.fvv b/locale/lang/zh_Hans/TrafficStatistics.fvv deleted file mode 100644 index 40070cca2..000000000 --- a/locale/lang/zh_Hans/TrafficStatistics.fvv +++ /dev/null @@ -1,54 +0,0 @@ - -TrafficStatistics = { - Title = "统计" - EntrySummary = "查看流量使用情况" - - TimeRange = { - Today = "今日" - Week = "本周" - } - - Summary = { - TodayTraffic = "今日流量" - WeekTraffic = "本周流量" - Average = "平均" - DayTrafficTip = "%s流量" - } - - Donut = { - Other = "其他" - } - - Action = { - Clear = "清空统计" - ClearSuccess = "统计数据已清空" - } - - Section = { - Traffic = "流量" - TopApps = "高流量应用" - TodayApps = "今日应用流量" - WeekApps = "近7天应用流量" - SystemTraffic = "系统流量" - EmptyApps = "暂无应用流量统计" - } - - Metric = { - Download = "下行" - Upload = "上行" - UsageLine = "下行 %s 上行 %s" - SortByName = "名称" - SortByUsage = "流量" - } - - Weekday = { - Mon = "周一" - Tue = "周二" - Wed = "周三" - Thu = "周四" - Fri = "周五" - Sat = "周六" - Sun = "周日" - Today = "今日" - } -} diff --git a/locale/lang/zh_Hans/Util.fvv b/locale/lang/zh_Hans/Util.fvv deleted file mode 100644 index a8a61e701..000000000 --- a/locale/lang/zh_Hans/Util.fvv +++ /dev/null @@ -1,6 +0,0 @@ - -Util = { - Error = { - UnknownError = "未知错误" - } -} diff --git a/locale/src/About.kt b/locale/src/About.kt new file mode 100644 index 000000000..c389c9f22 --- /dev/null +++ b/locale/src/About.kt @@ -0,0 +1,187 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_About: YumeStrings_About = YumeStrings_About( + Title = "关于", + App = YumeStrings_About_App( + Description = "基于 mihomo 的开源 Android 客户端", + VersionLoading = "加载中...", + VersionFailed = "加载失败", + ), + Debug = YumeStrings_About_Debug( + Title = "Debug", + TestInitialization = "测试初始化", + InitializationReset = "初始化状态已重置", + ), + Section = YumeStrings_About_Section( + ProjectLinks = "项目链接", + More = "更多", + Support = "支持", + License = "许可证", + ), + Link = YumeStrings_About_Link( + TelegramGroup = "Telegram 群组", + TelegramChannel = "Telegram 频道", + ), + Support = YumeStrings_About_Support( + ExportLogs = "导出日志", + ReportIssue = "报告问题", + ExportSuccess = "日志已导出", + ExportFailed = "日志导出失败", + ), + License = YumeStrings_About_License( + Libraries = "引用库", + LibrariesSummary = "查看本应用使用的所有第三方库", + AgplName = "GNU Affero General Public License v3.0", + AgplDescription = "本程序是自由软件:你可以根据 GNU Affero 通用公共许可证的条款重新分发和修改.", + ), + Copyright = "© 2025 – 至今 YumeYucca", +) + +internal val ZhYumeStrings_About: YumeStrings_About = YumeStrings_About( + Title = "關於", + App = YumeStrings_About_App( + Description = "基於 mihomo 的開源 Android 用戶端", + VersionLoading = "載入中...", + VersionFailed = "載入失敗", + ), + Debug = YumeStrings_About_Debug( + Title = "Debug", + TestInitialization = "測試初始化", + InitializationReset = "初始化狀態已重設", + ), + Section = YumeStrings_About_Section( + ProjectLinks = "專案連結", + More = "更多", + Support = "支援", + License = "授權", + ), + Link = YumeStrings_About_Link( + TelegramGroup = "Telegram 群組", + TelegramChannel = "Telegram 頻道", + ), + Support = YumeStrings_About_Support( + ExportLogs = "匯出日誌", + ReportIssue = "回報問題", + ExportSuccess = "日誌已匯出", + ExportFailed = "日誌匯出失敗", + ), + License = YumeStrings_About_License( + Libraries = "引用函式庫", + LibrariesSummary = "檢視本應用使用的所有第三方函式庫", + AgplName = "GNU Affero General Public License v3.0", + AgplDescription = "本程式為自由軟體:你可依 GNU Affero 通用公眾授權條款重新散布與/或修改.", + ), + Copyright = "© 2025 – 至今 YumeYucca", +) + +internal val EnYumeStrings_About: YumeStrings_About = YumeStrings_About( + Title = "About", + App = YumeStrings_About_App( + Description = "An open-source Android client based on mihomo", + VersionLoading = "Loading...", + VersionFailed = "Failed to load", + ), + Debug = YumeStrings_About_Debug( + Title = "Debug", + TestInitialization = "Test Initialization", + InitializationReset = "Initialization state reset", + ), + Section = YumeStrings_About_Section( + ProjectLinks = "Project Links", + More = "More", + Support = "Support", + License = "License", + ), + Link = YumeStrings_About_Link( + TelegramGroup = "Telegram Group", + TelegramChannel = "Telegram Channel", + ), + Support = YumeStrings_About_Support( + ExportLogs = "Export Logs", + ReportIssue = "Report a Problem", + ExportSuccess = "Logs exported", + ExportFailed = "Failed to export logs", + ), + License = YumeStrings_About_License( + Libraries = "Libraries", + LibrariesSummary = "View all third-party libraries used in this app", + AgplName = "GNU Affero General Public License v3.0", + AgplDescription = "This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License.", + ), + Copyright = "© 2025 – Present YumeYucca", +) + +internal val JaYumeStrings_About: YumeStrings_About = YumeStrings_About( + Title = "情報", + App = YumeStrings_About_App( + Description = "mihomo ベースのオープンソース Android クライアント", + VersionLoading = "読み込み中...", + VersionFailed = "読み込みに失敗しました", + ), + Debug = YumeStrings_About_Debug( + Title = "Debug", + TestInitialization = "初期化をテスト", + InitializationReset = "初期化状態をリセットしました", + ), + Section = YumeStrings_About_Section( + ProjectLinks = "プロジェクトリンク", + More = "その他", + Support = "サポート", + License = "ライセンス", + ), + Link = YumeStrings_About_Link( + TelegramGroup = "Telegram グループ", + TelegramChannel = "Telegram チャンネル", + ), + Support = YumeStrings_About_Support( + ExportLogs = "ログを書き出す", + ReportIssue = "問題を報告", + ExportSuccess = "ログを書き出しました", + ExportFailed = "ログの書き出しに失敗しました", + ), + License = YumeStrings_About_License( + Libraries = "ライブラリ", + LibrariesSummary = "このアプリで使用しているサードパーティライブラリを表示", + AgplName = "GNU Affero General Public License v3.0", + AgplDescription = "本プログラムはフリーソフトウェアです.GNU Affero 一般公衆ライセンスの条項に従って再配布および/または改変できます.", + ), + Copyright = "© 2025 – Present YumeYucca", +) + +internal val RuYumeStrings_About: YumeStrings_About = YumeStrings_About( + Title = "О приложении", + App = YumeStrings_About_App( + Description = "Android-клиент с открытым исходным кодом на базе mihomo", + VersionLoading = "Загрузка...", + VersionFailed = "Не удалось загрузить", + ), + Debug = YumeStrings_About_Debug( + Title = "Debug", + TestInitialization = "Тестовая инициализация", + InitializationReset = "Состояние инициализации сброшено", + ), + Section = YumeStrings_About_Section( + ProjectLinks = "Ссылки проекта", + More = "Ещё", + Support = "Поддержка", + License = "Лицензия", + ), + Link = YumeStrings_About_Link( + TelegramGroup = "Группа Telegram", + TelegramChannel = "Канал Telegram", + ), + Support = YumeStrings_About_Support( + ExportLogs = "Экспорт журналов", + ReportIssue = "Сообщить о проблеме", + ExportSuccess = "Журналы экспортированы", + ExportFailed = "Не удалось экспортировать журналы", + ), + License = YumeStrings_About_License( + Libraries = "Библиотеки", + LibrariesSummary = "Просмотреть все сторонние библиотеки, используемые в приложении", + AgplName = "GNU Affero General Public License v3.0", + AgplDescription = "Эта программа — свободное ПО: вы можете распространять и/или изменять её на условиях GNU Affero General Public License.", + ), + Copyright = "© 2025 – Present YumeYucca", +) + diff --git a/locale/src/AccessControl.kt b/locale/src/AccessControl.kt new file mode 100644 index 000000000..39e427cfc --- /dev/null +++ b/locale/src/AccessControl.kt @@ -0,0 +1,217 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_AccessControl: YumeStrings_AccessControl = YumeStrings_AccessControl( + Title = "访问控制", + Search = YumeStrings_AccessControl_Search( + Placeholder = "搜索应用...", + Empty = "没有匹配的应用", + ), + AppList = YumeStrings_AccessControl_AppList( + Title = "应用列表 (%d 已选择)", + Loading = "加载中...", + ), + Settings = YumeStrings_AccessControl_Settings( + Title = "访问控制设置", + ShowSystemApps = "显示系统应用", + SelectedFirst = "已选应用优先", + SortMode = "排序方式", + SortModeCurrent = "当前:%s", + BatchOperation = "批量操作", + SelectAll = "全选", + DeselectAll = "全不选", + Invert = "反选", + ImportExport = "导入/导出", + Import = "从剪贴板导入", + Export = "导出到剪贴板", + ImportSuccess = "导入成功:%d 个包名", + ExportSuccess = "已复制 %d 个包名到剪贴板", + ImportFailed = "导入失败", + RegionQuickSelect = "地区快捷选择", + ChinaApps = "中国应用", + OverseasApps = "非中国应用", + RegionSelectResult = "已按「%s」快捷选择,共 %d 个", + ), + SortMode = YumeStrings_AccessControl_SortMode( + PackageName = "包名", + Label = "应用名称", + InstallTime = "安装时间", + UpdateTime = "更新时间", + ), + Button = YumeStrings_AccessControl_Button( + Cancel = "取消", + Confirm = "确定", + ), +) + +internal val ZhYumeStrings_AccessControl: YumeStrings_AccessControl = YumeStrings_AccessControl( + Title = "存取控制", + Search = YumeStrings_AccessControl_Search( + Placeholder = "搜尋應用...", + Empty = "沒有符合的應用", + ), + AppList = YumeStrings_AccessControl_AppList( + Title = "應用列表 (%d 已選取)", + Loading = "載入中...", + ), + Settings = YumeStrings_AccessControl_Settings( + Title = "存取控制設定", + ShowSystemApps = "顯示系統應用", + SelectedFirst = "已選應用優先", + SortMode = "排序方式", + SortModeCurrent = "目前:%s", + BatchOperation = "批次操作", + SelectAll = "全選", + DeselectAll = "全不選", + Invert = "反選", + ImportExport = "匯入/匯出", + Import = "從剪貼簿匯入", + Export = "匯出到剪貼簿", + ImportSuccess = "匯入成功:%d 個套件名稱", + ExportSuccess = "已複製 %d 個套件名稱到剪貼簿", + ImportFailed = "匯入失敗", + RegionQuickSelect = "地區快速選取", + ChinaApps = "中國應用", + OverseasApps = "非中國應用", + RegionSelectResult = "已依「%s」快速選取,共 %d 個", + ), + SortMode = YumeStrings_AccessControl_SortMode( + PackageName = "套件名稱", + Label = "應用名稱", + InstallTime = "安裝時間", + UpdateTime = "更新時間", + ), + Button = YumeStrings_AccessControl_Button( + Cancel = "取消", + Confirm = "確定", + ), +) + +internal val EnYumeStrings_AccessControl: YumeStrings_AccessControl = YumeStrings_AccessControl( + Title = "Access Control", + Search = YumeStrings_AccessControl_Search( + Placeholder = "Search apps...", + Empty = "No matching apps", + ), + AppList = YumeStrings_AccessControl_AppList( + Title = "App List (%d selected)", + Loading = "Loading...", + ), + Settings = YumeStrings_AccessControl_Settings( + Title = "Access Control Settings", + ShowSystemApps = "Show System Apps", + SelectedFirst = "Selected Apps First", + SortMode = "Sort Mode", + SortModeCurrent = "Current: %s", + BatchOperation = "Batch Operation", + SelectAll = "Select All", + DeselectAll = "Deselect All", + Invert = "Invert", + ImportExport = "Import/Export", + Import = "Import from Clipboard", + Export = "Export to Clipboard", + ImportSuccess = "Imported: %d package names", + ExportSuccess = "Copied %d package names to clipboard", + ImportFailed = "Import failed", + RegionQuickSelect = "Region Quick Select", + ChinaApps = "China Apps", + OverseasApps = "Non-China Apps", + RegionSelectResult = "Quick selected by \\\"%s\\\", total %d", + ), + SortMode = YumeStrings_AccessControl_SortMode( + PackageName = "Package Name", + Label = "App Name", + InstallTime = "Install Time", + UpdateTime = "Update Time", + ), + Button = YumeStrings_AccessControl_Button( + Cancel = "Cancel", + Confirm = "Confirm", + ), +) + +internal val JaYumeStrings_AccessControl: YumeStrings_AccessControl = YumeStrings_AccessControl( + Title = "アクセス制御", + Search = YumeStrings_AccessControl_Search( + Placeholder = "アプリを検索...", + Empty = "一致するアプリがありません", + ), + AppList = YumeStrings_AccessControl_AppList( + Title = "アプリ一覧(%d 件選択中)", + Loading = "読み込み中...", + ), + Settings = YumeStrings_AccessControl_Settings( + Title = "アクセス制御設定", + ShowSystemApps = "システムアプリを表示", + SelectedFirst = "選択済みを先頭に", + SortMode = "並び替え", + SortModeCurrent = "現在: %s", + BatchOperation = "一括操作", + SelectAll = "すべて選択", + DeselectAll = "すべて解除", + Invert = "選択を反転", + ImportExport = "インポート/エクスポート", + Import = "クリップボードからインポート", + Export = "クリップボードへエクスポート", + ImportSuccess = "インポート完了: パッケージ名 %d 件", + ExportSuccess = "パッケージ名 %d 件をクリップボードにコピーしました", + ImportFailed = "インポートに失敗しました", + RegionQuickSelect = "地域クイック選択", + ChinaApps = "中国向けアプリ", + OverseasApps = "中国以外のアプリ", + RegionSelectResult = "「%s」でクイック選択、合計 %d 件", + ), + SortMode = YumeStrings_AccessControl_SortMode( + PackageName = "パッケージ名", + Label = "アプリ名", + InstallTime = "インストール日時", + UpdateTime = "更新日時", + ), + Button = YumeStrings_AccessControl_Button( + Cancel = "キャンセル", + Confirm = "確定", + ), +) + +internal val RuYumeStrings_AccessControl: YumeStrings_AccessControl = YumeStrings_AccessControl( + Title = "Контроль доступа", + Search = YumeStrings_AccessControl_Search( + Placeholder = "Поиск приложений...", + Empty = "Нет подходящих приложений", + ), + AppList = YumeStrings_AccessControl_AppList( + Title = "Список приложений (выбрано: %d)", + Loading = "Загрузка...", + ), + Settings = YumeStrings_AccessControl_Settings( + Title = "Настройки контроля доступа", + ShowSystemApps = "Показывать системные приложения", + SelectedFirst = "Выбранные сначала", + SortMode = "Сортировка", + SortModeCurrent = "Сейчас: %s", + BatchOperation = "Пакетные действия", + SelectAll = "Выбрать все", + DeselectAll = "Снять выбор", + Invert = "Инвертировать", + ImportExport = "Импорт/экспорт", + Import = "Импорт из буфера", + Export = "Экспорт в буфер", + ImportSuccess = "Импортировано имён пакетов: %d", + ExportSuccess = "Скопировано имён пакетов в буфер: %d", + ImportFailed = "Импорт не удался", + RegionQuickSelect = "Быстрый выбор по региону", + ChinaApps = "Китайские приложения", + OverseasApps = "Некитайские приложения", + RegionSelectResult = "Быстрый выбор «%s», всего %d", + ), + SortMode = YumeStrings_AccessControl_SortMode( + PackageName = "Имя пакета", + Label = "Название приложения", + InstallTime = "Время установки", + UpdateTime = "Время обновления", + ), + Button = YumeStrings_AccessControl_Button( + Cancel = "Отмена", + Confirm = "Подтвердить", + ), +) + diff --git a/locale/src/AppSettings.kt b/locale/src/AppSettings.kt new file mode 100644 index 000000000..5bc1a5edf --- /dev/null +++ b/locale/src/AppSettings.kt @@ -0,0 +1,402 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_AppSettings: YumeStrings_AppSettings = YumeStrings_AppSettings( + Title = "应用设置", + Section = YumeStrings_AppSettings_Section( + Behavior = "行为", + Interface = "界面", + Privacy = "隐私", + Service = "服务", + Network = "网络", + Navigation = "导航", + Home = "首页", + ), + Behavior = YumeStrings_AppSettings_Behavior( + AutoStartTitle = "自动启动", + AutoUpdateOnStartTitle = "启动更新配置", + ), + Interface = YumeStrings_AppSettings_Interface( + ThemeModeTitle = "主题模式", + ThemeModeSummary = "选择应用的主题样式", + ThemeModeSystem = "跟随系统", + ThemeModeLight = "浅色", + ThemeModeDark = "深色", + LanguageTitle = "应用语言", + LanguageSystem = "跟随系统", + LanguageChinese = "简体中文", + LanguageChineseTraditional = "繁體中文", + LanguageEnglish = "English", + LanguageJapanese = "日本語", + LanguageRussian = "Русский", + ColorThemeTitle = "主题配色", + ColorThemePickerTitle = "选择主题色", + ColorThemeCodeLabel = "主题色代码(#RRGGBB)", + ColorThemeCustomSummary = "当前主题色:%s", + ThemeColorPolarityInvertTitle = "反转主题前景色", + TopBarBlurTitle = "背景模糊", + AutoHideNavbarTitle = "滑动隐藏底栏", + PageScaleTitle = "页面缩放", + PageScaleDialogSummary = "80% - 120%", + PredictiveBackTitle = "预测返回手势", + PredictiveBackRestartSummary = "下次启动应用后生效", + PredictiveBackProgressTitle = "预测返回幅度", + ClassicHomeTitle = "经典首页", + SystemWallpaperTitle = "设置为系统壁纸", + CustomIconTitle = "自定义应用图标", + HomeQuoteTitle = "首页一言", + HomeQuoteDefault = "在安静的线路上,等一朵云完成漫游", + EditHomeQuoteTitle = "编辑一言", + HomeWallpaperImportFailed = "无法将壁纸复制到本地,已改用原始来源", + ), + Privacy = YumeStrings_AppSettings_Privacy( + HideFromRecentsTitle = "隐藏后台卡片", + ), + ServiceSection = YumeStrings_AppSettings_ServiceSection( + TrafficNotificationTitle = "显示流量通知", + ExitUiWhenBackgroundTitle = "后台隐藏时释放界面", + SuperIslandTitle = "超级岛", + ShizukuTitle = "Shizuku 授权", + ShizukuNotRunning = "请先安装并启动 Shizuku", + ShizukuPermissionRequired = "点击此处申请 Shizuku 权限", + ShizukuReady = "Shizuku 已授权,超级岛可正常工作", + ShizukuStatusUnavailable = "未运行", + ShizukuStatusPending = "待授权", + ShizukuStatusGranted = "已授权", + BatteryOptimizationTitle = "电池优化无限制", + BatteryOptimizationAlreadyDisabled = "电池优化已关闭", + ), + Network = YumeStrings_AppSettings_Network( + CustomUserAgentTitle = "自定义 User-Agent", + CustomUserAgentSummaryDefault = "未设置,使用默认值", + ), + WarningDialog = YumeStrings_AppSettings_WarningDialog( + Title = "警告", + ), + EditDialog = YumeStrings_AppSettings_EditDialog( + UserAgentTitle = "编辑 User-Agent", + ), + Button = YumeStrings_AppSettings_Button( + Apply = "应用", + ), +) + +internal val ZhYumeStrings_AppSettings: YumeStrings_AppSettings = YumeStrings_AppSettings( + Title = "應用設定", + Section = YumeStrings_AppSettings_Section( + Behavior = "行為", + Interface = "介面", + Privacy = "隱私", + Service = "服務", + Network = "網路", + Navigation = "導航", + Home = "首頁", + ), + Behavior = YumeStrings_AppSettings_Behavior( + AutoStartTitle = "自動啟動", + AutoUpdateOnStartTitle = "啟動時更新設定檔", + ), + Interface = YumeStrings_AppSettings_Interface( + ThemeModeTitle = "主題模式", + ThemeModeSummary = "選擇應用的主題樣式", + ThemeModeSystem = "跟隨系統", + ThemeModeLight = "淺色", + ThemeModeDark = "深色", + LanguageTitle = "應用語言", + LanguageSystem = "跟隨系統", + LanguageChinese = "简体中文", + LanguageChineseTraditional = "繁體中文", + LanguageEnglish = "English", + LanguageJapanese = "日本語", + LanguageRussian = "Русский", + ColorThemeTitle = "主題配色", + ColorThemePickerTitle = "選擇主題色", + ColorThemeCodeLabel = "主題色代碼(#RRGGBB)", + ColorThemeCustomSummary = "目前主題色:%s", + ThemeColorPolarityInvertTitle = "反轉主題前景色", + TopBarBlurTitle = "背景模糊", + AutoHideNavbarTitle = "滑動隱藏底欄", + PageScaleTitle = "頁面縮放", + PageScaleDialogSummary = "80% - 120%", + PredictiveBackTitle = "預測返回手勢", + PredictiveBackRestartSummary = "下次啟動應用後生效", + PredictiveBackProgressTitle = "預測返回幅度", + ClassicHomeTitle = "經典首頁", + SystemWallpaperTitle = "設定為系統桌布", + CustomIconTitle = "自訂應用圖示", + HomeQuoteTitle = "首頁一言", + HomeQuoteDefault = "在安靜的線路上,等一朵雲完成漫遊", + EditHomeQuoteTitle = "編輯一言", + HomeWallpaperImportFailed = "無法將桌布複製到本機,已改用原始來源", + ), + Privacy = YumeStrings_AppSettings_Privacy( + HideFromRecentsTitle = "隱藏最近工作卡片", + ), + ServiceSection = YumeStrings_AppSettings_ServiceSection( + TrafficNotificationTitle = "顯示流量通知", + ExitUiWhenBackgroundTitle = "背景隱藏時釋放介面", + SuperIslandTitle = "超級島", + ShizukuTitle = "Shizuku 授權", + ShizukuNotRunning = "請先安裝並啟動 Shizuku", + ShizukuPermissionRequired = "點擊此處申請 Shizuku 權限", + ShizukuReady = "Shizuku 已授權,超級島可以正常運作", + ShizukuStatusUnavailable = "未執行", + ShizukuStatusPending = "待授權", + ShizukuStatusGranted = "已授權", + BatteryOptimizationTitle = "電池最佳化無限制", + BatteryOptimizationAlreadyDisabled = "電池最佳化已關閉", + ), + Network = YumeStrings_AppSettings_Network( + CustomUserAgentTitle = "自訂 User-Agent", + CustomUserAgentSummaryDefault = "未設定,使用預設值", + ), + WarningDialog = YumeStrings_AppSettings_WarningDialog( + Title = "警告", + ), + EditDialog = YumeStrings_AppSettings_EditDialog( + UserAgentTitle = "編輯 User-Agent", + ), + Button = YumeStrings_AppSettings_Button( + Apply = "套用", + ), +) + +internal val EnYumeStrings_AppSettings: YumeStrings_AppSettings = YumeStrings_AppSettings( + Title = "App Settings", + Section = YumeStrings_AppSettings_Section( + Behavior = "Behavior", + Interface = "Interface", + Privacy = "Privacy", + Service = "Service", + Network = "Network", + Navigation = "Navigation", + Home = "Home", + ), + Behavior = YumeStrings_AppSettings_Behavior( + AutoStartTitle = "Auto Start", + AutoUpdateOnStartTitle = "Update on Start", + ), + Interface = YumeStrings_AppSettings_Interface( + ThemeModeTitle = "Theme Mode", + ThemeModeSummary = "Select the app's theme style", + ThemeModeSystem = "Follow System", + ThemeModeLight = "Light", + ThemeModeDark = "Dark", + LanguageTitle = "App Language", + LanguageSystem = "Follow System", + LanguageChinese = "简体中文", + LanguageChineseTraditional = "繁體中文", + LanguageEnglish = "English", + LanguageJapanese = "日本語", + LanguageRussian = "Русский", + ColorThemeTitle = "Theme Palette", + ColorThemePickerTitle = "Pick Theme Color", + ColorThemeCodeLabel = "Theme Color Code (#RRGGBB)", + ColorThemeCustomSummary = "Current theme color: %s", + ThemeColorPolarityInvertTitle = "Invert Theme Foreground", + TopBarBlurTitle = "Blur", + AutoHideNavbarTitle = "Auto-hide Navbar", + PageScaleTitle = "Page Scale", + PageScaleDialogSummary = "80% - 120%", + PredictiveBackTitle = "Predictive Back Gesture", + PredictiveBackRestartSummary = "Takes effect the next time the app starts", + PredictiveBackProgressTitle = "Predictive Back Amplitude", + ClassicHomeTitle = "Classic Home", + SystemWallpaperTitle = "Set as System Wallpaper", + CustomIconTitle = "Custom App Icon", + HomeQuoteTitle = "Home Quote", + HomeQuoteDefault = "Wait for a cloud to finish roaming on a quiet route", + EditHomeQuoteTitle = "Edit Home Quote", + HomeWallpaperImportFailed = "Could not copy the wallpaper locally; using the original source", + ), + Privacy = YumeStrings_AppSettings_Privacy( + HideFromRecentsTitle = "Hide Recents Card", + ), + ServiceSection = YumeStrings_AppSettings_ServiceSection( + TrafficNotificationTitle = "Show Traffic Notification", + ExitUiWhenBackgroundTitle = "Release UI In Background", + SuperIslandTitle = "Super Island", + ShizukuTitle = "Shizuku Access", + ShizukuNotRunning = "Install and start Shizuku first", + ShizukuPermissionRequired = "Tap to request Shizuku permission", + ShizukuReady = "Shizuku authorized; Super Island is ready", + ShizukuStatusUnavailable = "Unavailable", + ShizukuStatusPending = "Needs access", + ShizukuStatusGranted = "Authorized", + BatteryOptimizationTitle = "Unrestricted Battery", + BatteryOptimizationAlreadyDisabled = "Battery optimization is already disabled", + ), + Network = YumeStrings_AppSettings_Network( + CustomUserAgentTitle = "Custom User-Agent", + CustomUserAgentSummaryDefault = "Not set, using default", + ), + WarningDialog = YumeStrings_AppSettings_WarningDialog( + Title = "Warning", + ), + EditDialog = YumeStrings_AppSettings_EditDialog( + UserAgentTitle = "Edit User-Agent", + ), + Button = YumeStrings_AppSettings_Button( + Apply = "Apply", + ), +) + +internal val JaYumeStrings_AppSettings: YumeStrings_AppSettings = YumeStrings_AppSettings( + Title = "アプリ設定", + Section = YumeStrings_AppSettings_Section( + Behavior = "動作", + Interface = "インターフェース", + Privacy = "プライバシー", + Service = "サービス", + Network = "ネットワーク", + Navigation = "ナビゲーション", + Home = "ホーム", + ), + Behavior = YumeStrings_AppSettings_Behavior( + AutoStartTitle = "自動開始", + AutoUpdateOnStartTitle = "開始時に更新", + ), + Interface = YumeStrings_AppSettings_Interface( + ThemeModeTitle = "テーマモード", + ThemeModeSummary = "アプリのテーマスタイルを選択", + ThemeModeSystem = "システムに合わせる", + ThemeModeLight = "ライト", + ThemeModeDark = "ダーク", + LanguageTitle = "アプリの言語", + LanguageSystem = "システムに合わせる", + LanguageChinese = "简体中文", + LanguageChineseTraditional = "繁體中文", + LanguageEnglish = "English", + LanguageJapanese = "日本語", + LanguageRussian = "Русский", + ColorThemeTitle = "テーマ配色", + ColorThemePickerTitle = "テーマカラーを選択", + ColorThemeCodeLabel = "テーマカラーコード (#RRGGBB)", + ColorThemeCustomSummary = "現在のテーマカラー: %s", + ThemeColorPolarityInvertTitle = "テーマ前景色を反転", + TopBarBlurTitle = "ぼかし", + AutoHideNavbarTitle = "ナビバーを自動非表示", + PageScaleTitle = "ページ倍率", + PageScaleDialogSummary = "80% - 120%", + PredictiveBackTitle = "予測戻るジェスチャー", + PredictiveBackRestartSummary = "次回アプリ起動時に有効になります", + PredictiveBackProgressTitle = "予測戻る振幅", + ClassicHomeTitle = "クラシックホーム", + SystemWallpaperTitle = "システム壁紙に設定", + CustomIconTitle = "カスタムアプリアイコン", + HomeQuoteTitle = "ホームの一言", + HomeQuoteDefault = "静かな回線のうえで、雲が回遊を終えるのを待つ", + EditHomeQuoteTitle = "一言を編集", + HomeWallpaperImportFailed = "壁紙をローカルへコピーできなかったため、元のソースを使用します", + ), + Privacy = YumeStrings_AppSettings_Privacy( + HideFromRecentsTitle = "履歴カードを隠す", + ), + ServiceSection = YumeStrings_AppSettings_ServiceSection( + TrafficNotificationTitle = "通信量通知を表示", + ExitUiWhenBackgroundTitle = "バックグラウンドで UI を解放", + SuperIslandTitle = "スーパーアイランド", + ShizukuTitle = "Shizuku 権限", + ShizukuNotRunning = "Shizuku をインストールして起動してください", + ShizukuPermissionRequired = "タップして Shizuku 権限を申請", + ShizukuReady = "Shizuku 許可済み、スーパーアイランドを利用できます", + ShizukuStatusUnavailable = "未実行", + ShizukuStatusPending = "権限未許可", + ShizukuStatusGranted = "許可済み", + BatteryOptimizationTitle = "バッテリー制限なし", + BatteryOptimizationAlreadyDisabled = "バッテリー最適化は既に無効です", + ), + Network = YumeStrings_AppSettings_Network( + CustomUserAgentTitle = "カスタム User-Agent", + CustomUserAgentSummaryDefault = "未設定、既定値を使用", + ), + WarningDialog = YumeStrings_AppSettings_WarningDialog( + Title = "警告", + ), + EditDialog = YumeStrings_AppSettings_EditDialog( + UserAgentTitle = "User-Agent を編集", + ), + Button = YumeStrings_AppSettings_Button( + Apply = "適用", + ), +) + +internal val RuYumeStrings_AppSettings: YumeStrings_AppSettings = YumeStrings_AppSettings( + Title = "Настройки приложения", + Section = YumeStrings_AppSettings_Section( + Behavior = "Поведение", + Interface = "Интерфейс", + Privacy = "Конфиденциальность", + Service = "Служба", + Network = "Сеть", + Navigation = "Навигация", + Home = "Главная", + ), + Behavior = YumeStrings_AppSettings_Behavior( + AutoStartTitle = "Автозапуск", + AutoUpdateOnStartTitle = "Обновлять при запуске", + ), + Interface = YumeStrings_AppSettings_Interface( + ThemeModeTitle = "Режим темы", + ThemeModeSummary = "Выберите стиль темы приложения", + ThemeModeSystem = "Как в системе", + ThemeModeLight = "Светлая", + ThemeModeDark = "Тёмная", + LanguageTitle = "Язык приложения", + LanguageSystem = "Как в системе", + LanguageChinese = "简体中文", + LanguageChineseTraditional = "繁體中文", + LanguageEnglish = "English", + LanguageJapanese = "日本語", + LanguageRussian = "Русский", + ColorThemeTitle = "Палитра темы", + ColorThemePickerTitle = "Выбрать цвет темы", + ColorThemeCodeLabel = "Код цвета темы (#RRGGBB)", + ColorThemeCustomSummary = "Текущий цвет темы: %s", + ThemeColorPolarityInvertTitle = "Инвертировать цвет переднего плана", + TopBarBlurTitle = "Размытие", + AutoHideNavbarTitle = "Автоскрытие панели навигации", + PageScaleTitle = "Масштаб страницы", + PageScaleDialogSummary = "80% - 120%", + PredictiveBackTitle = "Предиктивный жест назад", + PredictiveBackRestartSummary = "Вступит в силу при следующем запуске приложения", + PredictiveBackProgressTitle = "Амплитуда возврата", + ClassicHomeTitle = "Классическая главная", + SystemWallpaperTitle = "Установить системные обои", + CustomIconTitle = "Пользовательский значок приложения", + HomeQuoteTitle = "Цитата на главной", + HomeQuoteDefault = "На тихом маршруте ждать, пока облако закончит роуминг", + EditHomeQuoteTitle = "Изменить цитату", + HomeWallpaperImportFailed = "Не удалось скопировать обои локально; используется исходный источник", + ), + Privacy = YumeStrings_AppSettings_Privacy( + HideFromRecentsTitle = "Скрыть карточку в недавних", + ), + ServiceSection = YumeStrings_AppSettings_ServiceSection( + TrafficNotificationTitle = "Показывать уведомление о трафике", + ExitUiWhenBackgroundTitle = "Освобождать UI в фоне", + SuperIslandTitle = "Super Island", + ShizukuTitle = "Доступ через Shizuku", + ShizukuNotRunning = "Сначала установите и запустите Shizuku", + ShizukuPermissionRequired = "Нажмите, чтобы запросить разрешение Shizuku", + ShizukuReady = "Shizuku разрешён, Super Island готов", + ShizukuStatusUnavailable = "Недоступен", + ShizukuStatusPending = "Не разрешён", + ShizukuStatusGranted = "Разрешён", + BatteryOptimizationTitle = "Без ограничений батареи", + BatteryOptimizationAlreadyDisabled = "Оптимизация батареи уже отключена", + ), + Network = YumeStrings_AppSettings_Network( + CustomUserAgentTitle = "Свой User-Agent", + CustomUserAgentSummaryDefault = "Не задан, используется значение по умолчанию", + ), + WarningDialog = YumeStrings_AppSettings_WarningDialog( + Title = "Предупреждение", + ), + EditDialog = YumeStrings_AppSettings_EditDialog( + UserAgentTitle = "Изменить User-Agent", + ), + Button = YumeStrings_AppSettings_Button( + Apply = "Применить", + ), +) + diff --git a/locale/src/Component.kt b/locale/src/Component.kt new file mode 100644 index 000000000..08d550d7d --- /dev/null +++ b/locale/src/Component.kt @@ -0,0 +1,482 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Component: YumeStrings_Component = YumeStrings_Component( + ProfileCard = YumeStrings_Component_ProfileCard( + Update = "更新", + Export = "导出", + Edit = "编辑", + Delete = "删除", + RemoteSubscription = "远程订阅", + LocalFile = "本地文件", + LocalConfig = "本地配置文件", + ClickToUpdate = "点击更新获取订阅信息", + Traffic = "流量:%s / %s (%d%%)", + UsedTraffic = "已用:%s", + ExpireAt = "到期:%s (剩余%d 天)", + ExpireToday = "到期:今天", + Expired = "已过期:%s", + JustNow = "刚刚", + MinutesAgo = "%d 分钟前", + HoursAgo = "%d 小时前", + DaysAgo = "%d 天前", + ), + WebView = YumeStrings_Component_WebView( + InvalidUrl = "无效的 URL", + ), + Selector = YumeStrings_Component_Selector( + NotModify = "不修改", + Enable = "启用", + Disable = "禁用", + Replace = "替换", + Prepend = "前置", + Append = "后置", + Merge = "合并", + ), + Navigation = YumeStrings_Component_Navigation( + Back = "返回", + ), + Message = YumeStrings_Component_Message( + Confirm = "确定", + Hint = "提示", + Error = "错误", + Success = "成功", + ), + Button = YumeStrings_Component_Button( + Cancel = "取消", + Confirm = "确定", + Clear = "清除", + Copy = "复制", + ), + Flag = YumeStrings_Component_Flag( + ContentDescription = "%s 旗帜", + ), + Loading = YumeStrings_Component_Loading( + Starting = "启动中...", + ), + ConfigInput = YumeStrings_Component_ConfigInput( + PortLabel = "端口号 (留空表示不修改)", + CountItems = "%d 项", + ), + BottomBar = YumeStrings_Component_BottomBar( + Home = "首页", + Proxy = "代理", + Config = "配置", + Setting = "设置", + ), + Editor = YumeStrings_Component_Editor( + CountItems = "共 %d 项", + Action = YumeStrings_Component_Editor_Action( + Search = "搜索", + ), + Dialog = YumeStrings_Component_Editor_Dialog( + AddTitle = "添加条目", + EditTitle = "编辑条目", + ResetTitle = "重置确认", + ResetMessage = "清空所有条目并恢复为不修改状态?", + ), + Empty = YumeStrings_Component_Editor_Empty( + Title = "暂无条目", + Hint = "点击右上角按钮添加", + ), + Error = YumeStrings_Component_Editor_Error( + KeyEmpty = "键不能为空", + KeyExists = "键已存在", + ), + Rule = YumeStrings_Component_Editor_Rule( + Type = "规则类型", + Target = "目标", + Content = "规则内容", + Src = "源 IP", + NoResolve = "不解析", + TargetReject = "REJECT", + TargetDirect = "DIRECT", + TargetMatch = "MATCH", + ErrorContentRequired = "规则内容不能为空", + ), + ), +) + +internal val ZhYumeStrings_Component: YumeStrings_Component = YumeStrings_Component( + ProfileCard = YumeStrings_Component_ProfileCard( + Update = "更新", + Export = "匯出", + Edit = "編輯", + Delete = "刪除", + RemoteSubscription = "遠端訂閱", + LocalFile = "本機檔案", + LocalConfig = "本機設定檔", + ClickToUpdate = "點一下更新以取得訂閱資訊", + Traffic = "流量:%s / %s (%d%%)", + UsedTraffic = "已用:%s", + ExpireAt = "到期:%s (剩餘 %d 天)", + ExpireToday = "到期:今天", + Expired = "已過期:%s", + JustNow = "剛剛", + MinutesAgo = "%d 分鐘前", + HoursAgo = "%d 小時前", + DaysAgo = "%d 天前", + ), + WebView = YumeStrings_Component_WebView( + InvalidUrl = "無效的 URL", + ), + Selector = YumeStrings_Component_Selector( + NotModify = "不修改", + Enable = "啟用", + Disable = "停用", + Replace = "取代", + Prepend = "前置", + Append = "後置", + Merge = "合併", + ), + Navigation = YumeStrings_Component_Navigation( + Back = "返回", + ), + Message = YumeStrings_Component_Message( + Confirm = "確定", + Hint = "提示", + Error = "錯誤", + Success = "成功", + ), + Button = YumeStrings_Component_Button( + Cancel = "取消", + Confirm = "確定", + Clear = "清除", + Copy = "複製", + ), + Flag = YumeStrings_Component_Flag( + ContentDescription = "%s 旗幟", + ), + Loading = YumeStrings_Component_Loading( + Starting = "啟動中...", + ), + ConfigInput = YumeStrings_Component_ConfigInput( + PortLabel = "連接埠 (留空表示不修改)", + CountItems = "%d 項", + ), + BottomBar = YumeStrings_Component_BottomBar( + Home = "首頁", + Proxy = "代理", + Config = "設定檔", + Setting = "設定", + ), + Editor = YumeStrings_Component_Editor( + CountItems = "共 %d 項", + Action = YumeStrings_Component_Editor_Action( + Search = "搜尋", + ), + Dialog = YumeStrings_Component_Editor_Dialog( + AddTitle = "新增項目", + EditTitle = "編輯項目", + ResetTitle = "重設確認", + ResetMessage = "清空所有項目並恢復為不修改狀態?", + ), + Empty = YumeStrings_Component_Editor_Empty( + Title = "暫無項目", + Hint = "點右上角按鈕新增", + ), + Error = YumeStrings_Component_Editor_Error( + KeyEmpty = "鍵不能為空", + KeyExists = "鍵已存在", + ), + Rule = YumeStrings_Component_Editor_Rule( + Type = "規則類型", + Target = "目標", + Content = "規則內容", + Src = "來源 IP", + NoResolve = "不解析", + TargetReject = "REJECT", + TargetDirect = "DIRECT", + TargetMatch = "MATCH", + ErrorContentRequired = "規則內容不能為空", + ), + ), +) + +internal val EnYumeStrings_Component: YumeStrings_Component = YumeStrings_Component( + ProfileCard = YumeStrings_Component_ProfileCard( + Update = "Update", + Export = "Export", + Edit = "Edit", + Delete = "Delete", + RemoteSubscription = "Remote Subscription", + LocalFile = "Local File", + LocalConfig = "Local Configuration", + ClickToUpdate = "Click update to get subscription info", + Traffic = "Traffic: %s / %s (%d%%)", + UsedTraffic = "Used: %s", + ExpireAt = "Expires: %s (%d days left)", + ExpireToday = "Expires: Today", + Expired = "Expired: %s", + JustNow = "Just now", + MinutesAgo = "%d min ago", + HoursAgo = "%d hours ago", + DaysAgo = "%d days ago", + ), + WebView = YumeStrings_Component_WebView( + InvalidUrl = "Invalid URL", + ), + Selector = YumeStrings_Component_Selector( + NotModify = "Don't Modify", + Enable = "Enable", + Disable = "Disable", + Replace = "Replace", + Prepend = "Prepend", + Append = "Append", + Merge = "Merge", + ), + Navigation = YumeStrings_Component_Navigation( + Back = "Back", + ), + Message = YumeStrings_Component_Message( + Confirm = "Confirm", + Hint = "Hint", + Error = "Error", + Success = "Success", + ), + Button = YumeStrings_Component_Button( + Cancel = "Cancel", + Confirm = "Confirm", + Clear = "Clear", + Copy = "Copy", + ), + Flag = YumeStrings_Component_Flag( + ContentDescription = "%s flag", + ), + Loading = YumeStrings_Component_Loading( + Starting = "Starting...", + ), + ConfigInput = YumeStrings_Component_ConfigInput( + PortLabel = "Port (leave empty to not modify)", + CountItems = "%d items", + ), + BottomBar = YumeStrings_Component_BottomBar( + Home = "Home", + Proxy = "Proxy", + Config = "Config", + Setting = "Settings", + ), + Editor = YumeStrings_Component_Editor( + CountItems = "Total %d items", + Action = YumeStrings_Component_Editor_Action( + Search = "Search", + ), + Dialog = YumeStrings_Component_Editor_Dialog( + AddTitle = "Add Entry", + EditTitle = "Edit Entry", + ResetTitle = "Confirm Reset", + ResetMessage = "Clear all entries and restore to unmodified state?", + ), + Empty = YumeStrings_Component_Editor_Empty( + Title = "No Entries", + Hint = "Click top-right button to add", + ), + Error = YumeStrings_Component_Editor_Error( + KeyEmpty = "Key cannot be empty", + KeyExists = "Key already exists", + ), + Rule = YumeStrings_Component_Editor_Rule( + Type = "Rule Type", + Target = "Target", + Content = "Rule Content", + Src = "Src IP", + NoResolve = "No Resolve", + TargetReject = "REJECT", + TargetDirect = "DIRECT", + TargetMatch = "MATCH", + ErrorContentRequired = "Rule content cannot be empty", + ), + ), +) + +internal val JaYumeStrings_Component: YumeStrings_Component = YumeStrings_Component( + ProfileCard = YumeStrings_Component_ProfileCard( + Update = "更新", + Export = "エクスポート", + Edit = "編集", + Delete = "削除", + RemoteSubscription = "リモート購読", + LocalFile = "ローカルファイル", + LocalConfig = "ローカル設定", + ClickToUpdate = "更新をタップして購読情報を取得", + Traffic = "通信量: %s / %s (%d%%)", + UsedTraffic = "使用済み: %s", + ExpireAt = "期限: %s (残り %d 日)", + ExpireToday = "期限: 今日", + Expired = "期限切れ: %s", + JustNow = "たった今", + MinutesAgo = "%d 分前", + HoursAgo = "%d 時間前", + DaysAgo = "%d 日前", + ), + WebView = YumeStrings_Component_WebView( + InvalidUrl = "無効な URL", + ), + Selector = YumeStrings_Component_Selector( + NotModify = "変更しない", + Enable = "有効", + Disable = "無効", + Replace = "置換", + Prepend = "先頭に追加", + Append = "末尾に追加", + Merge = "マージ", + ), + Navigation = YumeStrings_Component_Navigation( + Back = "戻る", + ), + Message = YumeStrings_Component_Message( + Confirm = "確認", + Hint = "ヒント", + Error = "エラー", + Success = "成功", + ), + Button = YumeStrings_Component_Button( + Cancel = "キャンセル", + Confirm = "確定", + Clear = "クリア", + Copy = "コピー", + ), + Flag = YumeStrings_Component_Flag( + ContentDescription = "%s の旗", + ), + Loading = YumeStrings_Component_Loading( + Starting = "開始中...", + ), + ConfigInput = YumeStrings_Component_ConfigInput( + PortLabel = "ポート (空欄で変更しない)", + CountItems = "%d 件", + ), + BottomBar = YumeStrings_Component_BottomBar( + Home = "ホーム", + Proxy = "プロキシ", + Config = "設定", + Setting = "設定", + ), + Editor = YumeStrings_Component_Editor( + CountItems = "合計 %d 件", + Action = YumeStrings_Component_Editor_Action( + Search = "検索", + ), + Dialog = YumeStrings_Component_Editor_Dialog( + AddTitle = "項目を追加", + EditTitle = "項目を編集", + ResetTitle = "リセットの確認", + ResetMessage = "すべての項目を消去し、未変更状態に戻しますか?", + ), + Empty = YumeStrings_Component_Editor_Empty( + Title = "項目がありません", + Hint = "右上のボタンで追加", + ), + Error = YumeStrings_Component_Editor_Error( + KeyEmpty = "キーは空にできません", + KeyExists = "キーは既に存在します", + ), + Rule = YumeStrings_Component_Editor_Rule( + Type = "ルール種別", + Target = "ターゲット", + Content = "ルール内容", + Src = "送信元 IP", + NoResolve = "解決しない", + TargetReject = "REJECT", + TargetDirect = "DIRECT", + TargetMatch = "MATCH", + ErrorContentRequired = "ルール内容は空にできません", + ), + ), +) + +internal val RuYumeStrings_Component: YumeStrings_Component = YumeStrings_Component( + ProfileCard = YumeStrings_Component_ProfileCard( + Update = "Обновить", + Export = "Экспорт", + Edit = "Изменить", + Delete = "Удалить", + RemoteSubscription = "Удалённая подписка", + LocalFile = "Локальный файл", + LocalConfig = "Локальная конфигурация", + ClickToUpdate = "Нажмите «Обновить», чтобы получить сведения о подписке", + Traffic = "Трафик: %s / %s (%d%%)", + UsedTraffic = "Использовано: %s", + ExpireAt = "Истекает: %s (осталось %d дн.)", + ExpireToday = "Истекает: сегодня", + Expired = "Истекло: %s", + JustNow = "Только что", + MinutesAgo = "%d мин. назад", + HoursAgo = "%d ч. назад", + DaysAgo = "%d дн. назад", + ), + WebView = YumeStrings_Component_WebView( + InvalidUrl = "Недействительный URL", + ), + Selector = YumeStrings_Component_Selector( + NotModify = "Не изменять", + Enable = "Включить", + Disable = "Отключить", + Replace = "Заменить", + Prepend = "В начало", + Append = "В конец", + Merge = "Объединить", + ), + Navigation = YumeStrings_Component_Navigation( + Back = "Назад", + ), + Message = YumeStrings_Component_Message( + Confirm = "Подтвердить", + Hint = "Подсказка", + Error = "Ошибка", + Success = "Успешно", + ), + Button = YumeStrings_Component_Button( + Cancel = "Отмена", + Confirm = "Подтвердить", + Clear = "Очистить", + Copy = "Копировать", + ), + Flag = YumeStrings_Component_Flag( + ContentDescription = "Флаг %s", + ), + Loading = YumeStrings_Component_Loading( + Starting = "Запуск...", + ), + ConfigInput = YumeStrings_Component_ConfigInput( + PortLabel = "Порт (оставьте пустым, чтобы не менять)", + CountItems = "Элементов: %d", + ), + BottomBar = YumeStrings_Component_BottomBar( + Home = "Главная", + Proxy = "Прокси", + Config = "Профили", + Setting = "Настройки", + ), + Editor = YumeStrings_Component_Editor( + CountItems = "Всего %d", + Action = YumeStrings_Component_Editor_Action( + Search = "Поиск", + ), + Dialog = YumeStrings_Component_Editor_Dialog( + AddTitle = "Добавить запись", + EditTitle = "Изменить запись", + ResetTitle = "Подтвердить сброс", + ResetMessage = "Очистить все записи и вернуть неизменённое состояние?", + ), + Empty = YumeStrings_Component_Editor_Empty( + Title = "Нет записей", + Hint = "Нажмите кнопку справа сверху, чтобы добавить", + ), + Error = YumeStrings_Component_Editor_Error( + KeyEmpty = "Ключ не может быть пустым", + KeyExists = "Ключ уже существует", + ), + Rule = YumeStrings_Component_Editor_Rule( + Type = "Тип правила", + Target = "Цель", + Content = "Содержимое правила", + Src = "IP источника", + NoResolve = "Не разрешать", + TargetReject = "REJECT", + TargetDirect = "DIRECT", + TargetMatch = "MATCH", + ErrorContentRequired = "Содержимое правила не может быть пустым", + ), + ), +) + diff --git a/locale/src/Connection.kt b/locale/src/Connection.kt new file mode 100644 index 000000000..84107931e --- /dev/null +++ b/locale/src/Connection.kt @@ -0,0 +1,272 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Connection: YumeStrings_Connection = YumeStrings_Connection( + Title = "连接", + Summary = "查看当前活动连接", + Tab = YumeStrings_Connection_Tab( + Active = "活动中", + Closed = "已关闭", + ), + Search = "搜索", + SearchHint = "搜索主机、进程...", + SortBy = "排序:", + Sort = YumeStrings_Connection_Sort( + Time = "时间", + Upload = "上传", + Download = "下载", + Host = "主机", + ), + ChainCount = "x%d", + RelativeTime = YumeStrings_Connection_RelativeTime( + JustNow = "刚刚", + MinutesAgo = "%d 分钟前", + HoursAgo = "%d 小时前", + DaysAgo = "%d 天前", + Date = "%02d-%02d", + ), + Detail = YumeStrings_Connection_Detail( + Title = "连接详情", + Action = YumeStrings_Connection_Detail_Action( + Interrupting = "正在打断连接...", + Interrupt = "打断连接", + ), + Section = YumeStrings_Connection_Detail_Section( + Info = "连接信息", + Rule = "规则", + Chain = "代理链路", + ), + Label = YumeStrings_Connection_Detail_Label( + Host = "目标主机", + Protocol = "协议", + Process = "进程", + SourceAddress = "源地址", + DestinationAddress = "目标地址", + Duration = "连接时长", + Upload = "上传", + Download = "下载", + Type = "类型", + Content = "内容", + Chain = "链路", + ), + ), + Loading = "加载中...", + Empty = "暂无活动连接", + NoResults = "没有匹配的连接", +) + +internal val ZhYumeStrings_Connection: YumeStrings_Connection = YumeStrings_Connection( + Title = "連線", + Summary = "檢視目前作用中連線", + Tab = YumeStrings_Connection_Tab( + Active = "作用中", + Closed = "已關閉", + ), + Search = "搜尋", + SearchHint = "搜尋主機、程序...", + SortBy = "排序:", + Sort = YumeStrings_Connection_Sort( + Time = "時間", + Upload = "上傳", + Download = "下載", + Host = "主機", + ), + ChainCount = "x%d", + RelativeTime = YumeStrings_Connection_RelativeTime( + JustNow = "剛剛", + MinutesAgo = "%d 分鐘前", + HoursAgo = "%d 小時前", + DaysAgo = "%d 天前", + Date = "%02d-%02d", + ), + Detail = YumeStrings_Connection_Detail( + Title = "連線詳情", + Action = YumeStrings_Connection_Detail_Action( + Interrupting = "正在中斷連線...", + Interrupt = "中斷連線", + ), + Section = YumeStrings_Connection_Detail_Section( + Info = "連線資訊", + Rule = "規則", + Chain = "代理鏈路", + ), + Label = YumeStrings_Connection_Detail_Label( + Host = "目標主機", + Protocol = "協定", + Process = "程序", + SourceAddress = "來源位址", + DestinationAddress = "目標位址", + Duration = "連線時長", + Upload = "上傳", + Download = "下載", + Type = "類型", + Content = "內容", + Chain = "鏈路", + ), + ), + Loading = "載入中...", + Empty = "暫無作用中連線", + NoResults = "沒有符合的連線", +) + +internal val EnYumeStrings_Connection: YumeStrings_Connection = YumeStrings_Connection( + Title = "Connections", + Summary = "View active connections", + Tab = YumeStrings_Connection_Tab( + Active = "Active", + Closed = "Closed", + ), + Search = "Search", + SearchHint = "Search host, process...", + SortBy = "Sort by:", + Sort = YumeStrings_Connection_Sort( + Time = "Time", + Upload = "Upload", + Download = "Download", + Host = "Host", + ), + ChainCount = "x%d", + RelativeTime = YumeStrings_Connection_RelativeTime( + JustNow = "Just now", + MinutesAgo = "%d minutes ago", + HoursAgo = "%d hours ago", + DaysAgo = "%d days ago", + Date = "%02d-%02d", + ), + Detail = YumeStrings_Connection_Detail( + Title = "Connection Details", + Action = YumeStrings_Connection_Detail_Action( + Interrupting = "Interrupting connection...", + Interrupt = "Interrupt connection", + ), + Section = YumeStrings_Connection_Detail_Section( + Info = "Connection Info", + Rule = "Rule", + Chain = "Proxy Chain", + ), + Label = YumeStrings_Connection_Detail_Label( + Host = "Host", + Protocol = "Protocol", + Process = "Process", + SourceAddress = "Source Address", + DestinationAddress = "Destination Address", + Duration = "Duration", + Upload = "Upload", + Download = "Download", + Type = "Type", + Content = "Content", + Chain = "Chain", + ), + ), + Loading = "Loading...", + Empty = "No active connections", + NoResults = "No matching connections", +) + +internal val JaYumeStrings_Connection: YumeStrings_Connection = YumeStrings_Connection( + Title = "接続", + Summary = "アクティブな接続を表示", + Tab = YumeStrings_Connection_Tab( + Active = "アクティブ", + Closed = "終了済み", + ), + Search = "検索", + SearchHint = "ホスト、プロセスを検索...", + SortBy = "並び替え:", + Sort = YumeStrings_Connection_Sort( + Time = "時間", + Upload = "アップロード", + Download = "ダウンロード", + Host = "ホスト", + ), + ChainCount = "x%d", + RelativeTime = YumeStrings_Connection_RelativeTime( + JustNow = "たった今", + MinutesAgo = "%d 分前", + HoursAgo = "%d 時間前", + DaysAgo = "%d 日前", + Date = "%02d-%02d", + ), + Detail = YumeStrings_Connection_Detail( + Title = "接続の詳細", + Action = YumeStrings_Connection_Detail_Action( + Interrupting = "接続を切断中...", + Interrupt = "接続を切断", + ), + Section = YumeStrings_Connection_Detail_Section( + Info = "接続情報", + Rule = "ルール", + Chain = "プロキシチェーン", + ), + Label = YumeStrings_Connection_Detail_Label( + Host = "ホスト", + Protocol = "プロトコル", + Process = "プロセス", + SourceAddress = "送信元アドレス", + DestinationAddress = "宛先アドレス", + Duration = "接続時間", + Upload = "アップロード", + Download = "ダウンロード", + Type = "種類", + Content = "内容", + Chain = "チェーン", + ), + ), + Loading = "読み込み中...", + Empty = "アクティブな接続はありません", + NoResults = "一致する接続がありません", +) + +internal val RuYumeStrings_Connection: YumeStrings_Connection = YumeStrings_Connection( + Title = "Соединения", + Summary = "Просмотр активных соединений", + Tab = YumeStrings_Connection_Tab( + Active = "Активные", + Closed = "Закрытые", + ), + Search = "Поиск", + SearchHint = "Поиск хоста, процесса...", + SortBy = "Сортировка:", + Sort = YumeStrings_Connection_Sort( + Time = "Время", + Upload = "Отдача", + Download = "Загрузка", + Host = "Хост", + ), + ChainCount = "x%d", + RelativeTime = YumeStrings_Connection_RelativeTime( + JustNow = "Только что", + MinutesAgo = "%d мин. назад", + HoursAgo = "%d ч. назад", + DaysAgo = "%d дн. назад", + Date = "%02d-%02d", + ), + Detail = YumeStrings_Connection_Detail( + Title = "Сведения о соединении", + Action = YumeStrings_Connection_Detail_Action( + Interrupting = "Прерывание соединения...", + Interrupt = "Прервать соединение", + ), + Section = YumeStrings_Connection_Detail_Section( + Info = "Информация о соединении", + Rule = "Правило", + Chain = "Цепочка прокси", + ), + Label = YumeStrings_Connection_Detail_Label( + Host = "Хост", + Protocol = "Протокол", + Process = "Процесс", + SourceAddress = "Адрес источника", + DestinationAddress = "Адрес назначения", + Duration = "Длительность", + Upload = "Отдача", + Download = "Загрузка", + Type = "Тип", + Content = "Содержимое", + Chain = "Цепочка", + ), + ), + Loading = "Загрузка...", + Empty = "Нет активных соединений", + NoResults = "Нет подходящих соединений", +) + diff --git a/locale/src/Editor.kt b/locale/src/Editor.kt new file mode 100644 index 000000000..bc8917144 --- /dev/null +++ b/locale/src/Editor.kt @@ -0,0 +1,122 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Editor: YumeStrings_Editor = YumeStrings_Editor( + Title = YumeStrings_Editor_Title( + Config = "编辑配置", + Preview = "配置预览", + Override = "编辑覆写配置", + Profile = "编辑订阅配置", + ), + Action = YumeStrings_Editor_Action( + Format = "格式化", + Save = "保存", + ), + Message = YumeStrings_Editor_Message( + FormatSuccess = "格式化成功", + FormatSkipped = "格式化失败或无需格式化", + SaveFailed = "保存失败", + ), + Discard = YumeStrings_Editor_Discard( + Title = "未保存的修改", + Summary = "当前有未保存的修改,确定要放弃吗?", + Confirm = "放弃", + ), + JsonSubtitle = "使用 JSON 格式编辑", +) + +internal val ZhYumeStrings_Editor: YumeStrings_Editor = YumeStrings_Editor( + Title = YumeStrings_Editor_Title( + Config = "編輯設定", + Preview = "設定預覽", + Override = "編輯覆寫設定", + Profile = "編輯訂閱設定", + ), + Action = YumeStrings_Editor_Action( + Format = "格式化", + Save = "儲存", + ), + Message = YumeStrings_Editor_Message( + FormatSuccess = "格式化成功", + FormatSkipped = "格式化失敗或無需格式化", + SaveFailed = "儲存失敗", + ), + Discard = YumeStrings_Editor_Discard( + Title = "未儲存的修改", + Summary = "目前有未儲存的修改,確定要放棄嗎?", + Confirm = "放棄", + ), + JsonSubtitle = "使用 JSON 格式編輯", +) + +internal val EnYumeStrings_Editor: YumeStrings_Editor = YumeStrings_Editor( + Title = YumeStrings_Editor_Title( + Config = "Edit configuration", + Preview = "Configuration preview", + Override = "Edit override configuration", + Profile = "Edit profile configuration", + ), + Action = YumeStrings_Editor_Action( + Format = "Format", + Save = "Save", + ), + Message = YumeStrings_Editor_Message( + FormatSuccess = "Formatted", + FormatSkipped = "Formatting failed or no changes were needed", + SaveFailed = "Save failed", + ), + Discard = YumeStrings_Editor_Discard( + Title = "Unsaved changes", + Summary = "There are unsaved changes. Discard them?", + Confirm = "Discard", + ), + JsonSubtitle = "Edit as JSON", +) + +internal val JaYumeStrings_Editor: YumeStrings_Editor = YumeStrings_Editor( + Title = YumeStrings_Editor_Title( + Config = "設定を編集", + Preview = "設定プレビュー", + Override = "オーバーライド設定を編集", + Profile = "プロファイル設定を編集", + ), + Action = YumeStrings_Editor_Action( + Format = "整形", + Save = "保存", + ), + Message = YumeStrings_Editor_Message( + FormatSuccess = "整形しました", + FormatSkipped = "整形に失敗したか、変更は不要です", + SaveFailed = "保存に失敗しました", + ), + Discard = YumeStrings_Editor_Discard( + Title = "未保存の変更", + Summary = "未保存の変更があります.破棄しますか?", + Confirm = "破棄", + ), + JsonSubtitle = "JSON 形式で編集", +) + +internal val RuYumeStrings_Editor: YumeStrings_Editor = YumeStrings_Editor( + Title = YumeStrings_Editor_Title( + Config = "Изменить конфигурацию", + Preview = "Предпросмотр конфигурации", + Override = "Изменить переопределение", + Profile = "Изменить профиль", + ), + Action = YumeStrings_Editor_Action( + Format = "Форматировать", + Save = "Сохранить", + ), + Message = YumeStrings_Editor_Message( + FormatSuccess = "Форматирование выполнено", + FormatSkipped = "Форматирование не удалось или не требуется", + SaveFailed = "Ошибка сохранения", + ), + Discard = YumeStrings_Editor_Discard( + Title = "Несохранённые изменения", + Summary = "Есть несохранённые изменения. Отменить их?", + Confirm = "Отменить", + ), + JsonSubtitle = "Редактировать в формате JSON", +) + diff --git a/locale/src/EnStrings.kt b/locale/src/EnStrings.kt new file mode 100644 index 000000000..6b44f41cb --- /dev/null +++ b/locale/src/EnStrings.kt @@ -0,0 +1,30 @@ +package com.github.yumeyucca.yumebox.core.locale + +import cafe.adriel.lyricist.LyricistStrings + +@LyricistStrings(languageTag = "en") +public val EnStrings: YumeStrings = YumeStrings( + About = EnYumeStrings_About, + AccessControl = EnYumeStrings_AccessControl, + AppSettings = EnYumeStrings_AppSettings, + Component = EnYumeStrings_Component, + Connection = EnYumeStrings_Connection, + Editor = EnYumeStrings_Editor, + Feature = EnYumeStrings_Feature, + Home = EnYumeStrings_Home, + Log = EnYumeStrings_Log, + MetaFeature = EnYumeStrings_MetaFeature, + NetworkSettings = EnYumeStrings_NetworkSettings, + Onboarding = EnYumeStrings_Onboarding, + OpenSourceLicenses = EnYumeStrings_OpenSourceLicenses, + Override = EnYumeStrings_Override, + ProfilesPage = EnYumeStrings_ProfilesPage, + ProfilesVM = EnYumeStrings_ProfilesVM, + Providers = EnYumeStrings_Providers, + Proxy = EnYumeStrings_Proxy, + Rules = EnYumeStrings_Rules, + Service = EnYumeStrings_Service, + Settings = EnYumeStrings_Settings, + TrafficStatistics = EnYumeStrings_TrafficStatistics, + Util = EnYumeStrings_Util, +) diff --git a/locale/src/Feature.kt b/locale/src/Feature.kt new file mode 100644 index 000000000..4ec4b041a --- /dev/null +++ b/locale/src/Feature.kt @@ -0,0 +1,422 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Feature: YumeStrings_Feature = YumeStrings_Feature( + Title = "功能管理", + ServiceStatus = YumeStrings_Feature_ServiceStatus( + Section = "服务状态", + SwitchStartSubStore = "启动 Sub-Store 服务", + OpenSubStorePanel = "打开 Sub-Store 面板", + AllowLan = "允许局域网访问", + AutoCloseModeTitle = "自动关闭时间", + AutoCloseModeAlwaysOn = "常开", + AutoCloseMode5Min = "5 分钟", + AutoCloseMode10Min = "10 分钟", + AutoClosed = "Sub-Store 已自动关闭", + ), + Panel = YumeStrings_Feature_Panel( + Section = "面板选择", + SelectPanel = "选择面板", + OpenMode = "面板协议", + OpenPanel = "打开外部面板", + Unknown = "未知面板", + CreateShortcut = "在桌面创建快捷方式", + CreateShortcutSummary = "将当前面板添加到桌面,使用网站图标,点击直接打开", + ShortcutTitle = "创建快捷方式", + ShortcutName = "名称", + ShortcutPickIcon = "选择图标", + ShortcutResetIcon = "恢复默认", + ), + RemoteController = YumeStrings_Feature_RemoteController( + Section = "外部控制", + ModeTitle = "外部控制器模式", + ControlBackend = "控制后端", + AddBackend = "添加后端", + EditBackend = "编辑后端", + Name = "名称", + Host = "IP / Host", + Port = "端口", + Secret = "密钥(可留空)", + Protocol = "协议", + PortRangeError = "端口范围必须是 1-65535", + Connected = "连接成功:模式 %s", + ConnectionFailed = "连接失败:%s", + Delete = "删除", + ), + SubStore = YumeStrings_Feature_SubStore( + Section = "Sub-Store 资源", + JavetLibraryReady = "运行库已就绪", + JavetLibraryDownload = "下载安装运行库", + JavetAvailable = "点击检查更新", + DownloadHint = "点击下载安装运行库", + JavetDownloadSuccess = "运行库安装完成", + JavetDownloadFailed = "运行库安装失败", + DownloadResources = "下载资源", + DownloadResourcesSummary = "下载资源文件", + Not32Bit = "Sub-Store 不支持 32 位设备", + DownloadSubStoreFirst = "请先下载 Sub-Store 资源", + JavetNotReady = "请先下载安装运行库", + FrontendDownloadSuccess = "Sub-Store 前端下载完成", + FrontendDownloadFailed = "Sub-Store 前端下载失败", + BackendDownloadSuccess = "Sub-Store 后端下载完成", + BackendDownloadFailed = "Sub-Store 后端下载失败", + DownloadError = "下载出错:%s", + ), + BackupRestore = YumeStrings_Feature_BackupRestore( + Section = "数据备份", + ExportTitle = "导出备份", + ExportSummary = "导出设置、订阅、覆写和 Sub-Store 数据", + RestoreTitle = "恢复备份", + RestoreSummary = "选择备份文件并覆盖当前配置", + Cancel = "取消", + RestoreDialog = YumeStrings_Feature_BackupRestore_RestoreDialog( + Title = "恢复备份?", + Message = "恢复会停止代理和 Sub-Store,并覆盖当前设置、订阅、覆写和 Sub-Store 数据.", + ), + Message = YumeStrings_Feature_BackupRestore_Message( + ExportSuccess = "备份导出完成", + RestoreSuccess = "恢复完成,建议重启应用以刷新全部界面", + ), + Error = YumeStrings_Feature_BackupRestore_Error( + OpenOutputFailed = "无法写入备份文件", + OpenInputFailed = "无法读取备份文件", + OperationFailed = "操作失败:%s", + ), + ), +) + +internal val ZhYumeStrings_Feature: YumeStrings_Feature = YumeStrings_Feature( + Title = "功能管理", + ServiceStatus = YumeStrings_Feature_ServiceStatus( + Section = "服務狀態", + SwitchStartSubStore = "啟動 Sub-Store 服務", + OpenSubStorePanel = "開啟 Sub-Store 面板", + AllowLan = "允許區域網路存取", + AutoCloseModeTitle = "自動關閉時間", + AutoCloseModeAlwaysOn = "常開", + AutoCloseMode5Min = "5 分鐘", + AutoCloseMode10Min = "10 分鐘", + AutoClosed = "Sub-Store 已自動關閉", + ), + Panel = YumeStrings_Feature_Panel( + Section = "面板選擇", + SelectPanel = "選擇面板", + OpenMode = "面板通訊協定", + OpenPanel = "開啟外部面板", + Unknown = "未知面板", + CreateShortcut = "在桌面建立捷徑", + CreateShortcutSummary = "將目前面板加入桌面,使用網站圖示", + ShortcutTitle = "建立捷徑", + ShortcutName = "名稱", + ShortcutPickIcon = "選擇圖示", + ShortcutResetIcon = "重設", + ), + RemoteController = YumeStrings_Feature_RemoteController( + Section = "外部控制", + ModeTitle = "外部控制器模式", + ControlBackend = "控制後端", + AddBackend = "新增後端", + EditBackend = "編輯後端", + Name = "名稱", + Host = "IP / 主機", + Port = "連接埠", + Secret = "密鑰(可留空)", + Protocol = "通訊協定", + PortRangeError = "連接埠範圍必須是 1-65535", + Connected = "連線成功:模式 %s", + ConnectionFailed = "連線失敗:%s", + Delete = "刪除", + ), + SubStore = YumeStrings_Feature_SubStore( + Section = "Sub-Store 資源", + JavetLibraryReady = "執行階段已就緒", + JavetLibraryDownload = "下載並安裝執行階段", + JavetAvailable = "點一下檢查更新", + DownloadHint = "點一下下載並安裝執行階段", + JavetDownloadSuccess = "執行階段安裝完成", + JavetDownloadFailed = "執行階段安裝失敗", + DownloadResources = "下載資源", + DownloadResourcesSummary = "下載資源檔案", + Not32Bit = "Sub-Store 不支援 32 位元裝置", + DownloadSubStoreFirst = "請先下載 Sub-Store 資源", + JavetNotReady = "請先下載並安裝執行階段", + FrontendDownloadSuccess = "Sub-Store 前端下載完成", + FrontendDownloadFailed = "Sub-Store 前端下載失敗", + BackendDownloadSuccess = "Sub-Store 後端下載完成", + BackendDownloadFailed = "Sub-Store 後端下載失敗", + DownloadError = "下載出錯:%s", + ), + BackupRestore = YumeStrings_Feature_BackupRestore( + Section = "資料備份", + ExportTitle = "匯出備份", + ExportSummary = "匯出設定、訂閱、覆寫與 Sub-Store 資料", + RestoreTitle = "還原備份", + RestoreSummary = "選擇備份檔案並覆蓋目前設定", + Cancel = "取消", + RestoreDialog = YumeStrings_Feature_BackupRestore_RestoreDialog( + Title = "還原備份?", + Message = "還原會停止代理與 Sub-Store,並覆蓋目前設定、訂閱、覆寫與 Sub-Store 資料.", + ), + Message = YumeStrings_Feature_BackupRestore_Message( + ExportSuccess = "備份匯出完成", + RestoreSuccess = "還原完成,建議重新啟動應用以重新整理全部介面", + ), + Error = YumeStrings_Feature_BackupRestore_Error( + OpenOutputFailed = "無法寫入備份檔案", + OpenInputFailed = "無法讀取備份檔案", + OperationFailed = "操作失敗:%s", + ), + ), +) + +internal val EnYumeStrings_Feature: YumeStrings_Feature = YumeStrings_Feature( + Title = "Feature Management", + ServiceStatus = YumeStrings_Feature_ServiceStatus( + Section = "Service Status", + SwitchStartSubStore = "Start Sub-Store Service", + OpenSubStorePanel = "Open Sub-Store Panel", + AllowLan = "Allow LAN Access", + AutoCloseModeTitle = "Auto-close timer", + AutoCloseModeAlwaysOn = "Always On", + AutoCloseMode5Min = "5 minutes", + AutoCloseMode10Min = "10 minutes", + AutoClosed = "Sub-Store auto closed", + ), + Panel = YumeStrings_Feature_Panel( + Section = "Panel Selection", + SelectPanel = "Select Panel", + OpenMode = "Panel protocol", + OpenPanel = "Open external panel", + Unknown = "Unknown Panel", + CreateShortcut = "Create desktop shortcut", + CreateShortcutSummary = "Add the current panel to the home screen with the site icon", + ShortcutTitle = "Create Shortcut", + ShortcutName = "Name", + ShortcutPickIcon = "Pick Icon", + ShortcutResetIcon = "Reset", + ), + RemoteController = YumeStrings_Feature_RemoteController( + Section = "External Control", + ModeTitle = "External Controller Mode", + ControlBackend = "Control Backend", + AddBackend = "Add Backend", + EditBackend = "Edit Backend", + Name = "Name", + Host = "IP / Host", + Port = "Port", + Secret = "Secret (optional)", + Protocol = "Protocol", + PortRangeError = "Port must be in range 1-65535", + Connected = "Connected: mode %s", + ConnectionFailed = "Connection failed: %s", + Delete = "Delete", + ), + SubStore = YumeStrings_Feature_SubStore( + Section = "Sub-Store Resources", + JavetLibraryReady = "Runtime Ready", + JavetLibraryDownload = "Download and Install Runtime", + JavetAvailable = "Check for updates", + DownloadHint = "Download and install runtime", + JavetDownloadSuccess = "Runtime installed", + JavetDownloadFailed = "Runtime installation failed", + DownloadResources = "Download Resources", + DownloadResourcesSummary = "Download resource files", + Not32Bit = "Sub-Store does not support 32-bit devices", + DownloadSubStoreFirst = "Please download Sub-Store resources first", + JavetNotReady = "Download and install runtime first", + FrontendDownloadSuccess = "Sub-Store frontend downloaded", + FrontendDownloadFailed = "Sub-Store frontend download failed", + BackendDownloadSuccess = "Sub-Store backend downloaded", + BackendDownloadFailed = "Sub-Store backend download failed", + DownloadError = "Download error: %s", + ), + BackupRestore = YumeStrings_Feature_BackupRestore( + Section = "Data Backup", + ExportTitle = "Export Backup", + ExportSummary = "Export settings, profiles, overrides, and Sub-Store data", + RestoreTitle = "Restore Backup", + RestoreSummary = "Pick a backup file and replace current configuration", + Cancel = "Cancel", + RestoreDialog = YumeStrings_Feature_BackupRestore_RestoreDialog( + Title = "Restore backup?", + Message = "Restore stops the proxy and Sub-Store, then replaces current settings, profiles, overrides, and Sub-Store data.", + ), + Message = YumeStrings_Feature_BackupRestore_Message( + ExportSuccess = "Backup exported successfully.", + RestoreSuccess = "Restore complete. Restart the app to refresh all screens.", + ), + Error = YumeStrings_Feature_BackupRestore_Error( + OpenOutputFailed = "Unable to write backup file", + OpenInputFailed = "Unable to read backup file", + OperationFailed = "Operation failed: %s", + ), + ), +) + +internal val JaYumeStrings_Feature: YumeStrings_Feature = YumeStrings_Feature( + Title = "機能管理", + ServiceStatus = YumeStrings_Feature_ServiceStatus( + Section = "サービス状態", + SwitchStartSubStore = "Sub-Store サービスを開始", + OpenSubStorePanel = "Sub-Store パネルを開く", + AllowLan = "LAN アクセスを許可", + AutoCloseModeTitle = "自動クローズタイマー", + AutoCloseModeAlwaysOn = "常時オン", + AutoCloseMode5Min = "5 分", + AutoCloseMode10Min = "10 分", + AutoClosed = "Sub-Store を自動クローズしました", + ), + Panel = YumeStrings_Feature_Panel( + Section = "パネル選択", + SelectPanel = "パネルを選択", + OpenMode = "パネルプロトコル", + OpenPanel = "外部パネルを開く", + Unknown = "不明なパネル", + CreateShortcut = "デスクトップショートカットを作成", + CreateShortcutSummary = "現在のパネルをホーム画面に追加し、サイトアイコンを使用", + ShortcutTitle = "ショートカットを作成", + ShortcutName = "名前", + ShortcutPickIcon = "アイコンを選択", + ShortcutResetIcon = "リセット", + ), + RemoteController = YumeStrings_Feature_RemoteController( + Section = "外部制御", + ModeTitle = "外部コントローラーモード", + ControlBackend = "制御バックエンド", + AddBackend = "バックエンドを追加", + EditBackend = "バックエンドを編集", + Name = "名前", + Host = "IP / ホスト", + Port = "ポート", + Secret = "シークレット(任意)", + Protocol = "プロトコル", + PortRangeError = "ポートは 1-65535 の範囲である必要があります", + Connected = "接続しました:モード %s", + ConnectionFailed = "接続に失敗しました:%s", + Delete = "削除", + ), + SubStore = YumeStrings_Feature_SubStore( + Section = "Sub-Store リソース", + JavetLibraryReady = "ランタイムの準備完了", + JavetLibraryDownload = "ランタイムをダウンロードしてインストール", + JavetAvailable = "更新を確認", + DownloadHint = "タップしてランタイムをインストール", + JavetDownloadSuccess = "ランタイムをインストールしました", + JavetDownloadFailed = "ランタイムのインストールに失敗しました", + DownloadResources = "リソースをダウンロード", + DownloadResourcesSummary = "リソースファイルをダウンロード", + Not32Bit = "Sub-Store は 32 ビット端末に対応していません", + DownloadSubStoreFirst = "先に Sub-Store リソースをダウンロードしてください", + JavetNotReady = "先にランタイムをインストールしてください", + FrontendDownloadSuccess = "Sub-Store フロントエンドのダウンロードが完了しました", + FrontendDownloadFailed = "Sub-Store フロントエンドのダウンロードに失敗しました", + BackendDownloadSuccess = "Sub-Store バックエンドのダウンロードが完了しました", + BackendDownloadFailed = "Sub-Store バックエンドのダウンロードに失敗しました", + DownloadError = "ダウンロードエラー: %s", + ), + BackupRestore = YumeStrings_Feature_BackupRestore( + Section = "データバックアップ", + ExportTitle = "バックアップを書き出し", + ExportSummary = "設定、プロファイル、上書き、Sub-Store データを書き出します", + RestoreTitle = "バックアップを復元", + RestoreSummary = "バックアップファイルを選び、現在の設定を置き換えます", + Cancel = "キャンセル", + RestoreDialog = YumeStrings_Feature_BackupRestore_RestoreDialog( + Title = "バックアップを復元しますか?", + Message = "復元するとプロキシと Sub-Store が停止し、現在の設定、プロファイル、上書き、Sub-Store データが置き換えられます.", + ), + Message = YumeStrings_Feature_BackupRestore_Message( + ExportSuccess = "バックアップをエクスポートしました.", + RestoreSuccess = "復元が完了しました.すべての画面を更新するにはアプリを再起動してください.", + ), + Error = YumeStrings_Feature_BackupRestore_Error( + OpenOutputFailed = "バックアップファイルを書き込めません", + OpenInputFailed = "バックアップファイルを読み込めません", + OperationFailed = "操作に失敗しました: %s", + ), + ), +) + +internal val RuYumeStrings_Feature: YumeStrings_Feature = YumeStrings_Feature( + Title = "Управление функциями", + ServiceStatus = YumeStrings_Feature_ServiceStatus( + Section = "Состояние службы", + SwitchStartSubStore = "Запустить службу Sub-Store", + OpenSubStorePanel = "Открыть панель Sub-Store", + AllowLan = "Разрешить доступ по LAN", + AutoCloseModeTitle = "Таймер автозакрытия", + AutoCloseModeAlwaysOn = "Всегда включено", + AutoCloseMode5Min = "5 минут", + AutoCloseMode10Min = "10 минут", + AutoClosed = "Sub-Store автоматически закрыт", + ), + Panel = YumeStrings_Feature_Panel( + Section = "Выбор панели", + SelectPanel = "Выбрать панель", + OpenMode = "Протокол панели", + OpenPanel = "Открыть внешнюю панель", + Unknown = "Неизвестная панель", + CreateShortcut = "Создать ярлык на рабочем столе", + CreateShortcutSummary = "Добавить текущую панель на главный экран с иконкой сайта", + ShortcutTitle = "Создать ярлык", + ShortcutName = "Имя", + ShortcutPickIcon = "Выбрать иконку", + ShortcutResetIcon = "Сбросить", + ), + RemoteController = YumeStrings_Feature_RemoteController( + Section = "Внешнее управление", + ModeTitle = "Режим внешнего контроллера", + ControlBackend = "Управляющий бэкенд", + AddBackend = "Добавить бэкенд", + EditBackend = "Изменить бэкенд", + Name = "Имя", + Host = "IP / хост", + Port = "Порт", + Secret = "Секрет (необязательно)", + Protocol = "Протокол", + PortRangeError = "Порт должен быть в диапазоне 1-65535", + Connected = "Подключено: режим %s", + ConnectionFailed = "Ошибка подключения: %s", + Delete = "Удалить", + ), + SubStore = YumeStrings_Feature_SubStore( + Section = "Ресурсы Sub-Store", + JavetLibraryReady = "Среда выполнения готова", + JavetLibraryDownload = "Скачать и установить среду выполнения", + JavetAvailable = "Проверить обновления", + DownloadHint = "Скачать и установить среду выполнения", + JavetDownloadSuccess = "Среда выполнения установлена", + JavetDownloadFailed = "Не удалось установить среду выполнения", + DownloadResources = "Скачать ресурсы", + DownloadResourcesSummary = "Скачать файлы ресурсов", + Not32Bit = "Sub-Store не поддерживает 32-битные устройства", + DownloadSubStoreFirst = "Сначала скачайте ресурсы Sub-Store", + JavetNotReady = "Сначала скачайте и установите среду выполнения", + FrontendDownloadSuccess = "Фронтенд Sub-Store скачан", + FrontendDownloadFailed = "Не удалось скачать фронтенд Sub-Store", + BackendDownloadSuccess = "Бэкенд Sub-Store скачан", + BackendDownloadFailed = "Не удалось скачать бэкенд Sub-Store", + DownloadError = "Ошибка загрузки: %s", + ), + BackupRestore = YumeStrings_Feature_BackupRestore( + Section = "Резервное копирование", + ExportTitle = "Экспорт резервной копии", + ExportSummary = "Экспорт настроек, профилей, переопределений и данных Sub-Store", + RestoreTitle = "Восстановить резервную копию", + RestoreSummary = "Выберите файл резервной копии и замените текущую конфигурацию", + Cancel = "Отмена", + RestoreDialog = YumeStrings_Feature_BackupRestore_RestoreDialog( + Title = "Восстановить резервную копию?", + Message = "Восстановление остановит прокси и Sub-Store, затем заменит текущие настройки, профили, переопределения и данные Sub-Store.", + ), + Message = YumeStrings_Feature_BackupRestore_Message( + ExportSuccess = "Резервная копия успешно экспортирована.", + RestoreSuccess = "Восстановление завершено. Перезапустите приложение, чтобы обновить все экраны.", + ), + Error = YumeStrings_Feature_BackupRestore_Error( + OpenOutputFailed = "Не удалось записать файл резервной копии", + OpenInputFailed = "Не удалось прочитать файл резервной копии", + OperationFailed = "Операция не удалась: %s", + ), + ), +) + diff --git a/locale/src/Home.kt b/locale/src/Home.kt new file mode 100644 index 000000000..1abefda14 --- /dev/null +++ b/locale/src/Home.kt @@ -0,0 +1,332 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Home: YumeStrings_Home = YumeStrings_Home( + Title = "YumeBox", + Message = YumeStrings_Home_Message( + ConfigSwitched = "配置已切换", + ConfigSwitchFailed = "配置切换失败:%s", + Preparing = "正在准备...", + BuiltinGeoRequired = "请先安装 Builtin 版本", + StartFailed = "启动失败:%s", + RuntimeUnavailable = "内核运行时不可用,请重试", + StopFailed = "停止失败:%s", + ), + Control = YumeStrings_Home_Control( + HintAddProfile = "请先添加配置文件", + HintEnableProfile = "请先在「配置」页面启用一个配置", + Start = "启动", + Stop = "停止", + ), + NodeInfo = YumeStrings_Home_NodeInfo( + Node = "节点", + Delay = "延迟", + Unknown = "未知", + DelayValue = "%dms", + ), + Traffic = YumeStrings_Home_Traffic( + UpShort = "UP", + DownShort = "DOWN", + Upload = "上传", + Download = "下载", + NoProfile = "无配置", + ), + IpInfo = YumeStrings_Home_IpInfo( + ExitIp = "出口 IP", + ), + Status = YumeStrings_Home_Status( + Connecting = "连接中", + Disconnecting = "断开中", + Running = "运行中", + Lost = "失联", + TapToStart = "轻触启动", + ), + Settings = YumeStrings_Home_Settings( + Title = "首页设置", + Quote = "一言", + ClassicHome = "回退经典首页", + ExpandSidebar = "展开侧边栏", + ChangeWallpaper = "更换壁纸", + ), + ProxyMode = YumeStrings_Home_ProxyMode( + Vpn = "VPN", + Tun = "TUN", + Ebpf = "eBPF", + ), + PreviewGuide = YumeStrings_Home_PreviewGuide( + Title = "欢迎使用 YumeBox", + Description = "点亮底部「启动」,一键连接", + Next = "下一个", + Start = "开始使用", + WallpaperTitle = "更换壁纸", + WallpaperDescription = "长按壁纸,从相册换图", + SwipeTitle = "左右滑动", + SwipeDescription = "横向滑动首页,切换代理、配置和设置页面", + AddTitle = "设置系统壁纸", + AddDescription = "开启开关并完成权限申请,让首页使用当前系统壁纸", + ), +) + +internal val ZhYumeStrings_Home: YumeStrings_Home = YumeStrings_Home( + Title = "YumeBox", + Message = YumeStrings_Home_Message( + ConfigSwitched = "設定檔已切換", + ConfigSwitchFailed = "設定檔切換失敗:%s", + Preparing = "準備中...", + BuiltinGeoRequired = "請先安裝 Builtin 版本", + StartFailed = "啟動失敗:%s", + RuntimeUnavailable = "核心執行環境不可用,請重試", + StopFailed = "停止失敗:%s", + ), + Control = YumeStrings_Home_Control( + HintAddProfile = "請先新增設定檔", + HintEnableProfile = "請先在「設定檔」頁面啟用一個設定", + Start = "啟動", + Stop = "停止", + ), + NodeInfo = YumeStrings_Home_NodeInfo( + Node = "節點", + Delay = "延遲", + Unknown = "未知", + DelayValue = "%dms", + ), + Traffic = YumeStrings_Home_Traffic( + UpShort = "UP", + DownShort = "DOWN", + Upload = "上傳", + Download = "下載", + NoProfile = "無設定檔", + ), + IpInfo = YumeStrings_Home_IpInfo( + ExitIp = "出口 IP", + ), + Status = YumeStrings_Home_Status( + Connecting = "連線中", + Disconnecting = "斷線中", + Running = "執行中", + Lost = "失聯", + TapToStart = "輕觸啟動", + ), + Settings = YumeStrings_Home_Settings( + Title = "首頁設定", + Quote = "一言", + ClassicHome = "使用經典首頁", + ExpandSidebar = "展開側邊欄", + ChangeWallpaper = "更換桌布", + ), + ProxyMode = YumeStrings_Home_ProxyMode( + Vpn = "VPN", + Tun = "TUN", + Ebpf = "eBPF", + ), + PreviewGuide = YumeStrings_Home_PreviewGuide( + Title = "歡迎使用 YumeBox", + Description = "點亮底部「啟動」,一鍵連線", + Next = "下一個", + Start = "開始使用", + WallpaperTitle = "更換桌布", + WallpaperDescription = "長按桌布,從相簿換圖", + SwipeTitle = "左右滑動", + SwipeDescription = "橫向滑動首頁,切換代理、設定檔和設定頁面", + AddTitle = "設定系統桌布", + AddDescription = "開啟開關並完成權限申請,讓首頁使用目前的系統桌布", + ), +) + +internal val EnYumeStrings_Home: YumeStrings_Home = YumeStrings_Home( + Title = "YumeBox", + Message = YumeStrings_Home_Message( + ConfigSwitched = "Config switched", + ConfigSwitchFailed = "Config switch failed: %s", + Preparing = "Preparing...", + BuiltinGeoRequired = "Please install the Builtin version first", + StartFailed = "Start failed: %s", + RuntimeUnavailable = "Runtime is unavailable. Please try again.", + StopFailed = "Stop failed: %s", + ), + Control = YumeStrings_Home_Control( + HintAddProfile = "Please add a profile first", + HintEnableProfile = "Please enable a profile in Config page first", + Start = "Start", + Stop = "Stop", + ), + NodeInfo = YumeStrings_Home_NodeInfo( + Node = "Node", + Delay = "Delay", + Unknown = "Unknown", + DelayValue = "%dms", + ), + Traffic = YumeStrings_Home_Traffic( + UpShort = "UP", + DownShort = "DOWN", + Upload = "UPLOAD", + Download = "DOWNLOAD", + NoProfile = "No Profile", + ), + IpInfo = YumeStrings_Home_IpInfo( + ExitIp = "Exit IP", + ), + Status = YumeStrings_Home_Status( + Connecting = "Connecting", + Disconnecting = "Disconnecting", + Running = "Running", + Lost = "Disconnected", + TapToStart = "Tap to start", + ), + Settings = YumeStrings_Home_Settings( + Title = "Home settings", + Quote = "Quote", + ClassicHome = "Use classic Home", + ExpandSidebar = "Expand sidebar", + ChangeWallpaper = "Change wallpaper", + ), + ProxyMode = YumeStrings_Home_ProxyMode( + Vpn = "VPN", + Tun = "TUN", + Ebpf = "eBPF", + ), + PreviewGuide = YumeStrings_Home_PreviewGuide( + Title = "Welcome to YumeBox", + Description = "Tap Start at the bottom to connect", + Next = "Next", + Start = "Get started", + WallpaperTitle = "Change wallpaper", + WallpaperDescription = "Long-press the wallpaper to pick from your album", + SwipeTitle = "Swipe pages", + SwipeDescription = "Swipe across Home to switch to Proxy, Profiles, and Settings", + AddTitle = "Set System Wallpaper", + AddDescription = "Enable the switch and grant access to use your current system wallpaper", + ), +) + +internal val JaYumeStrings_Home: YumeStrings_Home = YumeStrings_Home( + Title = "YumeBox", + Message = YumeStrings_Home_Message( + ConfigSwitched = "設定を切り替えました", + ConfigSwitchFailed = "設定の切り替えに失敗しました: %s", + Preparing = "準備中...", + BuiltinGeoRequired = "先に Builtin 版をインストールしてください", + StartFailed = "開始に失敗しました: %s", + RuntimeUnavailable = "ランタイムを利用できません.もう一度お試しください.", + StopFailed = "停止に失敗しました: %s", + ), + Control = YumeStrings_Home_Control( + HintAddProfile = "先にプロファイルを追加してください", + HintEnableProfile = "先に「設定」ページでプロファイルを有効にしてください", + Start = "開始", + Stop = "停止", + ), + NodeInfo = YumeStrings_Home_NodeInfo( + Node = "ノード", + Delay = "遅延", + Unknown = "不明", + DelayValue = "%dms", + ), + Traffic = YumeStrings_Home_Traffic( + UpShort = "UP", + DownShort = "DOWN", + Upload = "アップロード", + Download = "ダウンロード", + NoProfile = "プロファイルなし", + ), + IpInfo = YumeStrings_Home_IpInfo( + ExitIp = "出口 IP", + ), + Status = YumeStrings_Home_Status( + Connecting = "接続中", + Disconnecting = "切断中", + Running = "実行中", + Lost = "切断されました", + TapToStart = "タップして開始", + ), + Settings = YumeStrings_Home_Settings( + Title = "ホーム設定", + Quote = "一言", + ClassicHome = "クラシックホームを使用", + ExpandSidebar = "サイドバーを展開", + ChangeWallpaper = "壁紙を変更", + ), + ProxyMode = YumeStrings_Home_ProxyMode( + Vpn = "VPN", + Tun = "TUN", + Ebpf = "eBPF", + ), + PreviewGuide = YumeStrings_Home_PreviewGuide( + Title = "YumeBox へようこそ", + Description = "下部の「開始」をタップして接続します", + Next = "次へ", + Start = "はじめる", + WallpaperTitle = "壁紙を変更", + WallpaperDescription = "壁紙を長押ししてアルバムから選びます", + SwipeTitle = "ページをスワイプ", + SwipeDescription = "ホームを横にスワイプしてプロキシ、プロファイル、設定を切り替え", + AddTitle = "システム壁紙を設定", + AddDescription = "スイッチをオンにして権限を許可すると、現在のシステム壁紙を使用できます", + ), +) + +internal val RuYumeStrings_Home: YumeStrings_Home = YumeStrings_Home( + Title = "YumeBox", + Message = YumeStrings_Home_Message( + ConfigSwitched = "Профиль переключён", + ConfigSwitchFailed = "Не удалось переключить профиль: %s", + Preparing = "Подготовка...", + BuiltinGeoRequired = "Сначала установите версию Builtin", + StartFailed = "Не удалось запустить: %s", + RuntimeUnavailable = "Среда выполнения недоступна. Повторите попытку.", + StopFailed = "Не удалось остановить: %s", + ), + Control = YumeStrings_Home_Control( + HintAddProfile = "Сначала добавьте профиль", + HintEnableProfile = "Сначала включите профиль на странице «Профили»", + Start = "Старт", + Stop = "Стоп", + ), + NodeInfo = YumeStrings_Home_NodeInfo( + Node = "Узел", + Delay = "Задержка", + Unknown = "Неизвестно", + DelayValue = "%dms", + ), + Traffic = YumeStrings_Home_Traffic( + UpShort = "UP", + DownShort = "DOWN", + Upload = "ОТПРАВКА", + Download = "СКАЧИВАНИЕ", + NoProfile = "Нет профиля", + ), + IpInfo = YumeStrings_Home_IpInfo( + ExitIp = "Выходной IP", + ), + Status = YumeStrings_Home_Status( + Connecting = "Подключение", + Disconnecting = "Отключение", + Running = "Работает", + Lost = "Связь потеряна", + TapToStart = "Нажмите, чтобы запустить", + ), + Settings = YumeStrings_Home_Settings( + Title = "Настройки главной", + Quote = "Цитата", + ClassicHome = "Использовать классическую главную", + ExpandSidebar = "Развернуть боковую панель", + ChangeWallpaper = "Сменить обои", + ), + ProxyMode = YumeStrings_Home_ProxyMode( + Vpn = "VPN", + Tun = "TUN", + Ebpf = "eBPF", + ), + PreviewGuide = YumeStrings_Home_PreviewGuide( + Title = "Добро пожаловать в YumeBox", + Description = "Нажмите «Старт» внизу, чтобы подключиться", + Next = "Далее", + Start = "Начать", + WallpaperTitle = "Сменить обои", + WallpaperDescription = "Удерживайте обои, чтобы выбрать изображение из альбома", + SwipeTitle = "Листайте страницы", + SwipeDescription = "Смахивайте по главному экрану, чтобы перейти к прокси, профилям и настройкам", + AddTitle = "Установить системные обои", + AddDescription = "Включите переключатель и предоставьте доступ для использования текущих системных обоев", + ), +) + diff --git a/locale/src/JaStrings.kt b/locale/src/JaStrings.kt new file mode 100644 index 000000000..18498a79d --- /dev/null +++ b/locale/src/JaStrings.kt @@ -0,0 +1,30 @@ +package com.github.yumeyucca.yumebox.core.locale + +import cafe.adriel.lyricist.LyricistStrings + +@LyricistStrings(languageTag = "ja") +public val JaStrings: YumeStrings = YumeStrings( + About = JaYumeStrings_About, + AccessControl = JaYumeStrings_AccessControl, + AppSettings = JaYumeStrings_AppSettings, + Component = JaYumeStrings_Component, + Connection = JaYumeStrings_Connection, + Editor = JaYumeStrings_Editor, + Feature = JaYumeStrings_Feature, + Home = JaYumeStrings_Home, + Log = JaYumeStrings_Log, + MetaFeature = JaYumeStrings_MetaFeature, + NetworkSettings = JaYumeStrings_NetworkSettings, + Onboarding = JaYumeStrings_Onboarding, + OpenSourceLicenses = JaYumeStrings_OpenSourceLicenses, + Override = JaYumeStrings_Override, + ProfilesPage = JaYumeStrings_ProfilesPage, + ProfilesVM = JaYumeStrings_ProfilesVM, + Providers = JaYumeStrings_Providers, + Proxy = JaYumeStrings_Proxy, + Rules = JaYumeStrings_Rules, + Service = JaYumeStrings_Service, + Settings = JaYumeStrings_Settings, + TrafficStatistics = JaYumeStrings_TrafficStatistics, + Util = JaYumeStrings_Util, +) diff --git a/locale/src/Log.kt b/locale/src/Log.kt new file mode 100644 index 000000000..947df8844 --- /dev/null +++ b/locale/src/Log.kt @@ -0,0 +1,162 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Log: YumeStrings_Log = YumeStrings_Log( + Title = "日志", + Summary = "实时运行日志", + SearchHint = "搜索日志", + Level = YumeStrings_Log_Level( + All = "全部", + Debug = "Debug", + Info = "Info", + Warning = "Warning", + Error = "Error", + Filter = "等级筛选", + ), + Action = YumeStrings_Log_Action( + Export = "导出", + Copied = "已复制日志", + ), + Empty = YumeStrings_Log_Empty( + Connecting = "正在连接日志", + ConnectingHint = "正在连接内核实时日志流", + Retrying = "正在重连日志", + RetryingHint = "连接恢复后将自动继续显示", + NoLogs = "暂无日志", + LiveHint = "正在从内核实时获取日志", + NoMatch = "没有符合当前等级的日志", + NoResults = "没有匹配的日志", + ), + Detail = YumeStrings_Log_Detail( + WaitingLog = "暂无日志", + WillShowWhenGenerated = "有日志时会显示在这里", + ), +) + +internal val ZhYumeStrings_Log: YumeStrings_Log = YumeStrings_Log( + Title = "日誌", + Summary = "即時執行日誌", + SearchHint = "搜尋日誌", + Level = YumeStrings_Log_Level( + All = "全部", + Debug = "Debug", + Info = "Info", + Warning = "Warning", + Error = "Error", + Filter = "等級篩選", + ), + Action = YumeStrings_Log_Action( + Export = "匯出", + Copied = "已複製日誌", + ), + Empty = YumeStrings_Log_Empty( + Connecting = "正在連線日誌", + ConnectingHint = "正在連線核心即時日誌流", + Retrying = "正在重新連線日誌", + RetryingHint = "連線恢復後會自動繼續顯示", + NoLogs = "暫無日誌", + LiveHint = "正在從核心即時取得日誌", + NoMatch = "沒有符合目前等級的日誌", + NoResults = "沒有符合的日誌", + ), + Detail = YumeStrings_Log_Detail( + WaitingLog = "暫無日誌", + WillShowWhenGenerated = "有日誌時會顯示在這裡", + ), +) + +internal val EnYumeStrings_Log: YumeStrings_Log = YumeStrings_Log( + Title = "Logs", + Summary = "Live runtime logs", + SearchHint = "Search logs", + Level = YumeStrings_Log_Level( + All = "All", + Debug = "Debug", + Info = "Info", + Warning = "Warning", + Error = "Error", + Filter = "Level filter", + ), + Action = YumeStrings_Log_Action( + Export = "Export", + Copied = "Log copied", + ), + Empty = YumeStrings_Log_Empty( + Connecting = "Connecting to logs", + ConnectingHint = "Opening the live core log stream", + Retrying = "Reconnecting to logs", + RetryingHint = "Live logs will resume automatically", + NoLogs = "No logs yet", + LiveHint = "Streaming live logs from the core", + NoMatch = "No logs match the selected level", + NoResults = "No matching logs", + ), + Detail = YumeStrings_Log_Detail( + WaitingLog = "No logs yet", + WillShowWhenGenerated = "Logs appear here as they are produced", + ), +) + +internal val JaYumeStrings_Log: YumeStrings_Log = YumeStrings_Log( + Title = "ログ", + Summary = "リアルタイム実行ログ", + SearchHint = "ログを検索", + Level = YumeStrings_Log_Level( + All = "すべて", + Debug = "Debug", + Info = "Info", + Warning = "Warning", + Error = "Error", + Filter = "レベル絞り込み", + ), + Action = YumeStrings_Log_Action( + Export = "書き出し", + Copied = "ログをコピーしました", + ), + Empty = YumeStrings_Log_Empty( + Connecting = "ログに接続中", + ConnectingHint = "コアのライブログストリームを開いています", + Retrying = "ログへ再接続中", + RetryingHint = "接続が復帰すると自動で再開します", + NoLogs = "ログはまだありません", + LiveHint = "コアからライブログを受信中", + NoMatch = "選択したレベルに一致するログがありません", + NoResults = "一致するログがありません", + ), + Detail = YumeStrings_Log_Detail( + WaitingLog = "ログはまだありません", + WillShowWhenGenerated = "ログが生成されるとここに表示されます", + ), +) + +internal val RuYumeStrings_Log: YumeStrings_Log = YumeStrings_Log( + Title = "Журналы", + Summary = "Журналы выполнения в реальном времени", + SearchHint = "Поиск по журналам", + Level = YumeStrings_Log_Level( + All = "Все", + Debug = "Debug", + Info = "Info", + Warning = "Warning", + Error = "Error", + Filter = "Фильтр уровня", + ), + Action = YumeStrings_Log_Action( + Export = "Экспорт", + Copied = "Журнал скопирован", + ), + Empty = YumeStrings_Log_Empty( + Connecting = "Подключение к журналам", + ConnectingHint = "Открытие потока логов ядра", + Retrying = "Повторное подключение к журналам", + RetryingHint = "После восстановления соединение продолжится автоматически", + NoLogs = "Журналов пока нет", + LiveHint = "Получение логов ядра в реальном времени", + NoMatch = "Нет логов выбранного уровня", + NoResults = "Нет подходящих логов", + ), + Detail = YumeStrings_Log_Detail( + WaitingLog = "Журналов пока нет", + WillShowWhenGenerated = "Журналы появятся здесь по мере поступления", + ), +) + diff --git a/locale/src/MetaFeature.kt b/locale/src/MetaFeature.kt new file mode 100644 index 000000000..984b5c90d --- /dev/null +++ b/locale/src/MetaFeature.kt @@ -0,0 +1,277 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_MetaFeature: YumeStrings_MetaFeature = YumeStrings_MetaFeature( + Title = "Meta 功能", + Section = YumeStrings_MetaFeature_Section( + ConnectionAndTraffic = "连接、日志与规则", + Routing = "分流相关", + ), + GeoX = YumeStrings_MetaFeature_GeoX( + OnlineUpdateTitle = "更新 GeoX", + OnlineUpdateSummary = "下载数据库文件", + ), + CustomRouting = YumeStrings_MetaFeature_CustomRouting( + Title = "自定义分流", + Summary = "独立的分流规则配置", + EditYaml = "编辑 YAML", + ManualYamlPresetDiscarded = "已丢弃未保存的预设开关,以保护手写 YAML 内容", + GroupTypeTitle = "策略组类型", + GroupTypeUrlTest = "UrlTest", + GroupTypeFallback = "Fallback", + UrlTestRegionGroupTitle = "UrlTest 地区组", + FallbackRegionGroupTitle = "Fallback 地区组", + Region = YumeStrings_MetaFeature_CustomRouting_Region( + HongKong = "香港自动组", + Taiwan = "台湾自动组", + Japan = "日本自动组", + Singapore = "新加坡自动组", + UnitedStates = "美国自动组", + Other = "冷门地区自动组", + ), + Item = YumeStrings_MetaFeature_CustomRouting_Item( + Proxy = "代理规则集", + Ads = "广告拦截", + China = "中国大陆直连", + Global = "境外地理规则", + Match = "兜底 MATCH", + ), + ), + RuntimeRules = YumeStrings_MetaFeature_RuntimeRules( + Title = "规则", + Summary = "查看并临时开关运行时规则", + ), + Download = YumeStrings_MetaFeature_Download( + DialogTitle = "更新 GeoX", + DownloadComplete = "下载完成:%d/%d", + ), + AgeKey = YumeStrings_MetaFeature_AgeKey( + Section = "Age 密钥", + X25519Title = "X25519", + HybridTitle = "mlkem768-x25519", + SecretKey = "私钥", + PublicKey = "公钥", + Generate = "生成", + DerivePublicKey = "推导公钥", + ), +) + +internal val ZhYumeStrings_MetaFeature: YumeStrings_MetaFeature = YumeStrings_MetaFeature( + Title = "Meta 功能", + Section = YumeStrings_MetaFeature_Section( + ConnectionAndTraffic = "連線、日誌與規則", + Routing = "分流相關", + ), + GeoX = YumeStrings_MetaFeature_GeoX( + OnlineUpdateTitle = "更新 GeoX", + OnlineUpdateSummary = "下載資料庫檔案", + ), + CustomRouting = YumeStrings_MetaFeature_CustomRouting( + Title = "自訂分流", + Summary = "獨立的分流規則設定", + EditYaml = "編輯 YAML", + ManualYamlPresetDiscarded = "已捨棄未儲存的預設切換,以保護手寫 YAML 內容", + GroupTypeTitle = "策略組類型", + GroupTypeUrlTest = "UrlTest", + GroupTypeFallback = "Fallback", + UrlTestRegionGroupTitle = "UrlTest 地區組", + FallbackRegionGroupTitle = "Fallback 地區組", + Region = YumeStrings_MetaFeature_CustomRouting_Region( + HongKong = "香港自動群組", + Taiwan = "台灣自動群組", + Japan = "日本自動群組", + Singapore = "新加坡自動群組", + UnitedStates = "美國自動群組", + Other = "其他地區自動群組", + ), + Item = YumeStrings_MetaFeature_CustomRouting_Item( + Proxy = "代理規則集", + Ads = "廣告攔截", + China = "中國大陸直連", + Global = "境外地理規則", + Match = "最終 MATCH", + ), + ), + RuntimeRules = YumeStrings_MetaFeature_RuntimeRules( + Title = "規則", + Summary = "檢視並暫時開關執行中規則", + ), + Download = YumeStrings_MetaFeature_Download( + DialogTitle = "線上更新 GeoX", + DownloadComplete = "下載完成:%d/%d", + ), + AgeKey = YumeStrings_MetaFeature_AgeKey( + Section = "Age 金鑰", + X25519Title = "X25519", + HybridTitle = "mlkem768-x25519", + SecretKey = "私鑰", + PublicKey = "公鑰", + Generate = "產生", + DerivePublicKey = "推導公鑰", + ), +) + +internal val EnYumeStrings_MetaFeature: YumeStrings_MetaFeature = YumeStrings_MetaFeature( + Title = "Meta Features", + Section = YumeStrings_MetaFeature_Section( + ConnectionAndTraffic = "Connections, logs, and rules", + Routing = "Routing", + ), + GeoX = YumeStrings_MetaFeature_GeoX( + OnlineUpdateTitle = "Update GeoX", + OnlineUpdateSummary = "Download Database", + ), + CustomRouting = YumeStrings_MetaFeature_CustomRouting( + Title = "Custom Routing", + Summary = "Standalone routing rules configuration", + EditYaml = "Edit YAML", + ManualYamlPresetDiscarded = "Unsaved preset switches were discarded to protect manually edited YAML.", + GroupTypeTitle = "Group Types", + GroupTypeUrlTest = "UrlTest", + GroupTypeFallback = "Fallback", + UrlTestRegionGroupTitle = "UrlTest Region Groups", + FallbackRegionGroupTitle = "Fallback Region Groups", + Region = YumeStrings_MetaFeature_CustomRouting_Region( + HongKong = "Hong Kong Auto", + Taiwan = "Taiwan Auto", + Japan = "Japan Auto", + Singapore = "Singapore Auto", + UnitedStates = "United States Auto", + Other = "Other Regions Auto", + ), + Item = YumeStrings_MetaFeature_CustomRouting_Item( + Proxy = "Proxy Rules", + Ads = "Ad Blocking", + China = "Mainland China Direct", + Global = "Non-China Geo Rules", + Match = "Fallback MATCH", + ), + ), + RuntimeRules = YumeStrings_MetaFeature_RuntimeRules( + Title = "Rules", + Summary = "View and temporarily toggle runtime rules", + ), + Download = YumeStrings_MetaFeature_Download( + DialogTitle = "Update GeoX Online", + DownloadComplete = "Download complete: %d/%d", + ), + AgeKey = YumeStrings_MetaFeature_AgeKey( + Section = "Age Keys", + X25519Title = "X25519", + HybridTitle = "mlkem768-x25519", + SecretKey = "Secret Key", + PublicKey = "Public Key", + Generate = "Generate", + DerivePublicKey = "Derive Public", + ), +) + +internal val JaYumeStrings_MetaFeature: YumeStrings_MetaFeature = YumeStrings_MetaFeature( + Title = "Meta 機能", + Section = YumeStrings_MetaFeature_Section( + ConnectionAndTraffic = "接続、ログ、ルール", + Routing = "ルーティング", + ), + GeoX = YumeStrings_MetaFeature_GeoX( + OnlineUpdateTitle = "GeoX を更新", + OnlineUpdateSummary = "データベースをダウンロード", + ), + CustomRouting = YumeStrings_MetaFeature_CustomRouting( + Title = "カスタムルーティング", + Summary = "独立したルーティングルール設定", + EditYaml = "YAML を編集", + ManualYamlPresetDiscarded = "手動編集した YAML を保護するため、未保存のプリセット変更を破棄しました.", + GroupTypeTitle = "グループ種別", + GroupTypeUrlTest = "UrlTest", + GroupTypeFallback = "Fallback", + UrlTestRegionGroupTitle = "UrlTest 地域グループ", + FallbackRegionGroupTitle = "Fallback 地域グループ", + Region = YumeStrings_MetaFeature_CustomRouting_Region( + HongKong = "香港自動グループ", + Taiwan = "台湾自動グループ", + Japan = "日本自動グループ", + Singapore = "シンガポール自動グループ", + UnitedStates = "米国自動グループ", + Other = "その他の地域自動グループ", + ), + Item = YumeStrings_MetaFeature_CustomRouting_Item( + Proxy = "プロキシルール", + Ads = "広告ブロック", + China = "中国本土を直接接続", + Global = "中国国外の地域ルール", + Match = "最終 MATCH", + ), + ), + RuntimeRules = YumeStrings_MetaFeature_RuntimeRules( + Title = "ルール", + Summary = "実行中ルールの確認と一時的な切り替え", + ), + Download = YumeStrings_MetaFeature_Download( + DialogTitle = "GeoX をオンライン更新", + DownloadComplete = "ダウンロード完了: %d/%d", + ), + AgeKey = YumeStrings_MetaFeature_AgeKey( + Section = "Age キー", + X25519Title = "X25519", + HybridTitle = "mlkem768-x25519", + SecretKey = "秘密鍵", + PublicKey = "公開鍵", + Generate = "生成", + DerivePublicKey = "公開鍵を導出", + ), +) + +internal val RuYumeStrings_MetaFeature: YumeStrings_MetaFeature = YumeStrings_MetaFeature( + Title = "Функции Meta", + Section = YumeStrings_MetaFeature_Section( + ConnectionAndTraffic = "Соединения, журналы и правила", + Routing = "Маршрутизация", + ), + GeoX = YumeStrings_MetaFeature_GeoX( + OnlineUpdateTitle = "Обновить GeoX", + OnlineUpdateSummary = "Скачать базу данных", + ), + CustomRouting = YumeStrings_MetaFeature_CustomRouting( + Title = "Своя маршрутизация", + Summary = "Отдельная конфигурация правил маршрутизации", + EditYaml = "Редактировать YAML", + ManualYamlPresetDiscarded = "Несохранённые изменения пресета отменены для защиты YAML, отредактированного вручную.", + GroupTypeTitle = "Типы групп", + GroupTypeUrlTest = "UrlTest", + GroupTypeFallback = "Fallback", + UrlTestRegionGroupTitle = "Региональные группы UrlTest", + FallbackRegionGroupTitle = "Региональные группы Fallback", + Region = YumeStrings_MetaFeature_CustomRouting_Region( + HongKong = "Автовыбор Гонконга", + Taiwan = "Автовыбор Тайваня", + Japan = "Автовыбор Японии", + Singapore = "Автовыбор Сингапура", + UnitedStates = "Автовыбор США", + Other = "Автовыбор других регионов", + ), + Item = YumeStrings_MetaFeature_CustomRouting_Item( + Proxy = "Правила прокси", + Ads = "Блокировка рекламы", + China = "Материковый Китай напрямую", + Global = "Геоправила вне Китая", + Match = "Финальный MATCH", + ), + ), + RuntimeRules = YumeStrings_MetaFeature_RuntimeRules( + Title = "Правила", + Summary = "Просмотр и временное переключение правил", + ), + Download = YumeStrings_MetaFeature_Download( + DialogTitle = "Онлайн-обновление GeoX", + DownloadComplete = "Загрузка завершена: %d/%d", + ), + AgeKey = YumeStrings_MetaFeature_AgeKey( + Section = "Ключи Age", + X25519Title = "X25519", + HybridTitle = "mlkem768-x25519", + SecretKey = "Секретный ключ", + PublicKey = "Открытый ключ", + Generate = "Сгенерировать", + DerivePublicKey = "Вывести открытый ключ", + ), +) + diff --git a/locale/src/NetworkSettings.kt b/locale/src/NetworkSettings.kt new file mode 100644 index 000000000..e1098446b --- /dev/null +++ b/locale/src/NetworkSettings.kt @@ -0,0 +1,587 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_NetworkSettings: YumeStrings_NetworkSettings = YumeStrings_NetworkSettings( + Title = "网络设置", + Section = YumeStrings_NetworkSettings_Section( + VpnOptions = "服务配置", + Advanced = "高级选项", + ProxyOptions = "访问控制", + Kernel = "内核", + ), + Advanced = YumeStrings_NetworkSettings_Advanced( + DisableOverrideTitle = "禁用所有覆写", + ), + RunMode = YumeStrings_NetworkSettings_RunMode( + SectionTitle = "运行模式", + VpnServiceTitle = "Vpn Service", + VpnServiceSummary = "系统 VPN 全局代理", + TunTitle = "Tun", + TunSummary = "需要 Root 的虚拟网卡", + EbpfTitle = "eBPF", + EbpfSummary = "需要 Root 的 eBPF 转发代理", + ), + VpnOptions = YumeStrings_NetworkSettings_VpnOptions( + BypassPrivateTitle = "绕过私有网络", + DnsHijackTitle = "DNS 劫持", + AllowBypassTitle = "允许应用绕过", + EnableIpv6Title = "运行 IPv6", + SystemProxyTitle = "VPN 系统代理", + ), + EbpfOptions = YumeStrings_NetworkSettings_EbpfOptions( + BypassCnTitle = "国内 IP 不过核心", + ), + TunOptions = YumeStrings_NetworkSettings_TunOptions( + Title = "Tun 配置", + IfNameTitle = "虚拟网卡", + MtuTitle = "MTU", + StackTitle = "协议栈", + StackSystem = "System", + StackGVisor = "gVisor", + StackMixed = "Mixed", + StackMips = "MIPS", + AutoRouteTitle = "自动路由", + StrictRouteTitle = "严格路由", + AutoRedirectTitle = "自动重定向", + DnsModeTitle = "DNS 模式", + DnsRedirHost = "RedirHost", + DnsFakeIp = "FakeIP", + Ipv6Title = "启用 IPv6", + ), + Kernel = YumeStrings_NetworkSettings_Kernel( + ActiveTitle = "当前内核", + BundledAlpha = "Builtin", + RefreshTitle = "获取最新内核", + DownloadTitle = "远程内核", + FetchButton = "获取最新", + DownloadButton = "下载", + CustomTitle = "自定义内核", + CustomMethodTitle = "导入方式", + CustomUrlMethod = "填写内核链接", + CustomFileMethod = "上传插件", + CustomUrlLabel = "插件链接", + CustomChooseFile = "选择插件文件", + CustomInstallButton = "安装并启用", + ), + ProxyOptions = YumeStrings_NetworkSettings_ProxyOptions( + AccessControlModeTitle = "访问控制模式", + AllowAll = "允许所有", + AllowSelected = "允许选择", + RejectSelected = "拒绝选择", + ManageAccessControlTitle = "管理访问控制列表", + ), + WifiAutomation = YumeStrings_NetworkSettings_WifiAutomation( + Title = "Wi-Fi 自动化", + EnabledTitle = "Wi-Fi 自动化", + WifiNameHeading = "Wi-Fi 名称", + NetworkChangeSection = "网络切换", + OtherWifiTitle = "连接其他 Wi-Fi 时", + NoWifiTitle = "未连接 Wi-Fi 时(蜂窝 / 以太网 / 离线)", + AddCurrent = "添加当前 Wi-Fi", + AddManual = "手动添加 Wi-Fi", + Scan = "扫描 Wi-Fi", + Scanning = "正在扫描 Wi-Fi…", + ScanEmpty = "未扫描到可添加的 Wi-Fi", + ScanUnavailable = "无法扫描 Wi-Fi.请检查 Wi-Fi、位置权限和系统位置信息.", + ManualDialogTitle = "添加 Wi-Fi", + EditDialogTitle = "编辑 Wi-Fi", + ManualDialogLabel = "Wi-Fi 名称", + StartAction = "启动 VPN", + StopAction = "停止 VPN", + KeepAction = "不操作", + ActionTitle = "连接时", + ProfileAction = "切换到配置", + NoSwitchAction = "不切换", + EmptyRules = "尚未添加 Wi-Fi 规则", + VpnOnly = "Wi-Fi 自动化仅在 VPN 模式下可用", + PermissionTitle = "允许读取 Wi-Fi 名称", + PermissionMessage = "Android 将 Wi-Fi 名称视为位置敏感信息.YumeBox 只在你开启自动化或点击扫描 Wi-Fi 时使用精确位置权限,在本机匹配规则或显示扫描结果;不会读取 GPS 或上传 Wi-Fi 名称.", + ApproximateTitle = "需要精确位置", + ApproximateMessage = "大致位置仍会隐藏 Wi-Fi 名称.请允许精确位置后继续.", + DeniedTitle = "需要位置权限", + DeniedMessage = "授予位置权限前,Wi-Fi 自动化会保持关闭.", + SettingsTitle = "在设置中启用位置权限", + SettingsMessage = "系统不再显示权限请求.请在“应用信息 > 权限 > 位置”中选择“仅在使用应用期间允许”,并启用精确位置.", + LocationTitle = "开启系统位置信息", + LocationMessage = "系统位置关闭时,Android 会隐藏 Wi-Fi 名称.YumeBox 不会读取 GPS.", + Grant = "授予权限", + OpenSettings = "前往设置", + TurnOnLocation = "开启位置信息", + Added = "已添加 Wi-Fi 规则", + Duplicate = "该 Wi-Fi 已在规则中", + NoWifi = "未检测到 Wi-Fi 连接", + Unavailable = "无法读取 Wi-Fi 名称.请检查位置权限和系统位置信息.", + ), + Error = YumeStrings_NetworkSettings_Error( + VpnDenied = "VPN 权限被拒绝", + RootRequired = "Root 模式需要 YumeBox 已获取可用的 Root 权限", + ), +) + +internal val ZhYumeStrings_NetworkSettings: YumeStrings_NetworkSettings = YumeStrings_NetworkSettings( + Title = "網路設定", + Section = YumeStrings_NetworkSettings_Section( + VpnOptions = "服務設定", + Advanced = "進階選項", + ProxyOptions = "存取控制", + Kernel = "核心", + ), + Advanced = YumeStrings_NetworkSettings_Advanced( + DisableOverrideTitle = "停用所有覆寫", + ), + RunMode = YumeStrings_NetworkSettings_RunMode( + SectionTitle = "執行模式", + VpnServiceTitle = "Vpn Service", + VpnServiceSummary = "系統 VPN 全域代理", + TunTitle = "Tun", + TunSummary = "需要 Root 的虛擬網卡", + EbpfTitle = "eBPF", + EbpfSummary = "需要 Root 的 eBPF 轉發代理", + ), + VpnOptions = YumeStrings_NetworkSettings_VpnOptions( + BypassPrivateTitle = "略過私人網路", + DnsHijackTitle = "DNS 劫持", + AllowBypassTitle = "允許應用略過", + EnableIpv6Title = "啟用 IPv6", + SystemProxyTitle = "VPN 內建系統代理", + ), + EbpfOptions = YumeStrings_NetworkSettings_EbpfOptions( + BypassCnTitle = "中國大陸 IP 不經核心", + ), + TunOptions = YumeStrings_NetworkSettings_TunOptions( + Title = "Tun 設定", + IfNameTitle = "虛擬網卡", + MtuTitle = "MTU", + StackTitle = "協定堆疊", + StackSystem = "System", + StackGVisor = "gVisor", + StackMixed = "Mixed", + StackMips = "MIPS", + AutoRouteTitle = "自動路由", + StrictRouteTitle = "嚴格路由", + AutoRedirectTitle = "自動重新導向", + DnsModeTitle = "DNS 模式", + DnsRedirHost = "RedirHost", + DnsFakeIp = "FakeIP", + Ipv6Title = "啟用 IPv6", + ), + Kernel = YumeStrings_NetworkSettings_Kernel( + ActiveTitle = "目前核心", + BundledAlpha = "Builtin", + RefreshTitle = "取得最新核心", + DownloadTitle = "遠端核心", + FetchButton = "取得最新", + DownloadButton = "下載", + CustomTitle = "自訂內核", + CustomMethodTitle = "匯入方式", + CustomUrlMethod = "填寫內核連結", + CustomFileMethod = "上傳插件", + CustomUrlLabel = "插件連結", + CustomChooseFile = "選擇插件檔案", + CustomInstallButton = "安裝並啟用", + ), + ProxyOptions = YumeStrings_NetworkSettings_ProxyOptions( + AccessControlModeTitle = "存取控制模式", + AllowAll = "允許全部", + AllowSelected = "允許所選", + RejectSelected = "拒絕所選", + ManageAccessControlTitle = "管理存取控制清單", + ), + WifiAutomation = YumeStrings_NetworkSettings_WifiAutomation( + Title = "Wi-Fi 自動化", + EnabledTitle = "Wi-Fi 自動化", + WifiNameHeading = "Wi-Fi 名稱", + NetworkChangeSection = "網路切換", + OtherWifiTitle = "連線其他 Wi-Fi 時", + NoWifiTitle = "未連線 Wi-Fi 時(行動網路 / 乙太網路 / 離線)", + AddCurrent = "新增目前 Wi-Fi", + AddManual = "手動新增 Wi-Fi", + Scan = "掃描 Wi-Fi", + Scanning = "正在掃描 Wi-Fi…", + ScanEmpty = "未掃描到可新增的 Wi-Fi", + ScanUnavailable = "無法掃描 Wi-Fi.請檢查 Wi-Fi、位置權限和系統位置資訊.", + ManualDialogTitle = "新增 Wi-Fi", + EditDialogTitle = "編輯 Wi-Fi", + ManualDialogLabel = "Wi-Fi 名稱", + StartAction = "啟動 VPN", + StopAction = "停止 VPN", + KeepAction = "不操作", + ActionTitle = "連線時", + ProfileAction = "切換到設定檔", + NoSwitchAction = "不切換", + EmptyRules = "尚未新增 Wi-Fi 規則", + VpnOnly = "Wi-Fi 自動化僅可用於 VPN 模式", + PermissionTitle = "允許讀取 Wi-Fi 名稱", + PermissionMessage = "Android 將 Wi-Fi 名稱視為位置敏感資訊.YumeBox 只在你啟用自動化或點選掃描 Wi-Fi 時使用精確位置權限,在本機比對規則或顯示掃描結果;不會讀取 GPS 或上傳 Wi-Fi 名稱.", + ApproximateTitle = "需要精確位置", + ApproximateMessage = "大致位置仍會隱藏 Wi-Fi 名稱.請允許精確位置後繼續.", + DeniedTitle = "需要位置權限", + DeniedMessage = "授予位置權限前,Wi-Fi 自動化會保持關閉.", + SettingsTitle = "在設定中啟用位置權限", + SettingsMessage = "系統不再顯示權限請求.請在「應用程式資訊 > 權限 > 位置」中選擇「僅在使用應用程式期間允許」,並啟用精確位置.", + LocationTitle = "開啟系統位置資訊", + LocationMessage = "系統位置關閉時,Android 會隱藏 Wi-Fi 名稱.YumeBox 不會讀取 GPS.", + Grant = "授予權限", + OpenSettings = "前往設定", + TurnOnLocation = "開啟位置資訊", + Added = "已新增 Wi-Fi 規則", + Duplicate = "該 Wi-Fi 已在規則中", + NoWifi = "未偵測到 Wi-Fi 連線", + Unavailable = "無法讀取 Wi-Fi 名稱.請檢查位置權限和系統位置資訊.", + ), + Error = YumeStrings_NetworkSettings_Error( + VpnDenied = "VPN 權限被拒絕", + RootRequired = "Root 模式需要 YumeBox 已取得可用的 Root 權限", + ), +) + +internal val EnYumeStrings_NetworkSettings: YumeStrings_NetworkSettings = YumeStrings_NetworkSettings( + Title = "Network Settings", + Section = YumeStrings_NetworkSettings_Section( + VpnOptions = "Service Options", + Advanced = "Advanced", + ProxyOptions = "Access Control", + Kernel = "Kernel", + ), + Advanced = YumeStrings_NetworkSettings_Advanced( + DisableOverrideTitle = "Disable All Overrides", + ), + RunMode = YumeStrings_NetworkSettings_RunMode( + SectionTitle = "Run Mode", + VpnServiceTitle = "Vpn Service", + VpnServiceSummary = "System VPN, global proxy", + TunTitle = "Tun", + TunSummary = "Virtual network interface requiring root", + EbpfTitle = "eBPF", + EbpfSummary = "Root eBPF proxy", + ), + VpnOptions = YumeStrings_NetworkSettings_VpnOptions( + BypassPrivateTitle = "Bypass Private Networks", + DnsHijackTitle = "DNS Hijack", + AllowBypassTitle = "Allow App Bypass", + EnableIpv6Title = "Enable IPv6", + SystemProxyTitle = "VPN Built-in System Proxy", + ), + EbpfOptions = YumeStrings_NetworkSettings_EbpfOptions( + BypassCnTitle = "Bypass mainland China IPs in kernel", + ), + TunOptions = YumeStrings_NetworkSettings_TunOptions( + Title = "Tun Options", + IfNameTitle = "Virtual NIC", + MtuTitle = "MTU", + StackTitle = "Network Stack", + StackSystem = "System", + StackGVisor = "gVisor", + StackMixed = "Mixed", + StackMips = "MIPS", + AutoRouteTitle = "Auto Route", + StrictRouteTitle = "Strict Route", + AutoRedirectTitle = "Auto Redirect", + DnsModeTitle = "DNS Mode", + DnsRedirHost = "RedirHost", + DnsFakeIp = "FakeIP", + Ipv6Title = "Enable IPv6", + ), + Kernel = YumeStrings_NetworkSettings_Kernel( + ActiveTitle = "Active kernel", + BundledAlpha = "Builtin", + RefreshTitle = "Get latest kernels", + DownloadTitle = "Remote kernels", + FetchButton = "Get latest", + DownloadButton = "Download", + CustomTitle = "Custom kernel", + CustomMethodTitle = "Import method", + CustomUrlMethod = "Enter plugin URL", + CustomFileMethod = "Upload plugin", + CustomUrlLabel = "Plugin URL", + CustomChooseFile = "Choose plugin file", + CustomInstallButton = "Install and enable", + ), + ProxyOptions = YumeStrings_NetworkSettings_ProxyOptions( + AccessControlModeTitle = "Access Control Mode", + AllowAll = "Allow All", + AllowSelected = "Allow Selected", + RejectSelected = "Reject Selected", + ManageAccessControlTitle = "Manage Access Control", + ), + WifiAutomation = YumeStrings_NetworkSettings_WifiAutomation( + Title = "Wi-Fi Automation", + EnabledTitle = "Wi-Fi automation", + WifiNameHeading = "Wi-Fi name", + NetworkChangeSection = "Network changes", + OtherWifiTitle = "When connected to other Wi-Fi", + NoWifiTitle = "When Wi-Fi is disconnected (cellular / Ethernet / offline)", + AddCurrent = "Add current Wi-Fi", + AddManual = "Add Wi-Fi manually", + Scan = "Scan Wi-Fi", + Scanning = "Scanning Wi-Fi…", + ScanEmpty = "No Wi-Fi networks found", + ScanUnavailable = "Unable to scan Wi-Fi. Check Wi-Fi, location permission, and system location.", + ManualDialogTitle = "Add Wi-Fi", + EditDialogTitle = "Edit Wi-Fi", + ManualDialogLabel = "Wi-Fi name", + StartAction = "Start VPN", + StopAction = "Stop VPN", + KeepAction = "Do nothing", + ActionTitle = "When connected", + ProfileAction = "Switch to profile", + NoSwitchAction = "Do not switch", + EmptyRules = "No Wi-Fi rules", + VpnOnly = "Wi-Fi automation is available only in VPN mode", + PermissionTitle = "Allow reading Wi-Fi name", + PermissionMessage = "Android treats Wi-Fi names as location-sensitive information. YumeBox uses precise location only when you enable automation or tap Scan Wi-Fi, to match rules on this device or show scan results. It does not read GPS or upload Wi-Fi names.", + ApproximateTitle = "Precise location is required", + ApproximateMessage = "Approximate location still hides the Wi-Fi name. Allow precise location to continue.", + DeniedTitle = "Location permission is required", + DeniedMessage = "Wi-Fi automation stays off until location permission is granted.", + SettingsTitle = "Enable location permission in Settings", + SettingsMessage = "Android will no longer show this permission request. In App info > Permissions > Location, choose Allow only while using the app and enable precise location.", + LocationTitle = "Turn on system location", + LocationMessage = "Android hides Wi-Fi names while system location is off. YumeBox does not read GPS.", + Grant = "Grant permission", + OpenSettings = "Open settings", + TurnOnLocation = "Turn on location", + Added = "Wi-Fi rule added", + Duplicate = "This Wi-Fi is already in the rules", + NoWifi = "No Wi-Fi connection found", + Unavailable = "Wi-Fi name is unavailable. Check location permission and system location.", + ), + Error = YumeStrings_NetworkSettings_Error( + VpnDenied = "VPN permission denied", + RootRequired = "Root mode requires YumeBox to have working root access", + ), +) + +internal val JaYumeStrings_NetworkSettings: YumeStrings_NetworkSettings = YumeStrings_NetworkSettings( + Title = "ネットワーク設定", + Section = YumeStrings_NetworkSettings_Section( + VpnOptions = "サービス設定", + Advanced = "詳細", + ProxyOptions = "アクセス制御", + Kernel = "カーネル", + ), + Advanced = YumeStrings_NetworkSettings_Advanced( + DisableOverrideTitle = "すべての上書きを無効化", + ), + RunMode = YumeStrings_NetworkSettings_RunMode( + SectionTitle = "実行モード", + VpnServiceTitle = "Vpn Service", + VpnServiceSummary = "システム VPN による全体プロキシ", + TunTitle = "Tun", + TunSummary = "Root が必要な仮想ネットワークインターフェース", + EbpfTitle = "eBPF", + EbpfSummary = "Root eBPF プロキシ", + ), + VpnOptions = YumeStrings_NetworkSettings_VpnOptions( + BypassPrivateTitle = "プライベートネットワークをバイパス", + DnsHijackTitle = "DNS ハイジャック", + AllowBypassTitle = "アプリのバイパスを許可", + EnableIpv6Title = "IPv6 を有効化", + SystemProxyTitle = "VPN 内蔵システムプロキシ", + ), + EbpfOptions = YumeStrings_NetworkSettings_EbpfOptions( + BypassCnTitle = "中国 IP をカーネルでバイパス", + ), + TunOptions = YumeStrings_NetworkSettings_TunOptions( + Title = "Tun 設定", + IfNameTitle = "仮想 NIC", + MtuTitle = "MTU", + StackTitle = "ネットワークスタック", + StackSystem = "System", + StackGVisor = "gVisor", + StackMixed = "Mixed", + StackMips = "MIPS", + AutoRouteTitle = "自動ルート", + StrictRouteTitle = "厳密ルート", + AutoRedirectTitle = "自動リダイレクト", + DnsModeTitle = "DNS モード", + DnsRedirHost = "RedirHost", + DnsFakeIp = "FakeIP", + Ipv6Title = "IPv6 を有効化", + ), + Kernel = YumeStrings_NetworkSettings_Kernel( + ActiveTitle = "使用中のカーネル", + BundledAlpha = "Builtin", + RefreshTitle = "最新カーネルを取得", + DownloadTitle = "リモートカーネル", + FetchButton = "最新を取得", + DownloadButton = "ダウンロード", + CustomTitle = "カスタムカーネル", + CustomMethodTitle = "インポート方法", + CustomUrlMethod = "プラグインURLを入力", + CustomFileMethod = "プラグインをアップロード", + CustomUrlLabel = "プラグインURL", + CustomChooseFile = "プラグインファイルを選択", + CustomInstallButton = "インストールして有効化", + ), + ProxyOptions = YumeStrings_NetworkSettings_ProxyOptions( + AccessControlModeTitle = "アクセス制御モード", + AllowAll = "すべて許可", + AllowSelected = "選択のみ許可", + RejectSelected = "選択を拒否", + ManageAccessControlTitle = "アクセス制御を管理", + ), + WifiAutomation = YumeStrings_NetworkSettings_WifiAutomation( + Title = "Wi-Fi 自動化", + EnabledTitle = "Wi-Fi 自動化", + WifiNameHeading = "Wi-Fi 名", + NetworkChangeSection = "ネットワークの切替", + OtherWifiTitle = "他の Wi-Fi に接続したとき", + NoWifiTitle = "Wi-Fi 未接続時(モバイル通信 / Ethernet / オフライン)", + AddCurrent = "現在の Wi-Fi を追加", + AddManual = "Wi-Fi を手動追加", + Scan = "Wi-Fi をスキャン", + Scanning = "Wi-Fi をスキャンしています…", + ScanEmpty = "追加できる Wi-Fi が見つかりません", + ScanUnavailable = "Wi-Fi をスキャンできません.Wi-Fi、位置情報の許可、システムの位置情報を確認してください.", + ManualDialogTitle = "Wi-Fi を追加", + EditDialogTitle = "Wi-Fi を編集", + ManualDialogLabel = "Wi-Fi 名", + StartAction = "VPN を開始", + StopAction = "VPN を停止", + KeepAction = "何もしない", + ActionTitle = "接続時", + ProfileAction = "プロファイルに切り替え", + NoSwitchAction = "切り替えない", + EmptyRules = "Wi-Fi ルールはありません", + VpnOnly = "Wi-Fi 自動化は VPN モードでのみ利用できます", + PermissionTitle = "Wi-Fi 名の読み取りを許可", + PermissionMessage = "Android では Wi-Fi 名は位置情報に関連する情報です.YumeBox は自動化を有効にするか Wi-Fi スキャンをタップしたときだけ、端末上でのルール照合または結果表示のために正確な位置情報を使用します.GPS の読み取りや Wi-Fi 名の送信は行いません.", + ApproximateTitle = "正確な位置情報が必要です", + ApproximateMessage = "おおよその位置情報では Wi-Fi 名が非表示のままです.正確な位置情報を許可してください.", + DeniedTitle = "位置情報の許可が必要です", + DeniedMessage = "許可されるまで Wi-Fi 自動化はオフのままです.", + SettingsTitle = "設定で位置情報を許可", + SettingsMessage = "Android はこの許可を再表示しません.アプリ情報の位置情報で「アプリの使用中のみ許可」と正確な位置情報を有効にしてください.", + LocationTitle = "システムの位置情報をオンにする", + LocationMessage = "システムの位置情報がオフの場合、Android は Wi-Fi 名を隠します.YumeBox は GPS を読み取りません.", + Grant = "許可する", + OpenSettings = "設定を開く", + TurnOnLocation = "位置情報をオンにする", + Added = "Wi-Fi ルールを追加しました", + Duplicate = "この Wi-Fi はすでにルールにあります", + NoWifi = "Wi-Fi 接続が見つかりません", + Unavailable = "Wi-Fi 名を取得できません.位置情報の許可とシステム位置情報を確認してください.", + ), + Error = YumeStrings_NetworkSettings_Error( + VpnDenied = "VPN 権限が拒否されました", + RootRequired = "Root モードには YumeBox の利用可能な Root 権限が必要です", + ), +) + +internal val RuYumeStrings_NetworkSettings: YumeStrings_NetworkSettings = YumeStrings_NetworkSettings( + Title = "Сетевые настройки", + Section = YumeStrings_NetworkSettings_Section( + VpnOptions = "Параметры службы", + Advanced = "Дополнительно", + ProxyOptions = "Контроль доступа", + Kernel = "Ядро", + ), + Advanced = YumeStrings_NetworkSettings_Advanced( + DisableOverrideTitle = "Отключить все переопределения", + ), + RunMode = YumeStrings_NetworkSettings_RunMode( + SectionTitle = "Режим работы", + VpnServiceTitle = "Vpn Service", + VpnServiceSummary = "Системный VPN, глобальный прокси", + TunTitle = "Tun", + TunSummary = "Виртуальный сетевой интерфейс, требующий root", + EbpfTitle = "eBPF", + EbpfSummary = "Root eBPF прокси", + ), + VpnOptions = YumeStrings_NetworkSettings_VpnOptions( + BypassPrivateTitle = "Обходить частные сети", + DnsHijackTitle = "Перехват DNS", + AllowBypassTitle = "Разрешить обход приложениями", + EnableIpv6Title = "Включить IPv6", + SystemProxyTitle = "Встроенный системный прокси VPN", + ), + EbpfOptions = YumeStrings_NetworkSettings_EbpfOptions( + BypassCnTitle = "Обходить IP материкового Китая в ядре", + ), + TunOptions = YumeStrings_NetworkSettings_TunOptions( + Title = "Параметры Tun", + IfNameTitle = "Виртуальный NIC", + MtuTitle = "MTU", + StackTitle = "Сетевой стек", + StackSystem = "System", + StackGVisor = "gVisor", + StackMixed = "Mixed", + StackMips = "MIPS", + AutoRouteTitle = "Автомаршрут", + StrictRouteTitle = "Строгий маршрут", + AutoRedirectTitle = "Автоперенаправление", + DnsModeTitle = "Режим DNS", + DnsRedirHost = "RedirHost", + DnsFakeIp = "FakeIP", + Ipv6Title = "Включить IPv6", + ), + Kernel = YumeStrings_NetworkSettings_Kernel( + ActiveTitle = "Активное ядро", + BundledAlpha = "Builtin", + RefreshTitle = "Получить последние ядра", + DownloadTitle = "Удалённые ядра", + FetchButton = "Получить последние", + DownloadButton = "Скачать", + CustomTitle = "Пользовательское ядро", + CustomMethodTitle = "Способ импорта", + CustomUrlMethod = "Ввести URL плагина", + CustomFileMethod = "Загрузить плагин", + CustomUrlLabel = "URL плагина", + CustomChooseFile = "Выбрать файл плагина", + CustomInstallButton = "Установить и включить", + ), + ProxyOptions = YumeStrings_NetworkSettings_ProxyOptions( + AccessControlModeTitle = "Режим контроля доступа", + AllowAll = "Разрешить все", + AllowSelected = "Разрешить выбранные", + RejectSelected = "Запретить выбранные", + ManageAccessControlTitle = "Управление контролем доступа", + ), + WifiAutomation = YumeStrings_NetworkSettings_WifiAutomation( + Title = "Автоматизация Wi-Fi", + EnabledTitle = "Автоматизация Wi-Fi", + WifiNameHeading = "Имя Wi-Fi", + NetworkChangeSection = "Смена сети", + OtherWifiTitle = "При подключении к другой Wi-Fi", + NoWifiTitle = "Когда Wi-Fi отключён (сотовая сеть / Ethernet / офлайн)", + AddCurrent = "Добавить текущий Wi-Fi", + AddManual = "Добавить Wi-Fi вручную", + Scan = "Сканировать Wi-Fi", + Scanning = "Сканирование Wi-Fi…", + ScanEmpty = "Сети Wi-Fi не найдены", + ScanUnavailable = "Не удалось сканировать Wi-Fi. Проверьте Wi-Fi, разрешение на местоположение и системное местоположение.", + ManualDialogTitle = "Добавить Wi-Fi", + EditDialogTitle = "Изменить Wi-Fi", + ManualDialogLabel = "Имя Wi-Fi", + StartAction = "Запустить VPN", + StopAction = "Остановить VPN", + KeepAction = "Ничего не делать", + ActionTitle = "При подключении", + ProfileAction = "Переключиться на профиль", + NoSwitchAction = "Не переключать", + EmptyRules = "Нет правил Wi-Fi", + VpnOnly = "Автоматизация Wi-Fi доступна только в режиме VPN", + PermissionTitle = "Разрешить чтение имени Wi-Fi", + PermissionMessage = "Android считает имена Wi-Fi данными, связанными с местоположением. YumeBox использует точное местоположение только при включении автоматизации или нажатии «Сканировать Wi-Fi», чтобы сопоставить правила на этом устройстве или показать результаты. GPS не читается, имена Wi-Fi не отправляются.", + ApproximateTitle = "Требуется точное местоположение", + ApproximateMessage = "Приблизительное местоположение скрывает имя Wi-Fi. Разрешите точное местоположение.", + DeniedTitle = "Требуется разрешение на местоположение", + DeniedMessage = "Автоматизация Wi-Fi останется выключенной до выдачи разрешения.", + SettingsTitle = "Включите разрешение в настройках", + SettingsMessage = "Android больше не покажет этот запрос. В информации о приложении разрешите местоположение только во время использования и включите точное местоположение.", + LocationTitle = "Включите системное местоположение", + LocationMessage = "При выключенном системном местоположении Android скрывает имена Wi-Fi. YumeBox не читает GPS.", + Grant = "Разрешить", + OpenSettings = "Открыть настройки", + TurnOnLocation = "Включить местоположение", + Added = "Правило Wi-Fi добавлено", + Duplicate = "Этот Wi-Fi уже есть в правилах", + NoWifi = "Подключение Wi-Fi не найдено", + Unavailable = "Имя Wi-Fi недоступно. Проверьте разрешение и системное местоположение.", + ), + Error = YumeStrings_NetworkSettings_Error( + VpnDenied = "Разрешение VPN отклонено", + RootRequired = "Для root-режима у YumeBox должен быть рабочий root-доступ", + ), +) + diff --git a/locale/src/Onboarding.kt b/locale/src/Onboarding.kt new file mode 100644 index 000000000..e62da7cf2 --- /dev/null +++ b/locale/src/Onboarding.kt @@ -0,0 +1,317 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Onboarding: YumeStrings_Onboarding = YumeStrings_Onboarding( + Navigation = YumeStrings_Onboarding_Navigation( + Back = "返回", + Next = "下一步", + Enter = "进入应用", + Start = "开始体验", + ), + Welcome = YumeStrings_Onboarding_Welcome( + Tagline = "轻量 · 现代 · 自由的代理客户端", + ), + Permission = YumeStrings_Onboarding_Permission( + Title = "确认运行权限", + Subtitle = "权限会影响通知和分应用代理等功能", + Common = YumeStrings_Onboarding_Permission_Common( + Granted = "已授权", + ), + Notification = YumeStrings_Onboarding_Permission_Notification( + Title = "通知权限", + SummaryNeed = "用于显示连接状态和流量通知", + SummaryNotRequired = "当前系统无需额外授权", + ), + AppList = YumeStrings_Onboarding_Permission_AppList( + Title = "应用列表权限", + SummaryNeed = "用于分应用代理等功能", + ), + ), + Privacy = YumeStrings_Onboarding_Privacy( + Title = "确认隐私与协议", + Subtitle = "阅读并同意协议后方可继续", + RichTextLead = "在开始使用前需要同意隐私协议,才能继续使用 YumeBox.", + RichTextPrefix = "继续前请先阅读并同意 ", + RichTextConnector = " 与 ", + RichTextSuffix = ".", + TermsLink = "《使用条款》", + PolicyLink = "《隐私政策》", + Accept = YumeStrings_Onboarding_Privacy_Accept( + Title = "我已阅读并同意隐私政策", + ), + ), + Personalize = YumeStrings_Onboarding_Personalize( + Title = "调整界面风格", + Subtitle = "主题模式和主色可随时在设置中修改", + ), + Finish = YumeStrings_Onboarding_Finish( + Title = "准备完成", + Subtitle = "基础设置已就绪即将进入主页", + ), + Project = YumeStrings_Onboarding_Project( + Github = YumeStrings_Onboarding_Project_Github( + Title = "GitHub 仓库", + Summary = "github.com/yumeyucca/YumeBox", + ), + Community = YumeStrings_Onboarding_Project_Community( + Title = "社区频道", + Summary = "加入频道或群组继续反馈", + ), + ), + Sheet = YumeStrings_Onboarding_Sheet( + PrivacyPolicyTitle = "隐私政策", + LoadFailed = "无法加载协议内容", + ), +) + +internal val ZhYumeStrings_Onboarding: YumeStrings_Onboarding = YumeStrings_Onboarding( + Navigation = YumeStrings_Onboarding_Navigation( + Back = "返回", + Next = "下一步", + Enter = "進入應用", + Start = "開始體驗", + ), + Welcome = YumeStrings_Onboarding_Welcome( + Tagline = "輕量 · 現代 · 自由的代理用戶端", + ), + Permission = YumeStrings_Onboarding_Permission( + Title = "確認執行權限", + Subtitle = "權限會影響通知與分應用代理等功能", + Common = YumeStrings_Onboarding_Permission_Common( + Granted = "已授權", + ), + Notification = YumeStrings_Onboarding_Permission_Notification( + Title = "通知權限", + SummaryNeed = "用於顯示連線狀態與流量通知", + SummaryNotRequired = "目前系統無需額外授權", + ), + AppList = YumeStrings_Onboarding_Permission_AppList( + Title = "應用列表權限", + SummaryNeed = "用於分應用代理等功能", + ), + ), + Privacy = YumeStrings_Onboarding_Privacy( + Title = "確認隱私與協議", + Subtitle = "閱讀並同意協議後方可繼續", + RichTextLead = "在開始使用前需要同意隱私協議,才能繼續使用 YumeBox.", + RichTextPrefix = "繼續前請先閱讀並同意 ", + RichTextConnector = " 與 ", + RichTextSuffix = ".", + TermsLink = "《使用條款》", + PolicyLink = "《隱私政策》", + Accept = YumeStrings_Onboarding_Privacy_Accept( + Title = "我已閱讀並同意隱私政策", + ), + ), + Personalize = YumeStrings_Onboarding_Personalize( + Title = "調整介面風格", + Subtitle = "主題模式與主色可隨時在設定中修改", + ), + Finish = YumeStrings_Onboarding_Finish( + Title = "準備完成", + Subtitle = "基礎設定已就緒,即將進入主頁", + ), + Project = YumeStrings_Onboarding_Project( + Github = YumeStrings_Onboarding_Project_Github( + Title = "GitHub 倉庫", + Summary = "github.com/yumeyucca/YumeBox", + ), + Community = YumeStrings_Onboarding_Project_Community( + Title = "社群頻道", + Summary = "加入頻道或群組繼續回饋", + ), + ), + Sheet = YumeStrings_Onboarding_Sheet( + PrivacyPolicyTitle = "隱私政策", + LoadFailed = "無法載入協議內容", + ), +) + +internal val EnYumeStrings_Onboarding: YumeStrings_Onboarding = YumeStrings_Onboarding( + Navigation = YumeStrings_Onboarding_Navigation( + Back = "Back", + Next = "Next", + Enter = "Enter App", + Start = "Get Started", + ), + Welcome = YumeStrings_Onboarding_Welcome( + Tagline = "A lightweight, modern, open proxy client", + ), + Permission = YumeStrings_Onboarding_Permission( + Title = "Confirm Runtime Access", + Subtitle = "Permissions affect notifications and per-app proxy features", + Common = YumeStrings_Onboarding_Permission_Common( + Granted = "Granted", + ), + Notification = YumeStrings_Onboarding_Permission_Notification( + Title = "Notification Permission", + SummaryNeed = "Show connection status and traffic notifications", + SummaryNotRequired = "Not required on your Android version", + ), + AppList = YumeStrings_Onboarding_Permission_AppList( + Title = "App List Permission", + SummaryNeed = "Required for per-app proxy features", + ), + ), + Privacy = YumeStrings_Onboarding_Privacy( + Title = "Confirm Privacy Terms", + Subtitle = "Review and accept the terms to continue", + RichTextLead = "You need to accept the privacy terms before using YumeBox.", + RichTextPrefix = "Before continuing, please review and accept ", + RichTextConnector = " and ", + RichTextSuffix = ".", + TermsLink = "Terms of Use", + PolicyLink = "Privacy Policy", + Accept = YumeStrings_Onboarding_Privacy_Accept( + Title = "I have read and agree to the privacy policy", + ), + ), + Personalize = YumeStrings_Onboarding_Personalize( + Title = "Tune the Interface", + Subtitle = "Theme mode and accent color can be changed anytime in settings", + ), + Finish = YumeStrings_Onboarding_Finish( + Title = "Ready to Go", + Subtitle = "Setup complete, entering the main app", + ), + Project = YumeStrings_Onboarding_Project( + Github = YumeStrings_Onboarding_Project_Github( + Title = "GitHub Repo", + Summary = "github.com/yumeyucca/YumeBox", + ), + Community = YumeStrings_Onboarding_Project_Community( + Title = "Community", + Summary = "Jump into the channel or chat", + ), + ), + Sheet = YumeStrings_Onboarding_Sheet( + PrivacyPolicyTitle = "Privacy Policy", + LoadFailed = "Failed to load policy content", + ), +) + +internal val JaYumeStrings_Onboarding: YumeStrings_Onboarding = YumeStrings_Onboarding( + Navigation = YumeStrings_Onboarding_Navigation( + Back = "戻る", + Next = "次へ", + Enter = "アプリへ", + Start = "はじめる", + ), + Welcome = YumeStrings_Onboarding_Welcome( + Tagline = "軽量・モダン・オープンなプロキシクライアント", + ), + Permission = YumeStrings_Onboarding_Permission( + Title = "実行時の権限を確認", + Subtitle = "権限は通知やアプリ別プロキシ機能に影響します", + Common = YumeStrings_Onboarding_Permission_Common( + Granted = "許可済み", + ), + Notification = YumeStrings_Onboarding_Permission_Notification( + Title = "通知の権限", + SummaryNeed = "接続状態と通信量の通知を表示します", + SummaryNotRequired = "お使いの Android では不要です", + ), + AppList = YumeStrings_Onboarding_Permission_AppList( + Title = "アプリ一覧の権限", + SummaryNeed = "アプリ別プロキシ機能に必要です", + ), + ), + Privacy = YumeStrings_Onboarding_Privacy( + Title = "プライバシー条項を確認", + Subtitle = "内容を確認して同意すると続行できます", + RichTextLead = "YumeBox を使う前にプライバシー条項への同意が必要です.", + RichTextPrefix = "続行する前に ", + RichTextConnector = " と ", + RichTextSuffix = " を確認して同意してください.", + TermsLink = "利用規約", + PolicyLink = "プライバシーポリシー", + Accept = YumeStrings_Onboarding_Privacy_Accept( + Title = "プライバシーポリシーを読み、同意します", + ), + ), + Personalize = YumeStrings_Onboarding_Personalize( + Title = "インターフェースを調整", + Subtitle = "テーマモードとアクセントカラーは設定からいつでも変更できます", + ), + Finish = YumeStrings_Onboarding_Finish( + Title = "準備完了", + Subtitle = "セットアップが完了し、メイン画面へ進みます", + ), + Project = YumeStrings_Onboarding_Project( + Github = YumeStrings_Onboarding_Project_Github( + Title = "GitHub リポジトリ", + Summary = "github.com/yumeyucca/YumeBox", + ), + Community = YumeStrings_Onboarding_Project_Community( + Title = "コミュニティ", + Summary = "チャンネルやチャットに参加", + ), + ), + Sheet = YumeStrings_Onboarding_Sheet( + PrivacyPolicyTitle = "プライバシーポリシー", + LoadFailed = "ポリシー内容の読み込みに失敗しました", + ), +) + +internal val RuYumeStrings_Onboarding: YumeStrings_Onboarding = YumeStrings_Onboarding( + Navigation = YumeStrings_Onboarding_Navigation( + Back = "Назад", + Next = "Далее", + Enter = "В приложение", + Start = "Начать", + ), + Welcome = YumeStrings_Onboarding_Welcome( + Tagline = "Лёгкий, современный и открытый прокси-клиент", + ), + Permission = YumeStrings_Onboarding_Permission( + Title = "Подтвердите доступ во время работы", + Subtitle = "Разрешения влияют на уведомления и прокси по приложениям", + Common = YumeStrings_Onboarding_Permission_Common( + Granted = "Разрешено", + ), + Notification = YumeStrings_Onboarding_Permission_Notification( + Title = "Разрешение на уведомления", + SummaryNeed = "Показывать состояние подключения и уведомления о трафике", + SummaryNotRequired = "На вашей версии Android не требуется", + ), + AppList = YumeStrings_Onboarding_Permission_AppList( + Title = "Разрешение на список приложений", + SummaryNeed = "Нужно для прокси по приложениям", + ), + ), + Privacy = YumeStrings_Onboarding_Privacy( + Title = "Подтвердите условия конфиденциальности", + Subtitle = "Ознакомьтесь и примите условия, чтобы продолжить", + RichTextLead = "Перед использованием YumeBox нужно принять условия конфиденциальности.", + RichTextPrefix = "Перед продолжением ознакомьтесь и примите ", + RichTextConnector = " и ", + RichTextSuffix = ".", + TermsLink = "Условия использования", + PolicyLink = "Политику конфиденциальности", + Accept = YumeStrings_Onboarding_Privacy_Accept( + Title = "Я прочитал(а) и согласен(на) с политикой конфиденциальности", + ), + ), + Personalize = YumeStrings_Onboarding_Personalize( + Title = "Настройте интерфейс", + Subtitle = "Режим темы и акцентный цвет можно изменить позже в настройках", + ), + Finish = YumeStrings_Onboarding_Finish( + Title = "Готово", + Subtitle = "Настройка завершена, переход к основному экрану", + ), + Project = YumeStrings_Onboarding_Project( + Github = YumeStrings_Onboarding_Project_Github( + Title = "Репозиторий GitHub", + Summary = "github.com/yumeyucca/YumeBox", + ), + Community = YumeStrings_Onboarding_Project_Community( + Title = "Сообщество", + Summary = "Перейти в канал или чат", + ), + ), + Sheet = YumeStrings_Onboarding_Sheet( + PrivacyPolicyTitle = "Политика конфиденциальности", + LoadFailed = "Не удалось загрузить текст политики", + ), +) + diff --git a/locale/src/OpenSourceLicenses.kt b/locale/src/OpenSourceLicenses.kt new file mode 100644 index 000000000..283195b3b --- /dev/null +++ b/locale/src/OpenSourceLicenses.kt @@ -0,0 +1,37 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_OpenSourceLicenses: YumeStrings_OpenSourceLicenses = YumeStrings_OpenSourceLicenses( + Title = "开源许可证", + LicenseSheet = YumeStrings_OpenSourceLicenses_LicenseSheet( + NoContent = "暂无许可证内容", + ), +) + +internal val ZhYumeStrings_OpenSourceLicenses: YumeStrings_OpenSourceLicenses = YumeStrings_OpenSourceLicenses( + Title = "開源授權", + LicenseSheet = YumeStrings_OpenSourceLicenses_LicenseSheet( + NoContent = "暫無授權內容", + ), +) + +internal val EnYumeStrings_OpenSourceLicenses: YumeStrings_OpenSourceLicenses = YumeStrings_OpenSourceLicenses( + Title = "Open Source Licenses", + LicenseSheet = YumeStrings_OpenSourceLicenses_LicenseSheet( + NoContent = "No license content", + ), +) + +internal val JaYumeStrings_OpenSourceLicenses: YumeStrings_OpenSourceLicenses = YumeStrings_OpenSourceLicenses( + Title = "オープンソースライセンス", + LicenseSheet = YumeStrings_OpenSourceLicenses_LicenseSheet( + NoContent = "ライセンス内容がありません", + ), +) + +internal val RuYumeStrings_OpenSourceLicenses: YumeStrings_OpenSourceLicenses = YumeStrings_OpenSourceLicenses( + Title = "Лицензии с открытым исходным кодом", + LicenseSheet = YumeStrings_OpenSourceLicenses_LicenseSheet( + NoContent = "Содержимое лицензии отсутствует", + ), +) + diff --git a/locale/src/Override.kt b/locale/src/Override.kt new file mode 100644 index 000000000..c1a0fa33f --- /dev/null +++ b/locale/src/Override.kt @@ -0,0 +1,467 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Override: YumeStrings_Override = YumeStrings_Override( + Title = "覆写配置", + Action = YumeStrings_Override_Action( + Create = "创建配置", + New = "新建配置", + NetworkImport = "链接导入", + ), + BuiltIn = YumeStrings_Override_BuiltIn( + PreventDnsLeak = "防止 DNS 泄露", + AddDirectRules = "添加直连规则", + PuddingDog = "布丁狗的订阅转换", + Acl4ssrOnlineFull = "ACL4SSR Online Full", + CopyName = "%s (副本)", + ), + Empty = YumeStrings_Override_Empty( + Title = "暂无覆写配置", + Hint = "点击下方按钮创建新配置,或导入配置文件", + UserTitle = "暂无导入覆写", + UserHint = "可新建或导入 YAML / JS 覆写", + ), + Section = YumeStrings_Override_Section( + BuiltIn = "内置覆写", + User = "导入覆写", + ), + Status = YumeStrings_Override_Status( + InUse = "使用中", + NotInUse = "未使用", + BuiltIn = "内置", + ), + Card = YumeStrings_Override_Card( + Copy = "复制配置", + Export = "导出配置", + Edit = "编辑配置", + Delete = "删除配置", + EditButton = "编辑", + DeleteButton = "删除", + Apply = "应用配置", + ApplyButton = "应用", + ), + ApplySheet = YumeStrings_Override_ApplySheet( + Title = "应用到订阅", + Empty = "暂无订阅", + Success = "已更新应用范围", + Failed = "更新应用范围失败:%s", + Button = YumeStrings_Override_ApplySheet_Button( + Cancel = "取消", + Confirm = "确定", + ), + ), + Import = YumeStrings_Override_Import( + ReadError = "无法读取导入文件", + Failed = "导入失败: %s", + FileError = "读取文件失败: %s", + NetworkError = "链接导入失败: %s", + InvalidUrl = "请输入 HTTP 或 HTTPS 链接", + HttpError = "HTTP 请求失败:%d", + UnsupportedType = "仅支持 YAML 或 JS", + EmptyJavaScript = "JS 文件为空", + ), + Export = YumeStrings_Override_Export( + Failed = "导出失败:%s", + Success = "已导出配置:%s", + ), + Dialog = YumeStrings_Override_Dialog( + Create = YumeStrings_Override_Dialog_Create( + Title = "添加配置", + Name = "配置名称", + Url = "配置链接", + Type = "创建类型", + ), + Delete = YumeStrings_Override_Dialog_Delete( + Title = "删除配置", + InUseMessage = "配置 %s 正在被订阅使用,删除后将解除绑定关系.确定要删除吗?此操作不可恢复.", + Message = "确定要删除配置 %s 吗?此操作不可恢复.", + ), + Button = YumeStrings_Override_Dialog_Button( + Cancel = "取消", + Delete = "删除", + ), + ), + Draft = YumeStrings_Override_Draft( + BasicRouting = "基础分流", + ServiceRouting = "服务分流", + ), + Save = YumeStrings_Override_Save( + ImportDefaultName = "导入的覆写配置", + Failed = "保存覆写失败", + ), + Label = YumeStrings_Override_Label( + RulesReplace = "覆盖规则", + ), +) + +internal val ZhYumeStrings_Override: YumeStrings_Override = YumeStrings_Override( + Title = "覆寫設定", + Action = YumeStrings_Override_Action( + Create = "建立設定", + New = "新增設定", + NetworkImport = "連結匯入", + ), + BuiltIn = YumeStrings_Override_BuiltIn( + PreventDnsLeak = "防止 DNS 洩漏", + AddDirectRules = "新增直連規則", + PuddingDog = "布丁狗的訂閱轉換", + Acl4ssrOnlineFull = "ACL4SSR Online Full", + CopyName = "%s (副本)", + ), + Empty = YumeStrings_Override_Empty( + Title = "暫無覆寫設定", + Hint = "點下方按鈕建立新設定,或匯入設定檔", + UserTitle = "暫無匯入覆寫", + UserHint = "可新增或匯入 YAML / JS 覆寫", + ), + Section = YumeStrings_Override_Section( + BuiltIn = "內建", + User = "已匯入", + ), + Status = YumeStrings_Override_Status( + InUse = "使用中", + NotInUse = "未使用", + BuiltIn = "內建", + ), + Card = YumeStrings_Override_Card( + Copy = "複製設定", + Export = "匯出設定", + Edit = "編輯設定", + Delete = "刪除設定", + EditButton = "編輯", + DeleteButton = "刪除", + Apply = "套用設定", + ApplyButton = "套用", + ), + ApplySheet = YumeStrings_Override_ApplySheet( + Title = "套用到訂閱", + Empty = "暫無訂閱", + Success = "已更新套用範圍", + Failed = "更新套用範圍失敗:%s", + Button = YumeStrings_Override_ApplySheet_Button( + Cancel = "取消", + Confirm = "確定", + ), + ), + Import = YumeStrings_Override_Import( + ReadError = "無法讀取匯入檔案", + Failed = "匯入失敗: %s", + FileError = "讀取檔案失敗: %s", + NetworkError = "連結匯入失敗: %s", + InvalidUrl = "請輸入 HTTP 或 HTTPS 連結", + HttpError = "HTTP 請求失敗:%d", + UnsupportedType = "僅支援 YAML 或 JS", + EmptyJavaScript = "JS 檔案為空", + ), + Export = YumeStrings_Override_Export( + Failed = "匯出失敗:%s", + Success = "已匯出設定:%s", + ), + Dialog = YumeStrings_Override_Dialog( + Create = YumeStrings_Override_Dialog_Create( + Title = "新增設定", + Name = "設定名稱", + Url = "設定連結", + Type = "建立類型", + ), + Delete = YumeStrings_Override_Dialog_Delete( + Title = "刪除設定", + InUseMessage = "設定 %s 正在被訂閱使用,刪除後將解除綁定關係.確定要刪除嗎?此操作無法復原.", + Message = "確定要刪除設定 %s 嗎?此操作無法復原.", + ), + Button = YumeStrings_Override_Dialog_Button( + Cancel = "取消", + Delete = "刪除", + ), + ), + Draft = YumeStrings_Override_Draft( + BasicRouting = "基礎分流", + ServiceRouting = "服務分流", + ), + Save = YumeStrings_Override_Save( + ImportDefaultName = "匯入的覆寫設定", + Failed = "儲存覆寫失敗", + ), + Label = YumeStrings_Override_Label( + RulesReplace = "覆蓋規則", + ), +) + +internal val EnYumeStrings_Override: YumeStrings_Override = YumeStrings_Override( + Title = "Override Configs", + Action = YumeStrings_Override_Action( + Create = "Create Config", + New = "New Config", + NetworkImport = "Import from Link", + ), + BuiltIn = YumeStrings_Override_BuiltIn( + PreventDnsLeak = "Prevent DNS Leaks", + AddDirectRules = "Add Direct Rules", + PuddingDog = "Pudding Dog Subscription Conversion", + Acl4ssrOnlineFull = "ACL4SSR Online Full", + CopyName = "%s (Copy)", + ), + Empty = YumeStrings_Override_Empty( + Title = "No override configs", + Hint = "Click the button below to create a new config, or import a config file", + UserTitle = "No imported overrides", + UserHint = "Create or import a YAML / JS override", + ), + Section = YumeStrings_Override_Section( + BuiltIn = "Built-in", + User = "Imported", + ), + Status = YumeStrings_Override_Status( + InUse = "In Use", + NotInUse = "Not in Use", + BuiltIn = "Built-in", + ), + Card = YumeStrings_Override_Card( + Copy = "Copy Config", + Export = "Export Config", + Edit = "Edit Config", + Delete = "Delete Config", + EditButton = "Edit", + DeleteButton = "Delete", + Apply = "Apply Config", + ApplyButton = "Apply", + ), + ApplySheet = YumeStrings_Override_ApplySheet( + Title = "Apply to Subscriptions", + Empty = "No subscriptions", + Success = "Application scope updated", + Failed = "Failed to update application scope: %s", + Button = YumeStrings_Override_ApplySheet_Button( + Cancel = "Cancel", + Confirm = "Confirm", + ), + ), + Import = YumeStrings_Override_Import( + ReadError = "Cannot read import file", + Failed = "Import failed: %s", + FileError = "Failed to read file: %s", + NetworkError = "Link import failed: %s", + InvalidUrl = "Enter an HTTP or HTTPS URL", + HttpError = "HTTP request failed: %d", + UnsupportedType = "Only YAML or JS is supported", + EmptyJavaScript = "JS file is empty", + ), + Export = YumeStrings_Override_Export( + Failed = "Export failed: %s", + Success = "Exported config: %s", + ), + Dialog = YumeStrings_Override_Dialog( + Create = YumeStrings_Override_Dialog_Create( + Title = "Add Config", + Name = "Config Name", + Url = "Config URL", + Type = "Creation Type", + ), + Delete = YumeStrings_Override_Dialog_Delete( + Title = "Delete Config", + InUseMessage = "Config %s is being used by subscriptions. Deleting will unbind the relationship. Are you sure? This action cannot be undone.", + Message = "Are you sure you want to delete config %s? This action cannot be undone.", + ), + Button = YumeStrings_Override_Dialog_Button( + Cancel = "Cancel", + Delete = "Delete", + ), + ), + Draft = YumeStrings_Override_Draft( + BasicRouting = "Basic Routing", + ServiceRouting = "Service Routing", + ), + Save = YumeStrings_Override_Save( + ImportDefaultName = "Imported Override Config", + Failed = "Failed to save override", + ), + Label = YumeStrings_Override_Label( + RulesReplace = "Override Rules", + ), +) + +internal val JaYumeStrings_Override: YumeStrings_Override = YumeStrings_Override( + Title = "上書き設定", + Action = YumeStrings_Override_Action( + Create = "設定を作成", + New = "新規設定", + NetworkImport = "リンクからインポート", + ), + BuiltIn = YumeStrings_Override_BuiltIn( + PreventDnsLeak = "DNS リークを防止", + AddDirectRules = "直通ルールを追加", + PuddingDog = "Pudding Dog 購読変換", + Acl4ssrOnlineFull = "ACL4SSR Online Full", + CopyName = "%s (コピー)", + ), + Empty = YumeStrings_Override_Empty( + Title = "上書き設定がありません", + Hint = "下のボタンで新規作成するか、設定ファイルをインポート", + UserTitle = "インポート済みの上書きがありません", + UserHint = "YAML / JS の上書きを作成またはインポートできます", + ), + Section = YumeStrings_Override_Section( + BuiltIn = "組み込み", + User = "インポート済み", + ), + Status = YumeStrings_Override_Status( + InUse = "使用中", + NotInUse = "未使用", + BuiltIn = "組み込み", + ), + Card = YumeStrings_Override_Card( + Copy = "設定をコピー", + Export = "設定を書き出し", + Edit = "設定を編集", + Delete = "設定を削除", + EditButton = "編集", + DeleteButton = "削除", + Apply = "設定を適用", + ApplyButton = "適用", + ), + ApplySheet = YumeStrings_Override_ApplySheet( + Title = "購読へ適用", + Empty = "購読がありません", + Success = "適用範囲を更新しました", + Failed = "適用範囲の更新に失敗しました: %s", + Button = YumeStrings_Override_ApplySheet_Button( + Cancel = "キャンセル", + Confirm = "確定", + ), + ), + Import = YumeStrings_Override_Import( + ReadError = "インポートファイルを読み取れません", + Failed = "インポートに失敗しました: %s", + FileError = "ファイルの読み取りに失敗しました: %s", + NetworkError = "リンクのインポートに失敗しました: %s", + InvalidUrl = "HTTP または HTTPS の URL を入力してください", + HttpError = "HTTP 要求に失敗しました: %d", + UnsupportedType = "YAML または JS のみ対応", + EmptyJavaScript = "JS ファイルが空です", + ), + Export = YumeStrings_Override_Export( + Failed = "書き出しに失敗しました: %s", + Success = "設定を書き出しました: %s", + ), + Dialog = YumeStrings_Override_Dialog( + Create = YumeStrings_Override_Dialog_Create( + Title = "設定を追加", + Name = "設定名", + Url = "設定 URL", + Type = "作成種別", + ), + Delete = YumeStrings_Override_Dialog_Delete( + Title = "設定を削除", + InUseMessage = "設定 %s は購読で使用中です.削除すると関連付けが解除されます.本当に削除しますか?この操作は元に戻せません.", + Message = "設定 %s を削除しますか?この操作は元に戻せません.", + ), + Button = YumeStrings_Override_Dialog_Button( + Cancel = "キャンセル", + Delete = "削除", + ), + ), + Draft = YumeStrings_Override_Draft( + BasicRouting = "基本ルーティング", + ServiceRouting = "サービスルーティング", + ), + Save = YumeStrings_Override_Save( + ImportDefaultName = "インポートした上書き設定", + Failed = "上書き設定の保存に失敗しました", + ), + Label = YumeStrings_Override_Label( + RulesReplace = "ルールを上書き", + ), +) + +internal val RuYumeStrings_Override: YumeStrings_Override = YumeStrings_Override( + Title = "Переопределения", + Action = YumeStrings_Override_Action( + Create = "Создать конфигурацию", + New = "Новая конфигурация", + NetworkImport = "Импорт по ссылке", + ), + BuiltIn = YumeStrings_Override_BuiltIn( + PreventDnsLeak = "Предотвратить утечки DNS", + AddDirectRules = "Добавить правила прямого доступа", + PuddingDog = "Конвертация подписки Pudding Dog", + Acl4ssrOnlineFull = "ACL4SSR Online Full", + CopyName = "%s (копия)", + ), + Empty = YumeStrings_Override_Empty( + Title = "Нет переопределений", + Hint = "Нажмите кнопку ниже, чтобы создать конфигурацию, или импортируйте файл", + UserTitle = "Нет импортированных переопределений", + UserHint = "Создайте или импортируйте YAML / JS переопределение", + ), + Section = YumeStrings_Override_Section( + BuiltIn = "Встроенные", + User = "Импортированные", + ), + Status = YumeStrings_Override_Status( + InUse = "Используется", + NotInUse = "Не используется", + BuiltIn = "Встроенное", + ), + Card = YumeStrings_Override_Card( + Copy = "Копировать конфигурацию", + Export = "Экспорт конфигурации", + Edit = "Изменить конфигурацию", + Delete = "Удалить конфигурацию", + EditButton = "Изменить", + DeleteButton = "Удалить", + Apply = "Применить конфигурацию", + ApplyButton = "Применить", + ), + ApplySheet = YumeStrings_Override_ApplySheet( + Title = "Применить к подпискам", + Empty = "Нет подписок", + Success = "Область применения обновлена", + Failed = "Не удалось обновить область применения: %s", + Button = YumeStrings_Override_ApplySheet_Button( + Cancel = "Отмена", + Confirm = "Подтвердить", + ), + ), + Import = YumeStrings_Override_Import( + ReadError = "Не удалось прочитать файл импорта", + Failed = "Импорт не удался: %s", + FileError = "Не удалось прочитать файл: %s", + NetworkError = "Импорт по ссылке не удался: %s", + InvalidUrl = "Введите URL HTTP или HTTPS", + HttpError = "HTTP-запрос не удался: %d", + UnsupportedType = "Поддерживаются только YAML или JS", + EmptyJavaScript = "JS-файл пуст", + ), + Export = YumeStrings_Override_Export( + Failed = "Экспорт не удался: %s", + Success = "Конфигурация экспортирована: %s", + ), + Dialog = YumeStrings_Override_Dialog( + Create = YumeStrings_Override_Dialog_Create( + Title = "Добавить конфигурацию", + Name = "Имя конфигурации", + Url = "URL конфигурации", + Type = "Тип создания", + ), + Delete = YumeStrings_Override_Dialog_Delete( + Title = "Удалить конфигурацию", + InUseMessage = "Конфигурация %s используется подписками. Удаление снимет привязку. Удалить? Это действие нельзя отменить.", + Message = "Удалить конфигурацию %s? Это действие нельзя отменить.", + ), + Button = YumeStrings_Override_Dialog_Button( + Cancel = "Отмена", + Delete = "Удалить", + ), + ), + Draft = YumeStrings_Override_Draft( + BasicRouting = "Базовая маршрутизация", + ServiceRouting = "Сервисная маршрутизация", + ), + Save = YumeStrings_Override_Save( + ImportDefaultName = "Импортированное переопределение", + Failed = "Не удалось сохранить переопределение", + ), + Label = YumeStrings_Override_Label( + RulesReplace = "Переопределить правила", + ), +) + diff --git a/locale/src/ProfilesPage.kt b/locale/src/ProfilesPage.kt new file mode 100644 index 000000000..a08507272 --- /dev/null +++ b/locale/src/ProfilesPage.kt @@ -0,0 +1,512 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_ProfilesPage: YumeStrings_ProfilesPage = YumeStrings_ProfilesPage( + Title = "配置", + Action = YumeStrings_ProfilesPage_Action( + UpdateAll = "一键更新所有", + AddProfile = "添加配置", + ), + Empty = YumeStrings_ProfilesPage_Empty( + NoProfiles = "暂无配置文件", + Hint = "点击右上角添加配置", + ), + Sheet = YumeStrings_ProfilesPage_Sheet( + AddTitle = "添加配置文件", + EditTitle = "编辑配置文件", + Complete = "完成", + ), + Type = YumeStrings_ProfilesPage_Type( + Title = "配置类型", + Subscription = "订阅链接", + LocalFile = "本地文件", + QrScan = "扫码添加", + ), + Input = YumeStrings_ProfilesPage_Input( + ProfileName = "配置名称", + SubscriptionUrl = "订阅链接 (HTTP/HTTPS)", + SelectFile = "点击选择文件", + NewProfile = "新配置", + AgeSecretKey = "Age 私钥(可选)", + ), + QrScanner = YumeStrings_ProfilesPage_QrScanner( + NeedPermission = "需要相机权限", + NeedCamera = "需要相机权限才能扫码", + SelectFromAlbum = "从相册选择二维码图片", + RecognizeSuccess = "识别成功", + RecognizeFailed = "未能识别到二维码", + RecognizeError = "识别失败:%s", + ), + Message = YumeStrings_ProfilesPage_Message( + UnknownFile = "未知文件", + ), + Validation = YumeStrings_ProfilesPage_Validation( + EnterUrl = "请输入链接", + SelectFile = "请选择文件", + YamlOnly = "仅支持 .yaml 或 .yml 格式的配置文件", + ), + Progress = YumeStrings_ProfilesPage_Progress( + Downloading = "下载中...", + ), + Button = YumeStrings_ProfilesPage_Button( + Cancel = "取消", + Confirm = "确定", + ), + DeleteDialog = YumeStrings_ProfilesPage_DeleteDialog( + Title = "删除配置", + Message = "确定要删除「%s」吗?", + Confirm = "删除", + ), + EditDialog = YumeStrings_ProfilesPage_EditDialog( + Title = "编辑配置名称", + ), + LinkSettings = YumeStrings_ProfilesPage_LinkSettings( + Title = "链接设置", + OpenMode = "打开方式", + OpenModeInApp = "App 内打开", + OpenModeExternal = "外部浏览器", + DefaultLink = "默认链接", + DefaultLinkSummary = "点击左上角快捷按钮时打开的链接", + AddLink = "添加链接", + EditLink = "编辑链接", + Name = "名称", + Url = "链接", + Close = "关闭", + Validation = YumeStrings_ProfilesPage_LinkSettings_Validation( + EnterName = "请输入名称", + EnterUrl = "请输入链接", + InvalidUrl = "请输入有效的链接", + ), + ), + ShareDialog = YumeStrings_ProfilesPage_ShareDialog( + Title = "分享配置", + ShareFile = "分享配置文件", + ShareLink = "分享订阅链接", + NoLink = "该配置没有订阅链接", + ImportedConfigMissing = "导入配置不存在:%s", + ), + SettingsDialog = YumeStrings_ProfilesPage_SettingsDialog( + Title = "订阅设置", + ChangeLink = "更改订阅链接", + CustomRouting = "自定义分流", + CustomRoutingSummary = "独立的分流规则", + NoDescription = "未设置说明", + EditProfile = "编辑配置", + OpenConfig = "编辑器打开", + EditSettings = "订阅设置", + SectionType = "设置类型", + SectionSubscription = "订阅信息", + SectionOverride = "覆写配置", + SaveFailed = "保存配置失败", + ConfigMissing = "配置不存在:%s", + AgeSecretKey = "Age 私钥", + ), +) + +internal val ZhYumeStrings_ProfilesPage: YumeStrings_ProfilesPage = YumeStrings_ProfilesPage( + Title = "設定檔", + Action = YumeStrings_ProfilesPage_Action( + UpdateAll = "一鍵更新全部", + AddProfile = "新增設定檔", + ), + Empty = YumeStrings_ProfilesPage_Empty( + NoProfiles = "暫無設定檔", + Hint = "點右上角新增設定檔", + ), + Sheet = YumeStrings_ProfilesPage_Sheet( + AddTitle = "新增設定檔", + EditTitle = "編輯設定檔", + Complete = "完成", + ), + Type = YumeStrings_ProfilesPage_Type( + Title = "設定檔類型", + Subscription = "訂閱連結", + LocalFile = "本機檔案", + QrScan = "掃描 QR Code", + ), + Input = YumeStrings_ProfilesPage_Input( + ProfileName = "設定檔名稱", + SubscriptionUrl = "訂閱連結 (HTTP/HTTPS)", + SelectFile = "點一下選擇檔案", + NewProfile = "新設定檔", + AgeSecretKey = "Age 私鑰(選填)", + ), + QrScanner = YumeStrings_ProfilesPage_QrScanner( + NeedPermission = "需要相機權限", + NeedCamera = "需要相機權限才能掃描", + SelectFromAlbum = "從相簿選擇 QR Code 圖片", + RecognizeSuccess = "辨識成功", + RecognizeFailed = "未能辨識到 QR Code", + RecognizeError = "辨識失敗:%s", + ), + Message = YumeStrings_ProfilesPage_Message( + UnknownFile = "未知檔案", + ), + Validation = YumeStrings_ProfilesPage_Validation( + EnterUrl = "請輸入連結", + SelectFile = "請選擇檔案", + YamlOnly = "僅支援 .yaml 或 .yml 格式", + ), + Progress = YumeStrings_ProfilesPage_Progress( + Downloading = "下載中...", + ), + Button = YumeStrings_ProfilesPage_Button( + Cancel = "取消", + Confirm = "確定", + ), + DeleteDialog = YumeStrings_ProfilesPage_DeleteDialog( + Title = "刪除設定檔", + Message = "確定要刪除「%s」嗎?", + Confirm = "刪除", + ), + EditDialog = YumeStrings_ProfilesPage_EditDialog( + Title = "編輯設定檔名稱", + ), + LinkSettings = YumeStrings_ProfilesPage_LinkSettings( + Title = "連結設定", + OpenMode = "開啟方式", + OpenModeInApp = "應用內開啟", + OpenModeExternal = "外部瀏覽器", + DefaultLink = "預設連結", + DefaultLinkSummary = "點左上角捷徑按鈕時開啟的連結", + AddLink = "新增連結", + EditLink = "編輯連結", + Name = "名稱", + Url = "連結", + Close = "關閉", + Validation = YumeStrings_ProfilesPage_LinkSettings_Validation( + EnterName = "請輸入名稱", + EnterUrl = "請輸入連結", + InvalidUrl = "請輸入有效的連結", + ), + ), + ShareDialog = YumeStrings_ProfilesPage_ShareDialog( + Title = "分享設定檔", + ShareFile = "分享設定檔", + ShareLink = "分享訂閱連結", + NoLink = "此設定檔沒有訂閱連結", + ImportedConfigMissing = "匯入設定不存在:%s", + ), + SettingsDialog = YumeStrings_ProfilesPage_SettingsDialog( + Title = "訂閱設定", + ChangeLink = "變更訂閱連結", + CustomRouting = "自訂分流", + CustomRoutingSummary = "獨立的分流規則", + NoDescription = "未設定說明", + EditProfile = "編輯設定檔", + OpenConfig = "以編輯器開啟", + EditSettings = "訂閱設定", + SectionType = "設定類型", + SectionSubscription = "訂閱資訊", + SectionOverride = "覆寫設定", + SaveFailed = "儲存設定檔失敗", + ConfigMissing = "設定檔不存在:%s", + AgeSecretKey = "Age 私鑰", + ), +) + +internal val EnYumeStrings_ProfilesPage: YumeStrings_ProfilesPage = YumeStrings_ProfilesPage( + Title = "Profiles", + Action = YumeStrings_ProfilesPage_Action( + UpdateAll = "Update All", + AddProfile = "Add Profile", + ), + Empty = YumeStrings_ProfilesPage_Empty( + NoProfiles = "No profiles", + Hint = "Click top-right to add profile", + ), + Sheet = YumeStrings_ProfilesPage_Sheet( + AddTitle = "Add Profile", + EditTitle = "Edit Profile", + Complete = "Complete", + ), + Type = YumeStrings_ProfilesPage_Type( + Title = "Profile Type", + Subscription = "Subscription URL", + LocalFile = "Local File", + QrScan = "Scan QR Code", + ), + Input = YumeStrings_ProfilesPage_Input( + ProfileName = "Profile Name", + SubscriptionUrl = "Subscription URL (HTTP/HTTPS)", + SelectFile = "Click to select file", + NewProfile = "New Profile", + AgeSecretKey = "Age Secret Key (optional)", + ), + QrScanner = YumeStrings_ProfilesPage_QrScanner( + NeedPermission = "Camera permission required", + NeedCamera = "Camera permission required for scanning", + SelectFromAlbum = "Select QR code from album", + RecognizeSuccess = "Recognition successful", + RecognizeFailed = "Failed to recognize QR code", + RecognizeError = "Recognition failed: %s", + ), + Message = YumeStrings_ProfilesPage_Message( + UnknownFile = "Unknown file", + ), + Validation = YumeStrings_ProfilesPage_Validation( + EnterUrl = "Please enter URL", + SelectFile = "Please select a file", + YamlOnly = "Only .yaml or .yml format supported", + ), + Progress = YumeStrings_ProfilesPage_Progress( + Downloading = "Downloading...", + ), + Button = YumeStrings_ProfilesPage_Button( + Cancel = "Cancel", + Confirm = "Confirm", + ), + DeleteDialog = YumeStrings_ProfilesPage_DeleteDialog( + Title = "Delete Profile", + Message = "Are you sure you want to delete '%s'?", + Confirm = "Delete", + ), + EditDialog = YumeStrings_ProfilesPage_EditDialog( + Title = "Edit Profile Name", + ), + LinkSettings = YumeStrings_ProfilesPage_LinkSettings( + Title = "Link Settings", + OpenMode = "Open Mode", + OpenModeInApp = "In App", + OpenModeExternal = "External Browser", + DefaultLink = "Default Link", + DefaultLinkSummary = "Link opened when clicking top-left shortcut button", + AddLink = "Add Link", + EditLink = "Edit Link", + Name = "Name", + Url = "URL", + Close = "Close", + Validation = YumeStrings_ProfilesPage_LinkSettings_Validation( + EnterName = "Please enter name", + EnterUrl = "Please enter URL", + InvalidUrl = "Please enter a valid URL", + ), + ), + ShareDialog = YumeStrings_ProfilesPage_ShareDialog( + Title = "Share Profile", + ShareFile = "Share Config File", + ShareLink = "Share Subscription Link", + NoLink = "This profile has no subscription link", + ImportedConfigMissing = "Imported config missing: %s", + ), + SettingsDialog = YumeStrings_ProfilesPage_SettingsDialog( + Title = "Subscription Settings", + ChangeLink = "Change Subscription Link", + CustomRouting = "Custom Routing", + CustomRoutingSummary = "Standalone routing rules", + NoDescription = "No description set", + EditProfile = "Edit Profile", + OpenConfig = "Open in Editor", + EditSettings = "Subscription Settings", + SectionType = "Settings Type", + SectionSubscription = "Subscription Info", + SectionOverride = "Override Config", + SaveFailed = "Failed to save profile", + ConfigMissing = "Config not found: %s", + AgeSecretKey = "Age Secret Key", + ), +) + +internal val JaYumeStrings_ProfilesPage: YumeStrings_ProfilesPage = YumeStrings_ProfilesPage( + Title = "プロファイル", + Action = YumeStrings_ProfilesPage_Action( + UpdateAll = "すべて更新", + AddProfile = "プロファイルを追加", + ), + Empty = YumeStrings_ProfilesPage_Empty( + NoProfiles = "プロファイルがありません", + Hint = "右上からプロファイルを追加", + ), + Sheet = YumeStrings_ProfilesPage_Sheet( + AddTitle = "プロファイルを追加", + EditTitle = "プロファイルを編集", + Complete = "完了", + ), + Type = YumeStrings_ProfilesPage_Type( + Title = "プロファイル種別", + Subscription = "購読 URL", + LocalFile = "ローカルファイル", + QrScan = "QR コードをスキャン", + ), + Input = YumeStrings_ProfilesPage_Input( + ProfileName = "プロファイル名", + SubscriptionUrl = "購読 URL (HTTP/HTTPS)", + SelectFile = "タップしてファイルを選択", + NewProfile = "新規プロファイル", + AgeSecretKey = "Age 秘密鍵(任意)", + ), + QrScanner = YumeStrings_ProfilesPage_QrScanner( + NeedPermission = "カメラ権限が必要です", + NeedCamera = "スキャンにはカメラ権限が必要です", + SelectFromAlbum = "アルバムから QR コードを選択", + RecognizeSuccess = "認識に成功しました", + RecognizeFailed = "QR コードを認識できませんでした", + RecognizeError = "認識に失敗しました: %s", + ), + Message = YumeStrings_ProfilesPage_Message( + UnknownFile = "不明なファイル", + ), + Validation = YumeStrings_ProfilesPage_Validation( + EnterUrl = "URL を入力してください", + SelectFile = "ファイルを選択してください", + YamlOnly = ".yaml または .yml 形式のみ対応", + ), + Progress = YumeStrings_ProfilesPage_Progress( + Downloading = "ダウンロード中...", + ), + Button = YumeStrings_ProfilesPage_Button( + Cancel = "キャンセル", + Confirm = "確定", + ), + DeleteDialog = YumeStrings_ProfilesPage_DeleteDialog( + Title = "プロファイルを削除", + Message = "「%s」を削除しますか?", + Confirm = "削除", + ), + EditDialog = YumeStrings_ProfilesPage_EditDialog( + Title = "プロファイル名を編集", + ), + LinkSettings = YumeStrings_ProfilesPage_LinkSettings( + Title = "リンク設定", + OpenMode = "開き方", + OpenModeInApp = "アプリ内", + OpenModeExternal = "外部ブラウザ", + DefaultLink = "既定リンク", + DefaultLinkSummary = "左上のショートカットをタップしたときに開くリンク", + AddLink = "リンクを追加", + EditLink = "リンクを編集", + Name = "名前", + Url = "URL", + Close = "閉じる", + Validation = YumeStrings_ProfilesPage_LinkSettings_Validation( + EnterName = "名前を入力してください", + EnterUrl = "URL を入力してください", + InvalidUrl = "有効な URL を入力してください", + ), + ), + ShareDialog = YumeStrings_ProfilesPage_ShareDialog( + Title = "プロファイルを共有", + ShareFile = "設定ファイルを共有", + ShareLink = "購読リンクを共有", + NoLink = "このプロファイルには購読リンクがありません", + ImportedConfigMissing = "インポートした設定がありません: %s", + ), + SettingsDialog = YumeStrings_ProfilesPage_SettingsDialog( + Title = "購読設定", + ChangeLink = "購読リンクを変更", + CustomRouting = "カスタムルーティング", + CustomRoutingSummary = "独立したルーティングルール", + NoDescription = "説明未設定", + EditProfile = "プロファイルを編集", + OpenConfig = "エディターで開く", + EditSettings = "購読設定", + SectionType = "設定種別", + SectionSubscription = "購読情報", + SectionOverride = "上書き設定", + SaveFailed = "プロファイルの保存に失敗しました", + ConfigMissing = "設定が見つかりません: %s", + AgeSecretKey = "Age 秘密鍵", + ), +) + +internal val RuYumeStrings_ProfilesPage: YumeStrings_ProfilesPage = YumeStrings_ProfilesPage( + Title = "Профили", + Action = YumeStrings_ProfilesPage_Action( + UpdateAll = "Обновить все", + AddProfile = "Добавить профиль", + ), + Empty = YumeStrings_ProfilesPage_Empty( + NoProfiles = "Нет профилей", + Hint = "Нажмите справа сверху, чтобы добавить профиль", + ), + Sheet = YumeStrings_ProfilesPage_Sheet( + AddTitle = "Добавить профиль", + EditTitle = "Изменить профиль", + Complete = "Готово", + ), + Type = YumeStrings_ProfilesPage_Type( + Title = "Тип профиля", + Subscription = "URL подписки", + LocalFile = "Локальный файл", + QrScan = "Сканировать QR-код", + ), + Input = YumeStrings_ProfilesPage_Input( + ProfileName = "Имя профиля", + SubscriptionUrl = "URL подписки (HTTP/HTTPS)", + SelectFile = "Нажмите, чтобы выбрать файл", + NewProfile = "Новый профиль", + AgeSecretKey = "Секретный ключ Age (необязательно)", + ), + QrScanner = YumeStrings_ProfilesPage_QrScanner( + NeedPermission = "Требуется доступ к камере", + NeedCamera = "Для сканирования нужен доступ к камере", + SelectFromAlbum = "Выбрать QR-код из альбома", + RecognizeSuccess = "Распознавание успешно", + RecognizeFailed = "Не удалось распознать QR-код", + RecognizeError = "Ошибка распознавания: %s", + ), + Message = YumeStrings_ProfilesPage_Message( + UnknownFile = "Неизвестный файл", + ), + Validation = YumeStrings_ProfilesPage_Validation( + EnterUrl = "Введите URL", + SelectFile = "Выберите файл", + YamlOnly = "Поддерживаются только форматы .yaml или .yml", + ), + Progress = YumeStrings_ProfilesPage_Progress( + Downloading = "Загрузка...", + ), + Button = YumeStrings_ProfilesPage_Button( + Cancel = "Отмена", + Confirm = "Подтвердить", + ), + DeleteDialog = YumeStrings_ProfilesPage_DeleteDialog( + Title = "Удалить профиль", + Message = "Удалить «%s»?", + Confirm = "Удалить", + ), + EditDialog = YumeStrings_ProfilesPage_EditDialog( + Title = "Изменить имя профиля", + ), + LinkSettings = YumeStrings_ProfilesPage_LinkSettings( + Title = "Настройки ссылок", + OpenMode = "Способ открытия", + OpenModeInApp = "В приложении", + OpenModeExternal = "Во внешнем браузере", + DefaultLink = "Ссылка по умолчанию", + DefaultLinkSummary = "Ссылка, открываемая при нажатии ярлыка слева сверху", + AddLink = "Добавить ссылку", + EditLink = "Изменить ссылку", + Name = "Имя", + Url = "URL", + Close = "Закрыть", + Validation = YumeStrings_ProfilesPage_LinkSettings_Validation( + EnterName = "Введите имя", + EnterUrl = "Введите URL", + InvalidUrl = "Введите действительный URL", + ), + ), + ShareDialog = YumeStrings_ProfilesPage_ShareDialog( + Title = "Поделиться профилем", + ShareFile = "Поделиться файлом конфигурации", + ShareLink = "Поделиться ссылкой подписки", + NoLink = "У этого профиля нет ссылки подписки", + ImportedConfigMissing = "Импортированная конфигурация отсутствует: %s", + ), + SettingsDialog = YumeStrings_ProfilesPage_SettingsDialog( + Title = "Настройки подписки", + ChangeLink = "Изменить ссылку подписки", + CustomRouting = "Своя маршрутизация", + CustomRoutingSummary = "Отдельные правила маршрутизации", + NoDescription = "Описание не задано", + EditProfile = "Изменить профиль", + OpenConfig = "Открыть в редакторе", + EditSettings = "Настройки подписки", + SectionType = "Тип настроек", + SectionSubscription = "Сведения о подписке", + SectionOverride = "Переопределение", + SaveFailed = "Не удалось сохранить профиль", + ConfigMissing = "Конфигурация не найдена: %s", + AgeSecretKey = "Секретный ключ Age", + ), +) + diff --git a/locale/src/ProfilesVM.kt b/locale/src/ProfilesVM.kt new file mode 100644 index 000000000..87c729621 --- /dev/null +++ b/locale/src/ProfilesVM.kt @@ -0,0 +1,112 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_ProfilesVM: YumeStrings_ProfilesVM = YumeStrings_ProfilesVM( + Message = YumeStrings_ProfilesVM_Message( + ProfileAdded = "配置已添加:%s", + AddFailed = "添加配置失败:%s", + ProfileDeleted = "配置已删除", + DeleteFailed = "删除配置失败:%s", + ProfileUpdated = "配置已更新:%s", + UpdateFailed = "更新配置失败:%s", + ToggleFailed = "切换状态失败:%s", + ProvidersPartial = "配置已保存,%d 个外部资源失败:%s", + ProvidersUndiscovered = "配置已保存,但未能识别外部资源列表", + ), + Progress = YumeStrings_ProfilesVM_Progress( + Preparing = "准备下载...", + Verifying = "正在验证配置...", + ImportComplete = "导入完成", + ), + Error = YumeStrings_ProfilesVM_Error( + ProfileNotExist = "配置不存在", + ), +) + +internal val ZhYumeStrings_ProfilesVM: YumeStrings_ProfilesVM = YumeStrings_ProfilesVM( + Message = YumeStrings_ProfilesVM_Message( + ProfileAdded = "設定檔已新增:%s", + AddFailed = "新增設定檔失敗:%s", + ProfileDeleted = "設定檔已刪除", + DeleteFailed = "刪除設定檔失敗:%s", + ProfileUpdated = "設定檔已更新:%s", + UpdateFailed = "更新設定檔失敗:%s", + ToggleFailed = "切換狀態失敗:%s", + ProvidersPartial = "設定檔已儲存,%d 個外部資源失敗:%s", + ProvidersUndiscovered = "設定檔已儲存,但未能識別外部資源列表", + ), + Progress = YumeStrings_ProfilesVM_Progress( + Preparing = "準備下載...", + Verifying = "正在驗證設定...", + ImportComplete = "匯入完成", + ), + Error = YumeStrings_ProfilesVM_Error( + ProfileNotExist = "設定檔不存在", + ), +) + +internal val EnYumeStrings_ProfilesVM: YumeStrings_ProfilesVM = YumeStrings_ProfilesVM( + Message = YumeStrings_ProfilesVM_Message( + ProfileAdded = "Profile added: %s", + AddFailed = "Add profile failed: %s", + ProfileDeleted = "Profile deleted", + DeleteFailed = "Delete profile failed: %s", + ProfileUpdated = "Profile updated: %s", + UpdateFailed = "Update profile failed: %s", + ToggleFailed = "Toggle state failed: %s", + ProvidersPartial = "Profile saved; %d external resources failed: %s", + ProvidersUndiscovered = "Profile saved, but external resource list was not recognized", + ), + Progress = YumeStrings_ProfilesVM_Progress( + Preparing = "Preparing download...", + Verifying = "Verifying configuration...", + ImportComplete = "Import complete", + ), + Error = YumeStrings_ProfilesVM_Error( + ProfileNotExist = "Profile does not exist", + ), +) + +internal val JaYumeStrings_ProfilesVM: YumeStrings_ProfilesVM = YumeStrings_ProfilesVM( + Message = YumeStrings_ProfilesVM_Message( + ProfileAdded = "プロファイルを追加しました: %s", + AddFailed = "プロファイルの追加に失敗しました: %s", + ProfileDeleted = "プロファイルを削除しました", + DeleteFailed = "プロファイルの削除に失敗しました: %s", + ProfileUpdated = "プロファイルを更新しました: %s", + UpdateFailed = "プロファイルの更新に失敗しました: %s", + ToggleFailed = "状態の切り替えに失敗しました: %s", + ProvidersPartial = "プロファイルを保存しました.外部リソース %d 件が失敗: %s", + ProvidersUndiscovered = "プロファイルを保存しましたが、外部リソース一覧を認識できませんでした", + ), + Progress = YumeStrings_ProfilesVM_Progress( + Preparing = "ダウンロードを準備中...", + Verifying = "設定を検証中...", + ImportComplete = "インポート完了", + ), + Error = YumeStrings_ProfilesVM_Error( + ProfileNotExist = "プロファイルが存在しません", + ), +) + +internal val RuYumeStrings_ProfilesVM: YumeStrings_ProfilesVM = YumeStrings_ProfilesVM( + Message = YumeStrings_ProfilesVM_Message( + ProfileAdded = "Профиль добавлен: %s", + AddFailed = "Не удалось добавить профиль: %s", + ProfileDeleted = "Профиль удалён", + DeleteFailed = "Не удалось удалить профиль: %s", + ProfileUpdated = "Профиль обновлён: %s", + UpdateFailed = "Не удалось обновить профиль: %s", + ToggleFailed = "Не удалось переключить состояние: %s", + ProvidersPartial = "Профиль сохранён; %d внешних ресурсов не загрузились: %s", + ProvidersUndiscovered = "Профиль сохранён, но список внешних ресурсов не распознан", + ), + Progress = YumeStrings_ProfilesVM_Progress( + Preparing = "Подготовка загрузки...", + Verifying = "Проверка конфигурации...", + ImportComplete = "Импорт завершён", + ), + Error = YumeStrings_ProfilesVM_Error( + ProfileNotExist = "Профиль не существует", + ), +) + diff --git a/locale/src/Providers.kt b/locale/src/Providers.kt new file mode 100644 index 000000000..d042117e5 --- /dev/null +++ b/locale/src/Providers.kt @@ -0,0 +1,172 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Providers: YumeStrings_Providers = YumeStrings_Providers( + Title = "外部资源", + Action = YumeStrings_Providers_Action( + UpdateAll = "更新全部", + Update = "更新", + Upload = "上传", + Operation = "操作", + ), + Empty = YumeStrings_Providers_Empty( + NotRunning = "代理未启动", + NotRunningHint = "请先启动代理服务以查看外部资源", + NoProviders = "暂无外部资源", + NoProvidersHint = "当前配置未包含外部资源", + ), + Type = YumeStrings_Providers_Type( + ProxyProviders = "代理提供者 (%d)", + RuleProviders = "规则提供者 (%d)", + ), + VehicleType = YumeStrings_Providers_VehicleType( + Http = "HTTP", + File = "文件", + Inline = "内联", + Compatible = "兼容", + ), + Message = YumeStrings_Providers_Message( + FetchFailed = "获取外部资源失败: %s", + UpdateSuccess = "%s 更新成功", + UpdateFailed = "更新失败: %s", + AllUpdated = "全部更新完成", + UploadSuccess = "%s 上传成功", + UploadFailed = "上传失败: %s", + ), +) + +internal val ZhYumeStrings_Providers: YumeStrings_Providers = YumeStrings_Providers( + Title = "外部資源", + Action = YumeStrings_Providers_Action( + UpdateAll = "更新全部", + Update = "更新", + Upload = "上傳", + Operation = "操作", + ), + Empty = YumeStrings_Providers_Empty( + NotRunning = "代理未啟動", + NotRunningHint = "請先啟動代理服務以檢視外部資源", + NoProviders = "暫無外部資源", + NoProvidersHint = "目前設定檔未包含外部資源", + ), + Type = YumeStrings_Providers_Type( + ProxyProviders = "代理提供者 (%d)", + RuleProviders = "規則提供者 (%d)", + ), + VehicleType = YumeStrings_Providers_VehicleType( + Http = "HTTP", + File = "檔案", + Inline = "內嵌", + Compatible = "相容", + ), + Message = YumeStrings_Providers_Message( + FetchFailed = "取得外部資源失敗: %s", + UpdateSuccess = "%s 更新成功", + UpdateFailed = "更新失敗: %s", + AllUpdated = "全部更新完成", + UploadSuccess = "%s 上傳成功", + UploadFailed = "上傳失敗: %s", + ), +) + +internal val EnYumeStrings_Providers: YumeStrings_Providers = YumeStrings_Providers( + Title = "External Resources", + Action = YumeStrings_Providers_Action( + UpdateAll = "Update All", + Update = "Update", + Upload = "Upload", + Operation = "Operation", + ), + Empty = YumeStrings_Providers_Empty( + NotRunning = "Proxy not running", + NotRunningHint = "Please start proxy service to view external resources", + NoProviders = "No external resources", + NoProvidersHint = "Current profile doesn't contain external resources", + ), + Type = YumeStrings_Providers_Type( + ProxyProviders = "Proxy Providers (%d)", + RuleProviders = "Rule Providers (%d)", + ), + VehicleType = YumeStrings_Providers_VehicleType( + Http = "HTTP", + File = "File", + Inline = "Inline", + Compatible = "Compatible", + ), + Message = YumeStrings_Providers_Message( + FetchFailed = "Failed to fetch resources: %s", + UpdateSuccess = "%s updated successfully", + UpdateFailed = "Update failed: %s", + AllUpdated = "All updated", + UploadSuccess = "%s uploaded successfully", + UploadFailed = "Upload failed: %s", + ), +) + +internal val JaYumeStrings_Providers: YumeStrings_Providers = YumeStrings_Providers( + Title = "外部リソース", + Action = YumeStrings_Providers_Action( + UpdateAll = "すべて更新", + Update = "更新", + Upload = "アップロード", + Operation = "操作", + ), + Empty = YumeStrings_Providers_Empty( + NotRunning = "プロキシが起動していません", + NotRunningHint = "外部リソースを表示するにはプロキシを開始してください", + NoProviders = "外部リソースがありません", + NoProvidersHint = "現在のプロファイルに外部リソースがありません", + ), + Type = YumeStrings_Providers_Type( + ProxyProviders = "プロキシプロバイダー (%d)", + RuleProviders = "ルールプロバイダー (%d)", + ), + VehicleType = YumeStrings_Providers_VehicleType( + Http = "HTTP", + File = "ファイル", + Inline = "インライン", + Compatible = "互換", + ), + Message = YumeStrings_Providers_Message( + FetchFailed = "リソースの取得に失敗しました: %s", + UpdateSuccess = "%s を更新しました", + UpdateFailed = "更新に失敗しました: %s", + AllUpdated = "すべて更新しました", + UploadSuccess = "%s をアップロードしました", + UploadFailed = "アップロードに失敗しました: %s", + ), +) + +internal val RuYumeStrings_Providers: YumeStrings_Providers = YumeStrings_Providers( + Title = "Внешние ресурсы", + Action = YumeStrings_Providers_Action( + UpdateAll = "Обновить все", + Update = "Обновить", + Upload = "Загрузить", + Operation = "Действие", + ), + Empty = YumeStrings_Providers_Empty( + NotRunning = "Прокси не запущен", + NotRunningHint = "Запустите прокси, чтобы просмотреть внешние ресурсы", + NoProviders = "Нет внешних ресурсов", + NoProvidersHint = "В текущем профиле нет внешних ресурсов", + ), + Type = YumeStrings_Providers_Type( + ProxyProviders = "Провайдеры прокси (%d)", + RuleProviders = "Провайдеры правил (%d)", + ), + VehicleType = YumeStrings_Providers_VehicleType( + Http = "HTTP", + File = "Файл", + Inline = "Встроенный", + Compatible = "Совместимый", + ), + Message = YumeStrings_Providers_Message( + FetchFailed = "Не удалось получить ресурсы: %s", + UpdateSuccess = "%s успешно обновлён", + UpdateFailed = "Обновление не удалось: %s", + AllUpdated = "Все обновлены", + UploadSuccess = "%s успешно загружен", + UploadFailed = "Загрузка не удалась: %s", + ), +) + diff --git a/locale/src/Proxy.kt b/locale/src/Proxy.kt new file mode 100644 index 000000000..55e0dc40b --- /dev/null +++ b/locale/src/Proxy.kt @@ -0,0 +1,237 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Proxy: YumeStrings_Proxy = YumeStrings_Proxy( + Title = "节点", + Mode = YumeStrings_Proxy_Mode( + Direct = "直连", + ), + Action = YumeStrings_Proxy_Action( + Panel = "面板", + Test = "测试", + Sort = "排序", + LocateCurrent = "定位当前节点", + More = "更多", + ), + Node = YumeStrings_Proxy_Node( + Timeout = "超时", + Count = "%d 节点", + ), + Empty = YumeStrings_Proxy_Empty( + NoNodes = "暂无节点", + Hint = "请在配置页面加载配置文件", + ), + Testing = YumeStrings_Proxy_Testing( + Group = "正在测试节点组:%s", + All = "正在测试所有节点组...", + RequestSent = "测试请求已发送", + Progress = "正在测试 %d/%d", + Completed = "测试完成", + Failed = "测试失败:%s", + InProgress = "正在测试节点", + ), + Selection = YumeStrings_Proxy_Selection( + Switched = "已切换到:%s", + Failed = "切换失败", + Error = "切换失败:%s", + ), + SortMode = YumeStrings_Proxy_SortMode( + Default = "默认顺序", + ByName = "按名称排序", + ByLatency = "按延迟排序", + ), + DisplayMode = YumeStrings_Proxy_DisplayMode( + SingleDetailed = "单列详细", + SingleSimple = "单列简洁", + DoubleDetailed = "双列详细", + DoubleSimple = "双列简洁", + ), +) + +internal val ZhYumeStrings_Proxy: YumeStrings_Proxy = YumeStrings_Proxy( + Title = "節點", + Mode = YumeStrings_Proxy_Mode( + Direct = "直連", + ), + Action = YumeStrings_Proxy_Action( + Panel = "面板", + Test = "測試", + Sort = "排序", + LocateCurrent = "定位目前節點", + More = "更多", + ), + Node = YumeStrings_Proxy_Node( + Timeout = "逾時", + Count = "%d 節點", + ), + Empty = YumeStrings_Proxy_Empty( + NoNodes = "暫無節點", + Hint = "請在設定檔頁面載入設定檔", + ), + Testing = YumeStrings_Proxy_Testing( + Group = "正在測試節點組:%s", + All = "正在測試所有節點組...", + RequestSent = "測試請求已送出", + Progress = "正在測試 %d/%d", + Completed = "測試完成", + Failed = "測試失敗:%s", + InProgress = "正在測試節點", + ), + Selection = YumeStrings_Proxy_Selection( + Switched = "已切換到:%s", + Failed = "切換失敗", + Error = "切換失敗:%s", + ), + SortMode = YumeStrings_Proxy_SortMode( + Default = "預設順序", + ByName = "依名稱排序", + ByLatency = "依延遲排序", + ), + DisplayMode = YumeStrings_Proxy_DisplayMode( + SingleDetailed = "單欄詳細", + SingleSimple = "單欄簡潔", + DoubleDetailed = "雙欄詳細", + DoubleSimple = "雙欄簡潔", + ), +) + +internal val EnYumeStrings_Proxy: YumeStrings_Proxy = YumeStrings_Proxy( + Title = "Nodes", + Mode = YumeStrings_Proxy_Mode( + Direct = "Direct", + ), + Action = YumeStrings_Proxy_Action( + Panel = "Panel", + Test = "Test", + Sort = "Sort", + LocateCurrent = "Locate current proxy", + More = "More", + ), + Node = YumeStrings_Proxy_Node( + Timeout = "Timeout", + Count = "%d nodes", + ), + Empty = YumeStrings_Proxy_Empty( + NoNodes = "No nodes", + Hint = "Please load a profile in Config page", + ), + Testing = YumeStrings_Proxy_Testing( + Group = "Testing node group: %s", + All = "Testing all node groups...", + RequestSent = "Test request sent", + Progress = "Testing %d/%d", + Completed = "Test completed", + Failed = "Test failed: %s", + InProgress = "Testing the node", + ), + Selection = YumeStrings_Proxy_Selection( + Switched = "Switched to: %s", + Failed = "Switch failed", + Error = "Switch failed: %s", + ), + SortMode = YumeStrings_Proxy_SortMode( + Default = "Default", + ByName = "By Name", + ByLatency = "By Latency", + ), + DisplayMode = YumeStrings_Proxy_DisplayMode( + SingleDetailed = "Single Detailed", + SingleSimple = "Single Simple", + DoubleDetailed = "Double Detailed", + DoubleSimple = "Double Simple", + ), +) + +internal val JaYumeStrings_Proxy: YumeStrings_Proxy = YumeStrings_Proxy( + Title = "ノード", + Mode = YumeStrings_Proxy_Mode( + Direct = "ダイレクト", + ), + Action = YumeStrings_Proxy_Action( + Panel = "パネル", + Test = "テスト", + Sort = "並び替え", + LocateCurrent = "現在のノードを表示", + More = "その他", + ), + Node = YumeStrings_Proxy_Node( + Timeout = "タイムアウト", + Count = "%d ノード", + ), + Empty = YumeStrings_Proxy_Empty( + NoNodes = "ノードがありません", + Hint = "設定ページでプロファイルを読み込んでください", + ), + Testing = YumeStrings_Proxy_Testing( + Group = "ノードグループをテスト中: %s", + All = "すべてのノードグループをテスト中...", + RequestSent = "テスト要求を送信しました", + Progress = "テスト中 %d/%d", + Completed = "テスト完了", + Failed = "テストに失敗しました: %s", + InProgress = "ノードをテスト中", + ), + Selection = YumeStrings_Proxy_Selection( + Switched = "切り替え先: %s", + Failed = "切り替えに失敗しました", + Error = "切り替えに失敗しました: %s", + ), + SortMode = YumeStrings_Proxy_SortMode( + Default = "既定", + ByName = "名前順", + ByLatency = "遅延順", + ), + DisplayMode = YumeStrings_Proxy_DisplayMode( + SingleDetailed = "1列・詳細", + SingleSimple = "1列・簡易", + DoubleDetailed = "2列・詳細", + DoubleSimple = "2列・簡易", + ), +) + +internal val RuYumeStrings_Proxy: YumeStrings_Proxy = YumeStrings_Proxy( + Title = "Узлы", + Mode = YumeStrings_Proxy_Mode( + Direct = "Напрямую", + ), + Action = YumeStrings_Proxy_Action( + Panel = "Панель", + Test = "Тест", + Sort = "Сортировка", + LocateCurrent = "Найти текущий узел", + More = "Ещё", + ), + Node = YumeStrings_Proxy_Node( + Timeout = "Таймаут", + Count = "Узлов: %d", + ), + Empty = YumeStrings_Proxy_Empty( + NoNodes = "Нет узлов", + Hint = "Загрузите профиль на странице «Профили»", + ), + Testing = YumeStrings_Proxy_Testing( + Group = "Тестирование группы узлов: %s", + All = "Тестирование всех групп узлов...", + RequestSent = "Запрос теста отправлен", + Progress = "Тест %d/%d", + Completed = "Тест завершён", + Failed = "Тест не удался: %s", + InProgress = "Тестирование узла", + ), + Selection = YumeStrings_Proxy_Selection( + Switched = "Переключено на: %s", + Failed = "Не удалось переключить", + Error = "Не удалось переключить: %s", + ), + SortMode = YumeStrings_Proxy_SortMode( + Default = "По умолчанию", + ByName = "По имени", + ByLatency = "По задержке", + ), + DisplayMode = YumeStrings_Proxy_DisplayMode( + SingleDetailed = "1 колонка, подробно", + SingleSimple = "1 колонка, кратко", + DoubleDetailed = "2 колонки, подробно", + DoubleSimple = "2 колонки, кратко", + ), +) + diff --git a/locale/src/RuStrings.kt b/locale/src/RuStrings.kt new file mode 100644 index 000000000..6e1db45d9 --- /dev/null +++ b/locale/src/RuStrings.kt @@ -0,0 +1,30 @@ +package com.github.yumeyucca.yumebox.core.locale + +import cafe.adriel.lyricist.LyricistStrings + +@LyricistStrings(languageTag = "ru") +public val RuStrings: YumeStrings = YumeStrings( + About = RuYumeStrings_About, + AccessControl = RuYumeStrings_AccessControl, + AppSettings = RuYumeStrings_AppSettings, + Component = RuYumeStrings_Component, + Connection = RuYumeStrings_Connection, + Editor = RuYumeStrings_Editor, + Feature = RuYumeStrings_Feature, + Home = RuYumeStrings_Home, + Log = RuYumeStrings_Log, + MetaFeature = RuYumeStrings_MetaFeature, + NetworkSettings = RuYumeStrings_NetworkSettings, + Onboarding = RuYumeStrings_Onboarding, + OpenSourceLicenses = RuYumeStrings_OpenSourceLicenses, + Override = RuYumeStrings_Override, + ProfilesPage = RuYumeStrings_ProfilesPage, + ProfilesVM = RuYumeStrings_ProfilesVM, + Providers = RuYumeStrings_Providers, + Proxy = RuYumeStrings_Proxy, + Rules = RuYumeStrings_Rules, + Service = RuYumeStrings_Service, + Settings = RuYumeStrings_Settings, + TrafficStatistics = RuYumeStrings_TrafficStatistics, + Util = RuYumeStrings_Util, +) diff --git a/locale/src/Rules.kt b/locale/src/Rules.kt new file mode 100644 index 000000000..1dd3da0ec --- /dev/null +++ b/locale/src/Rules.kt @@ -0,0 +1,112 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Rules: YumeStrings_Rules = YumeStrings_Rules( + Title = "规则", + Summary = "查看并临时开关运行时规则", + SearchHint = "搜索规则", + Label = YumeStrings_Rules_Label( + Proxy = "策略", + HitRate = "命中率 %s", + ), + Message = YumeStrings_Rules_Message( + ToggleFailed = "切换规则失败:%s", + ), + Empty = YumeStrings_Rules_Empty( + Loading = "加载中", + LoadingHint = "正在从内核拉取规则", + NotRunning = "代理未启动", + NotRunningHint = "请先启动代理服务以查看规则", + NoRules = "暂无规则", + NoRulesHint = "当前配置未包含规则", + NoResults = "没有匹配的规则", + ), +) + +internal val ZhYumeStrings_Rules: YumeStrings_Rules = YumeStrings_Rules( + Title = "規則", + Summary = "檢視並暫時開關執行中規則", + SearchHint = "搜尋規則", + Label = YumeStrings_Rules_Label( + Proxy = "策略", + HitRate = "命中率 %s", + ), + Message = YumeStrings_Rules_Message( + ToggleFailed = "切換規則失敗:%s", + ), + Empty = YumeStrings_Rules_Empty( + Loading = "載入中", + LoadingHint = "正在從核心拉取規則", + NotRunning = "代理未啟動", + NotRunningHint = "請先啟動代理服務以檢視規則", + NoRules = "暫無規則", + NoRulesHint = "目前設定檔未包含規則", + NoResults = "沒有符合的規則", + ), +) + +internal val EnYumeStrings_Rules: YumeStrings_Rules = YumeStrings_Rules( + Title = "Rules", + Summary = "View and temporarily toggle runtime rules", + SearchHint = "Search rules", + Label = YumeStrings_Rules_Label( + Proxy = "Policy", + HitRate = "Hit rate %s", + ), + Message = YumeStrings_Rules_Message( + ToggleFailed = "Failed to toggle rule: %s", + ), + Empty = YumeStrings_Rules_Empty( + Loading = "Loading", + LoadingHint = "Fetching rules from the core", + NotRunning = "Proxy is not running", + NotRunningHint = "Start the proxy service to view rules", + NoRules = "No rules", + NoRulesHint = "The current config has no rules", + NoResults = "No matching rules", + ), +) + +internal val JaYumeStrings_Rules: YumeStrings_Rules = YumeStrings_Rules( + Title = "ルール", + Summary = "実行中ルールの確認と一時的な切り替え", + SearchHint = "ルールを検索", + Label = YumeStrings_Rules_Label( + Proxy = "ポリシー", + HitRate = "ヒット率 %s", + ), + Message = YumeStrings_Rules_Message( + ToggleFailed = "ルールの切り替えに失敗しました: %s", + ), + Empty = YumeStrings_Rules_Empty( + Loading = "読み込み中", + LoadingHint = "コアからルールを取得しています", + NotRunning = "プロキシが起動していません", + NotRunningHint = "ルールを表示するにはプロキシを開始してください", + NoRules = "ルールがありません", + NoRulesHint = "現在の設定にルールがありません", + NoResults = "一致するルールがありません", + ), +) + +internal val RuYumeStrings_Rules: YumeStrings_Rules = YumeStrings_Rules( + Title = "Правила", + Summary = "Просмотр и временное переключение правил", + SearchHint = "Поиск правил", + Label = YumeStrings_Rules_Label( + Proxy = "Политика", + HitRate = "Попадания %s", + ), + Message = YumeStrings_Rules_Message( + ToggleFailed = "Не удалось переключить правило: %s", + ), + Empty = YumeStrings_Rules_Empty( + Loading = "Загрузка", + LoadingHint = "Получение правил из ядра", + NotRunning = "Прокси не запущен", + NotRunningHint = "Запустите прокси, чтобы просмотреть правила", + NoRules = "Нет правил", + NoRulesHint = "В текущем профиле нет правил", + NoResults = "Нет подходящих правил", + ), +) + diff --git a/locale/src/Service.kt b/locale/src/Service.kt new file mode 100644 index 000000000..57f2175d9 --- /dev/null +++ b/locale/src/Service.kt @@ -0,0 +1,122 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Service: YumeStrings_Service = YumeStrings_Service( + Notification = YumeStrings_Service_Notification( + Running = "运行中", + UnknownProfile = "未知配置", + NoNode = "未选择", + CurrentNode = "当前节点:%s", + CurrentNodeLabel = "当前节点", + RealtimeTraffic = "实时流量", + SpeedLine = "下行 %s 上行 %s", + TotalTraffic = "总流量 %s", + LogChannel = "日志记录", + LogRecording = "正在记录日志", + LogRecordingPending = "日志记录中...", + Stop = "停止", + ), + Tile = YumeStrings_Service_Tile( + ClickToOpen = "点击打开应用", + ClickToStartProxy = "启动代理", + ClickToStopProxy = "停止代理", + Connecting = "正在连接...", + Disconnecting = "正在断开...", + ), +) + +internal val ZhYumeStrings_Service: YumeStrings_Service = YumeStrings_Service( + Notification = YumeStrings_Service_Notification( + Running = "執行中", + UnknownProfile = "未知設定檔", + NoNode = "未選擇", + CurrentNode = "當前節點:%s", + CurrentNodeLabel = "當前節點", + RealtimeTraffic = "即時流量", + SpeedLine = "下行 %s 上行 %s", + TotalTraffic = "總流量 %s", + LogChannel = "日誌記錄", + LogRecording = "正在記錄日誌", + LogRecordingPending = "日誌記錄中...", + Stop = "停止", + ), + Tile = YumeStrings_Service_Tile( + ClickToOpen = "點一下開啟應用", + ClickToStartProxy = "啟動代理", + ClickToStopProxy = "停止代理", + Connecting = "連線中...", + Disconnecting = "斷線中...", + ), +) + +internal val EnYumeStrings_Service: YumeStrings_Service = YumeStrings_Service( + Notification = YumeStrings_Service_Notification( + Running = "Running", + UnknownProfile = "Unknown profile", + NoNode = "No node selected", + CurrentNode = "Current node: %s", + CurrentNodeLabel = "Current node", + RealtimeTraffic = "Live traffic", + SpeedLine = "Down %s Up %s", + TotalTraffic = "Total %s", + LogChannel = "Log recording", + LogRecording = "Recording logs", + LogRecordingPending = "Recording...", + Stop = "Stop", + ), + Tile = YumeStrings_Service_Tile( + ClickToOpen = "Click to open app", + ClickToStartProxy = "Start proxy", + ClickToStopProxy = "Stop proxy", + Connecting = "Connecting...", + Disconnecting = "Disconnecting...", + ), +) + +internal val JaYumeStrings_Service: YumeStrings_Service = YumeStrings_Service( + Notification = YumeStrings_Service_Notification( + Running = "実行中", + UnknownProfile = "不明なプロファイル", + NoNode = "未選択", + CurrentNode = "現在のノード:%s", + CurrentNodeLabel = "現在のノード", + RealtimeTraffic = "リアルタイム通信量", + SpeedLine = "下り %s 上り %s", + TotalTraffic = "合計 %s", + LogChannel = "ログ記録", + LogRecording = "ログを記録中", + LogRecordingPending = "記録中...", + Stop = "停止", + ), + Tile = YumeStrings_Service_Tile( + ClickToOpen = "タップしてアプリを開く", + ClickToStartProxy = "プロキシを開始", + ClickToStopProxy = "プロキシを停止", + Connecting = "接続中...", + Disconnecting = "切断中...", + ), +) + +internal val RuYumeStrings_Service: YumeStrings_Service = YumeStrings_Service( + Notification = YumeStrings_Service_Notification( + Running = "Работает", + UnknownProfile = "Неизвестный профиль", + NoNode = "Не выбран", + CurrentNode = "Текущий узел: %s", + CurrentNodeLabel = "Текущий узел", + RealtimeTraffic = "Трафик в реальном времени", + SpeedLine = "↓ %s ↑ %s", + TotalTraffic = "Всего %s", + LogChannel = "Запись журнала", + LogRecording = "Идёт запись журнала", + LogRecordingPending = "Запись...", + Stop = "Стоп", + ), + Tile = YumeStrings_Service_Tile( + ClickToOpen = "Нажмите, чтобы открыть приложение", + ClickToStartProxy = "Запустить прокси", + ClickToStopProxy = "Остановить прокси", + Connecting = "Подключение...", + Disconnecting = "Отключение...", + ), +) + diff --git a/locale/src/Settings.kt b/locale/src/Settings.kt new file mode 100644 index 000000000..c9cd933a3 --- /dev/null +++ b/locale/src/Settings.kt @@ -0,0 +1,157 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Settings: YumeStrings_Settings = YumeStrings_Settings( + Title = "设置", + Section = YumeStrings_Settings_Section( + UiSettings = "界面设置", + More = "更多", + ), + UiSettings = YumeStrings_Settings_UiSettings( + App = "应用", + AppSummary = "主题、语言与行为", + Network = "网络", + NetworkSummary = "代理模式、DNS 与访问控制", + Override = "覆写", + OverrideSummary = "YAML、JS 与规则覆写", + MetaFeatures = "Meta 功能", + MetaFeaturesSummary = "连接、日志、规则与统计", + ), + More = YumeStrings_Settings_More( + Lab = "实验室", + LabSummary = "Sub-Store 与实验功能", + Logs = "日志", + LogsSummary = "运行日志", + Onboarding = "新手引导", + OnboardingSummary = "重新查看欢迎引导", + About = "关于", + AboutSummary = "版本与许可", + ), + Error = YumeStrings_Settings_Error( + WebviewFailed = "无法打开 WebView:%s", + ), +) + +internal val ZhYumeStrings_Settings: YumeStrings_Settings = YumeStrings_Settings( + Title = "設定", + Section = YumeStrings_Settings_Section( + UiSettings = "介面設定", + More = "更多", + ), + UiSettings = YumeStrings_Settings_UiSettings( + App = "應用", + AppSummary = "主題、語言與行為", + Network = "網路", + NetworkSummary = "代理模式、DNS 與存取控制", + Override = "覆寫", + OverrideSummary = "YAML、JS 與規則覆寫", + MetaFeatures = "Meta 功能", + MetaFeaturesSummary = "連線、日誌、規則與統計", + ), + More = YumeStrings_Settings_More( + Lab = "實驗室", + LabSummary = "Sub-Store 與實驗功能", + Logs = "日誌", + LogsSummary = "執行日誌", + Onboarding = "新手引導", + OnboardingSummary = "重新查看歡迎引導", + About = "關於", + AboutSummary = "版本與授權", + ), + Error = YumeStrings_Settings_Error( + WebviewFailed = "無法開啟 WebView:%s", + ), +) + +internal val EnYumeStrings_Settings: YumeStrings_Settings = YumeStrings_Settings( + Title = "Settings", + Section = YumeStrings_Settings_Section( + UiSettings = "UI Settings", + More = "More", + ), + UiSettings = YumeStrings_Settings_UiSettings( + App = "App", + AppSummary = "Theme, language, and behavior", + Network = "Network", + NetworkSummary = "Proxy mode, DNS, and access control", + Override = "Override", + OverrideSummary = "YAML, JS, and rule overrides", + MetaFeatures = "Meta Features", + MetaFeaturesSummary = "Connections, logs, rules, and statistics", + ), + More = YumeStrings_Settings_More( + Lab = "Lab", + LabSummary = "Sub-Store and experiments", + Logs = "Logs", + LogsSummary = "Runtime Logs", + Onboarding = "Setup Guide", + OnboardingSummary = "Replay the welcome guide", + About = "About", + AboutSummary = "Version & License", + ), + Error = YumeStrings_Settings_Error( + WebviewFailed = "Unable to open WebView: %s", + ), +) + +internal val JaYumeStrings_Settings: YumeStrings_Settings = YumeStrings_Settings( + Title = "設定", + Section = YumeStrings_Settings_Section( + UiSettings = "UI 設定", + More = "その他", + ), + UiSettings = YumeStrings_Settings_UiSettings( + App = "アプリ", + AppSummary = "テーマ、言語、動作", + Network = "ネットワーク", + NetworkSummary = "プロキシモード、DNS、アクセス制御", + Override = "上書き", + OverrideSummary = "YAML / JS / ルールの上書き", + MetaFeatures = "Meta 機能", + MetaFeaturesSummary = "接続、ログ、ルール、統計", + ), + More = YumeStrings_Settings_More( + Lab = "ラボ", + LabSummary = "Sub-Store と実験機能", + Logs = "ログ", + LogsSummary = "実行ログ", + Onboarding = "セットアップガイド", + OnboardingSummary = "ようこそガイドを再表示", + About = "情報", + AboutSummary = "バージョンとライセンス", + ), + Error = YumeStrings_Settings_Error( + WebviewFailed = "WebView を開けません: %s", + ), +) + +internal val RuYumeStrings_Settings: YumeStrings_Settings = YumeStrings_Settings( + Title = "Настройки", + Section = YumeStrings_Settings_Section( + UiSettings = "Интерфейс", + More = "Ещё", + ), + UiSettings = YumeStrings_Settings_UiSettings( + App = "Приложение", + AppSummary = "Тема, язык и поведение", + Network = "Сеть", + NetworkSummary = "Режим прокси, DNS и контроль доступа", + Override = "Переопределения", + OverrideSummary = "YAML, JS и переопределение правил", + MetaFeatures = "Функции Meta", + MetaFeaturesSummary = "Соединения, журналы, правила и статистика", + ), + More = YumeStrings_Settings_More( + Lab = "Лаборатория", + LabSummary = "Sub-Store и экспериментальные функции", + Logs = "Журналы", + LogsSummary = "Журналы выполнения", + Onboarding = "Мастер настройки", + OnboardingSummary = "Показать приветственный гид снова", + About = "О приложении", + AboutSummary = "Версия и лицензия", + ), + Error = YumeStrings_Settings_Error( + WebviewFailed = "Не удалось открыть WebView: %s", + ), +) + diff --git a/locale/src/TrafficStatistics.kt b/locale/src/TrafficStatistics.kt new file mode 100644 index 000000000..1d6d4d936 --- /dev/null +++ b/locale/src/TrafficStatistics.kt @@ -0,0 +1,237 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_TrafficStatistics: YumeStrings_TrafficStatistics = YumeStrings_TrafficStatistics( + Title = "统计", + EntrySummary = "查看流量使用情况", + TimeRange = YumeStrings_TrafficStatistics_TimeRange( + Today = "今日", + Week = "本周", + ), + Summary = YumeStrings_TrafficStatistics_Summary( + TodayTraffic = "今日流量", + WeekTraffic = "本周流量", + Average = "平均", + DayTrafficTip = "%s流量", + ), + Donut = YumeStrings_TrafficStatistics_Donut( + Other = "其他", + ), + Action = YumeStrings_TrafficStatistics_Action( + Clear = "清空统计", + ClearSuccess = "统计数据已清空", + ), + Section = YumeStrings_TrafficStatistics_Section( + Traffic = "流量", + TopApps = "高流量应用", + TodayApps = "今日应用流量", + WeekApps = "近7天应用流量", + SystemTraffic = "系统流量", + EmptyApps = "暂无应用流量统计", + ), + Metric = YumeStrings_TrafficStatistics_Metric( + Download = "下行", + Upload = "上行", + UsageLine = "下行 %s 上行 %s", + SortByName = "名称", + SortByUsage = "流量", + ), + Weekday = YumeStrings_TrafficStatistics_Weekday( + Mon = "周一", + Tue = "周二", + Wed = "周三", + Thu = "周四", + Fri = "周五", + Sat = "周六", + Sun = "周日", + Today = "今日", + ), +) + +internal val ZhYumeStrings_TrafficStatistics: YumeStrings_TrafficStatistics = YumeStrings_TrafficStatistics( + Title = "統計", + EntrySummary = "檢視流量使用情況", + TimeRange = YumeStrings_TrafficStatistics_TimeRange( + Today = "今日", + Week = "本週", + ), + Summary = YumeStrings_TrafficStatistics_Summary( + TodayTraffic = "今日流量", + WeekTraffic = "本週流量", + Average = "平均", + DayTrafficTip = "%s流量", + ), + Donut = YumeStrings_TrafficStatistics_Donut( + Other = "其他", + ), + Action = YumeStrings_TrafficStatistics_Action( + Clear = "清空統計", + ClearSuccess = "統計資料已清空", + ), + Section = YumeStrings_TrafficStatistics_Section( + Traffic = "流量", + TopApps = "高流量應用", + TodayApps = "今日應用流量", + WeekApps = "近 7 天應用流量", + SystemTraffic = "系統流量", + EmptyApps = "暫無應用流量統計", + ), + Metric = YumeStrings_TrafficStatistics_Metric( + Download = "下行", + Upload = "上行", + UsageLine = "下行 %s 上行 %s", + SortByName = "名稱", + SortByUsage = "流量", + ), + Weekday = YumeStrings_TrafficStatistics_Weekday( + Mon = "週一", + Tue = "週二", + Wed = "週三", + Thu = "週四", + Fri = "週五", + Sat = "週六", + Sun = "週日", + Today = "今日", + ), +) + +internal val EnYumeStrings_TrafficStatistics: YumeStrings_TrafficStatistics = YumeStrings_TrafficStatistics( + Title = "Statistics", + EntrySummary = "View traffic usage", + TimeRange = YumeStrings_TrafficStatistics_TimeRange( + Today = "Today", + Week = "Week", + ), + Summary = YumeStrings_TrafficStatistics_Summary( + TodayTraffic = "Today's Traffic", + WeekTraffic = "This Week's Traffic", + Average = "Avg", + DayTrafficTip = "%s traffic", + ), + Donut = YumeStrings_TrafficStatistics_Donut( + Other = "Other", + ), + Action = YumeStrings_TrafficStatistics_Action( + Clear = "Clear Statistics", + ClearSuccess = "Statistics cleared", + ), + Section = YumeStrings_TrafficStatistics_Section( + Traffic = "Traffic", + TopApps = "Top Apps", + TodayApps = "Today's Apps", + WeekApps = "Last 7 Days Apps", + SystemTraffic = "System Traffic", + EmptyApps = "No app traffic statistics", + ), + Metric = YumeStrings_TrafficStatistics_Metric( + Download = "Download", + Upload = "Upload", + UsageLine = "Down %s Up %s", + SortByName = "Name", + SortByUsage = "Usage", + ), + Weekday = YumeStrings_TrafficStatistics_Weekday( + Mon = "Mon", + Tue = "Tue", + Wed = "Wed", + Thu = "Thu", + Fri = "Fri", + Sat = "Sat", + Sun = "Sun", + Today = "Today", + ), +) + +internal val JaYumeStrings_TrafficStatistics: YumeStrings_TrafficStatistics = YumeStrings_TrafficStatistics( + Title = "統計", + EntrySummary = "通信量の利用状況を表示", + TimeRange = YumeStrings_TrafficStatistics_TimeRange( + Today = "今日", + Week = "今週", + ), + Summary = YumeStrings_TrafficStatistics_Summary( + TodayTraffic = "今日の通信量", + WeekTraffic = "今週の通信量", + Average = "平均", + DayTrafficTip = "%s の通信量", + ), + Donut = YumeStrings_TrafficStatistics_Donut( + Other = "その他", + ), + Action = YumeStrings_TrafficStatistics_Action( + Clear = "統計を消去", + ClearSuccess = "統計を消去しました", + ), + Section = YumeStrings_TrafficStatistics_Section( + Traffic = "通信量", + TopApps = "通信量の多いアプリ", + TodayApps = "今日のアプリ", + WeekApps = "直近 7 日のアプリ", + SystemTraffic = "システム通信量", + EmptyApps = "アプリの通信量統計はありません", + ), + Metric = YumeStrings_TrafficStatistics_Metric( + Download = "下り", + Upload = "上り", + UsageLine = "下り %s 上り %s", + SortByName = "名前", + SortByUsage = "使用量", + ), + Weekday = YumeStrings_TrafficStatistics_Weekday( + Mon = "月", + Tue = "火", + Wed = "水", + Thu = "木", + Fri = "金", + Sat = "土", + Sun = "日", + Today = "今日", + ), +) + +internal val RuYumeStrings_TrafficStatistics: YumeStrings_TrafficStatistics = YumeStrings_TrafficStatistics( + Title = "Статистика", + EntrySummary = "Просмотр использования трафика", + TimeRange = YumeStrings_TrafficStatistics_TimeRange( + Today = "Сегодня", + Week = "Неделя", + ), + Summary = YumeStrings_TrafficStatistics_Summary( + TodayTraffic = "Трафик за сегодня", + WeekTraffic = "Трафик за неделю", + Average = "Среднее", + DayTrafficTip = "Трафик %s", + ), + Donut = YumeStrings_TrafficStatistics_Donut( + Other = "Другое", + ), + Action = YumeStrings_TrafficStatistics_Action( + Clear = "Очистить статистику", + ClearSuccess = "Статистика очищена", + ), + Section = YumeStrings_TrafficStatistics_Section( + Traffic = "Трафик", + TopApps = "Топ приложений", + TodayApps = "Приложения за сегодня", + WeekApps = "Приложения за 7 дней", + SystemTraffic = "Системный трафик", + EmptyApps = "Нет статистики по приложениям", + ), + Metric = YumeStrings_TrafficStatistics_Metric( + Download = "Загрузка", + Upload = "Отдача", + UsageLine = "↓ %s ↑ %s", + SortByName = "Имя", + SortByUsage = "Использование", + ), + Weekday = YumeStrings_TrafficStatistics_Weekday( + Mon = "Пн", + Tue = "Вт", + Wed = "Ср", + Thu = "Чт", + Fri = "Пт", + Sat = "Сб", + Sun = "Вс", + Today = "Сегодня", + ), +) + diff --git a/locale/src/Util.kt b/locale/src/Util.kt new file mode 100644 index 000000000..d9ff680fe --- /dev/null +++ b/locale/src/Util.kt @@ -0,0 +1,32 @@ +package com.github.yumeyucca.yumebox.core.locale + +internal val ZhHansYumeStrings_Util: YumeStrings_Util = YumeStrings_Util( + Error = YumeStrings_Util_Error( + UnknownError = "未知错误", + ), +) + +internal val ZhYumeStrings_Util: YumeStrings_Util = YumeStrings_Util( + Error = YumeStrings_Util_Error( + UnknownError = "未知錯誤", + ), +) + +internal val EnYumeStrings_Util: YumeStrings_Util = YumeStrings_Util( + Error = YumeStrings_Util_Error( + UnknownError = "Unknown error", + ), +) + +internal val JaYumeStrings_Util: YumeStrings_Util = YumeStrings_Util( + Error = YumeStrings_Util_Error( + UnknownError = "不明なエラー", + ), +) + +internal val RuYumeStrings_Util: YumeStrings_Util = YumeStrings_Util( + Error = YumeStrings_Util_Error( + UnknownError = "Неизвестная ошибка", + ), +) + diff --git a/locale/src/YumeStrings.kt b/locale/src/YumeStrings.kt new file mode 100644 index 000000000..9352676a6 --- /dev/null +++ b/locale/src/YumeStrings.kt @@ -0,0 +1,1594 @@ +package com.github.yumeyucca.yumebox.core.locale + +public data class YumeStrings( + public val About: YumeStrings_About, + public val AccessControl: YumeStrings_AccessControl, + public val AppSettings: YumeStrings_AppSettings, + public val Component: YumeStrings_Component, + public val Connection: YumeStrings_Connection, + public val Editor: YumeStrings_Editor, + public val Feature: YumeStrings_Feature, + public val Home: YumeStrings_Home, + public val Log: YumeStrings_Log, + public val MetaFeature: YumeStrings_MetaFeature, + public val NetworkSettings: YumeStrings_NetworkSettings, + public val Onboarding: YumeStrings_Onboarding, + public val OpenSourceLicenses: YumeStrings_OpenSourceLicenses, + public val Override: YumeStrings_Override, + public val ProfilesPage: YumeStrings_ProfilesPage, + public val ProfilesVM: YumeStrings_ProfilesVM, + public val Providers: YumeStrings_Providers, + public val Proxy: YumeStrings_Proxy, + public val Rules: YumeStrings_Rules, + public val Service: YumeStrings_Service, + public val Settings: YumeStrings_Settings, + public val TrafficStatistics: YumeStrings_TrafficStatistics, + public val Util: YumeStrings_Util, +) + +// ==================== About ==================== + +public data class YumeStrings_About_App( + public val Description: String, + public val VersionLoading: String, + public val VersionFailed: String, +) + +public data class YumeStrings_About_Debug( + public val Title: String, + public val TestInitialization: String, + public val InitializationReset: String, +) + +public data class YumeStrings_About_Section( + public val ProjectLinks: String, + public val More: String, + public val Support: String, + public val License: String, +) + +public data class YumeStrings_About_Link( + public val TelegramGroup: String, + public val TelegramChannel: String, +) + +public data class YumeStrings_About_Support( + public val ExportLogs: String, + public val ReportIssue: String, + public val ExportSuccess: String, + public val ExportFailed: String, +) + +public data class YumeStrings_About_License( + public val Libraries: String, + public val LibrariesSummary: String, + public val AgplName: String, + public val AgplDescription: String, +) + +public data class YumeStrings_About( + public val Title: String, + public val App: YumeStrings_About_App, + public val Debug: YumeStrings_About_Debug, + public val Section: YumeStrings_About_Section, + public val Link: YumeStrings_About_Link, + public val Support: YumeStrings_About_Support, + public val License: YumeStrings_About_License, + public val Copyright: String, +) + +// ==================== AccessControl ==================== + +public data class YumeStrings_AccessControl_Search( + public val Placeholder: String, + public val Empty: String, +) + +public data class YumeStrings_AccessControl_AppList( + public val Title: String, + public val Loading: String, +) + +public data class YumeStrings_AccessControl_Settings( + public val Title: String, + public val ShowSystemApps: String, + public val SelectedFirst: String, + public val SortMode: String, + public val SortModeCurrent: String, + public val BatchOperation: String, + public val SelectAll: String, + public val DeselectAll: String, + public val Invert: String, + public val ImportExport: String, + public val Import: String, + public val Export: String, + public val ImportSuccess: String, + public val ExportSuccess: String, + public val ImportFailed: String, + public val RegionQuickSelect: String, + public val ChinaApps: String, + public val OverseasApps: String, + public val RegionSelectResult: String, +) + +public data class YumeStrings_AccessControl_SortMode( + public val PackageName: String, + public val Label: String, + public val InstallTime: String, + public val UpdateTime: String, +) + +public data class YumeStrings_AccessControl_Button( + public val Cancel: String, + public val Confirm: String, +) + +public data class YumeStrings_AccessControl( + public val Title: String, + public val Search: YumeStrings_AccessControl_Search, + public val AppList: YumeStrings_AccessControl_AppList, + public val Settings: YumeStrings_AccessControl_Settings, + public val SortMode: YumeStrings_AccessControl_SortMode, + public val Button: YumeStrings_AccessControl_Button, +) + +// ==================== AppSettings ==================== + +public data class YumeStrings_AppSettings_Section( + public val Behavior: String, + public val Interface: String, + public val Privacy: String, + public val Service: String, + public val Network: String, + public val Navigation: String, + public val Home: String, +) + +public data class YumeStrings_AppSettings_Behavior( + public val AutoStartTitle: String, + public val AutoUpdateOnStartTitle: String, +) + +public data class YumeStrings_AppSettings_Interface( + public val ThemeModeTitle: String, + public val ThemeModeSummary: String, + public val ThemeModeSystem: String, + public val ThemeModeLight: String, + public val ThemeModeDark: String, + public val LanguageTitle: String, + public val LanguageSystem: String, + public val LanguageChinese: String, + public val LanguageChineseTraditional: String, + public val LanguageEnglish: String, + public val LanguageJapanese: String, + public val LanguageRussian: String, + public val ColorThemeTitle: String, + public val ColorThemePickerTitle: String, + public val ColorThemeCodeLabel: String, + public val ColorThemeCustomSummary: String, + public val ThemeColorPolarityInvertTitle: String, + public val TopBarBlurTitle: String, + public val AutoHideNavbarTitle: String, + public val PageScaleTitle: String, + public val PageScaleDialogSummary: String, + public val PredictiveBackTitle: String, + public val PredictiveBackRestartSummary: String, + public val PredictiveBackProgressTitle: String, + public val ClassicHomeTitle: String, + public val SystemWallpaperTitle: String, + public val CustomIconTitle: String, + public val HomeQuoteTitle: String, + public val HomeQuoteDefault: String, + public val EditHomeQuoteTitle: String, + public val HomeWallpaperImportFailed: String, +) + +public data class YumeStrings_AppSettings_Privacy( + public val HideFromRecentsTitle: String, +) + +public data class YumeStrings_AppSettings_ServiceSection( + public val TrafficNotificationTitle: String, + public val ExitUiWhenBackgroundTitle: String, + public val SuperIslandTitle: String, + public val ShizukuTitle: String, + public val ShizukuNotRunning: String, + public val ShizukuPermissionRequired: String, + public val ShizukuReady: String, + public val ShizukuStatusUnavailable: String, + public val ShizukuStatusPending: String, + public val ShizukuStatusGranted: String, + public val BatteryOptimizationTitle: String, + public val BatteryOptimizationAlreadyDisabled: String, +) + +public data class YumeStrings_AppSettings_Network( + public val CustomUserAgentTitle: String, + public val CustomUserAgentSummaryDefault: String, +) + +public data class YumeStrings_AppSettings_WarningDialog( + public val Title: String, +) + +public data class YumeStrings_AppSettings_EditDialog( + public val UserAgentTitle: String, +) + +public data class YumeStrings_AppSettings_Button( + public val Apply: String, +) + +public data class YumeStrings_AppSettings( + public val Title: String, + public val Section: YumeStrings_AppSettings_Section, + public val Behavior: YumeStrings_AppSettings_Behavior, + public val Interface: YumeStrings_AppSettings_Interface, + public val Privacy: YumeStrings_AppSettings_Privacy, + public val ServiceSection: YumeStrings_AppSettings_ServiceSection, + public val Network: YumeStrings_AppSettings_Network, + public val WarningDialog: YumeStrings_AppSettings_WarningDialog, + public val EditDialog: YumeStrings_AppSettings_EditDialog, + public val Button: YumeStrings_AppSettings_Button, +) + +// ==================== Component ==================== + +public data class YumeStrings_Component_ProfileCard( + public val Update: String, + public val Export: String, + public val Edit: String, + public val Delete: String, + public val RemoteSubscription: String, + public val LocalFile: String, + public val LocalConfig: String, + public val ClickToUpdate: String, + public val Traffic: String, + public val UsedTraffic: String, + public val ExpireAt: String, + public val ExpireToday: String, + public val Expired: String, + public val JustNow: String, + public val MinutesAgo: String, + public val HoursAgo: String, + public val DaysAgo: String, +) + +public data class YumeStrings_Component_WebView( + public val InvalidUrl: String, +) + +public data class YumeStrings_Component_Selector( + public val NotModify: String, + public val Enable: String, + public val Disable: String, + public val Replace: String, + public val Prepend: String, + public val Append: String, + public val Merge: String, +) + +public data class YumeStrings_Component_Navigation( + public val Back: String, +) + +public data class YumeStrings_Component_Message( + public val Confirm: String, + public val Hint: String, + public val Error: String, + public val Success: String, +) + +public data class YumeStrings_Component_Button( + public val Cancel: String, + public val Confirm: String, + public val Clear: String, + public val Copy: String, +) + +public data class YumeStrings_Component_Flag( + public val ContentDescription: String, +) + +public data class YumeStrings_Component_Loading( + public val Starting: String, +) + +public data class YumeStrings_Component_ConfigInput( + public val PortLabel: String, + public val CountItems: String, +) + +public data class YumeStrings_Component_BottomBar( + public val Home: String, + public val Proxy: String, + public val Config: String, + public val Setting: String, +) + +public data class YumeStrings_Component_Editor_Action( + public val Search: String, +) + +public data class YumeStrings_Component_Editor_Dialog( + public val AddTitle: String, + public val EditTitle: String, + public val ResetTitle: String, + public val ResetMessage: String, +) + +public data class YumeStrings_Component_Editor_Empty( + public val Title: String, + public val Hint: String, +) + +public data class YumeStrings_Component_Editor_Error( + public val KeyEmpty: String, + public val KeyExists: String, +) + +public data class YumeStrings_Component_Editor_Rule( + public val Type: String, + public val Target: String, + public val Content: String, + public val Src: String, + public val NoResolve: String, + public val TargetReject: String, + public val TargetDirect: String, + public val TargetMatch: String, + public val ErrorContentRequired: String, +) + +public data class YumeStrings_Component_Editor( + public val CountItems: String, + public val Action: YumeStrings_Component_Editor_Action, + public val Dialog: YumeStrings_Component_Editor_Dialog, + public val Empty: YumeStrings_Component_Editor_Empty, + public val Error: YumeStrings_Component_Editor_Error, + public val Rule: YumeStrings_Component_Editor_Rule, +) + +public data class YumeStrings_Component( + public val ProfileCard: YumeStrings_Component_ProfileCard, + public val WebView: YumeStrings_Component_WebView, + public val Selector: YumeStrings_Component_Selector, + public val Navigation: YumeStrings_Component_Navigation, + public val Message: YumeStrings_Component_Message, + public val Button: YumeStrings_Component_Button, + public val Flag: YumeStrings_Component_Flag, + public val Loading: YumeStrings_Component_Loading, + public val ConfigInput: YumeStrings_Component_ConfigInput, + public val BottomBar: YumeStrings_Component_BottomBar, + public val Editor: YumeStrings_Component_Editor, +) + +// ==================== Connection ==================== + +public data class YumeStrings_Connection_Tab( + public val Active: String, + public val Closed: String, +) + +public data class YumeStrings_Connection_Sort( + public val Time: String, + public val Upload: String, + public val Download: String, + public val Host: String, +) + +public data class YumeStrings_Connection_RelativeTime( + public val JustNow: String, + public val MinutesAgo: String, + public val HoursAgo: String, + public val DaysAgo: String, + public val Date: String, +) + +public data class YumeStrings_Connection_Detail_Action( + public val Interrupting: String, + public val Interrupt: String, +) + +public data class YumeStrings_Connection_Detail_Section( + public val Info: String, + public val Rule: String, + public val Chain: String, +) + +public data class YumeStrings_Connection_Detail_Label( + public val Host: String, + public val Protocol: String, + public val Process: String, + public val SourceAddress: String, + public val DestinationAddress: String, + public val Duration: String, + public val Upload: String, + public val Download: String, + public val Type: String, + public val Content: String, + public val Chain: String, +) + +public data class YumeStrings_Connection_Detail( + public val Title: String, + public val Action: YumeStrings_Connection_Detail_Action, + public val Section: YumeStrings_Connection_Detail_Section, + public val Label: YumeStrings_Connection_Detail_Label, +) + +public data class YumeStrings_Connection( + public val Title: String, + public val Summary: String, + public val Tab: YumeStrings_Connection_Tab, + public val Search: String, + public val SearchHint: String, + public val SortBy: String, + public val Sort: YumeStrings_Connection_Sort, + public val ChainCount: String, + public val RelativeTime: YumeStrings_Connection_RelativeTime, + public val Detail: YumeStrings_Connection_Detail, + public val Loading: String, + public val Empty: String, + public val NoResults: String, +) + +// ==================== Editor ==================== + +public data class YumeStrings_Editor_Title( + public val Config: String, + public val Preview: String, + public val Override: String, + public val Profile: String, +) + +public data class YumeStrings_Editor_Action( + public val Format: String, + public val Save: String, +) + +public data class YumeStrings_Editor_Message( + public val FormatSuccess: String, + public val FormatSkipped: String, + public val SaveFailed: String, +) + +public data class YumeStrings_Editor_Discard( + public val Title: String, + public val Summary: String, + public val Confirm: String, +) + +public data class YumeStrings_Editor( + public val Title: YumeStrings_Editor_Title, + public val Action: YumeStrings_Editor_Action, + public val Message: YumeStrings_Editor_Message, + public val Discard: YumeStrings_Editor_Discard, + public val JsonSubtitle: String, +) + +// ==================== Feature ==================== + +public data class YumeStrings_Feature_ServiceStatus( + public val Section: String, + public val SwitchStartSubStore: String, + public val OpenSubStorePanel: String, + public val AllowLan: String, + public val AutoCloseModeTitle: String, + public val AutoCloseModeAlwaysOn: String, + public val AutoCloseMode5Min: String, + public val AutoCloseMode10Min: String, + public val AutoClosed: String, +) + +public data class YumeStrings_Feature_Panel( + public val Section: String, + public val SelectPanel: String, + public val OpenMode: String, + public val OpenPanel: String, + public val Unknown: String, + public val CreateShortcut: String, + public val CreateShortcutSummary: String, + public val ShortcutTitle: String, + public val ShortcutName: String, + public val ShortcutPickIcon: String, + public val ShortcutResetIcon: String, +) + +public data class YumeStrings_Feature_RemoteController( + public val Section: String, + public val ModeTitle: String, + public val ControlBackend: String, + public val AddBackend: String, + public val EditBackend: String, + public val Name: String, + public val Host: String, + public val Port: String, + public val Secret: String, + public val Protocol: String, + public val PortRangeError: String, + public val Connected: String, + public val ConnectionFailed: String, + public val Delete: String, +) + +public data class YumeStrings_Feature_SubStore( + public val Section: String, + public val JavetLibraryReady: String, + public val JavetLibraryDownload: String, + public val JavetAvailable: String, + public val DownloadHint: String, + public val JavetDownloadSuccess: String, + public val JavetDownloadFailed: String, + public val DownloadResources: String, + public val DownloadResourcesSummary: String, + public val Not32Bit: String, + public val DownloadSubStoreFirst: String, + public val JavetNotReady: String, + public val FrontendDownloadSuccess: String, + public val FrontendDownloadFailed: String, + public val BackendDownloadSuccess: String, + public val BackendDownloadFailed: String, + public val DownloadError: String, +) + +public data class YumeStrings_Feature_BackupRestore_RestoreDialog( + public val Title: String, + public val Message: String, +) + +public data class YumeStrings_Feature_BackupRestore_Message( + public val ExportSuccess: String, + public val RestoreSuccess: String, +) + +public data class YumeStrings_Feature_BackupRestore_Error( + public val OpenOutputFailed: String, + public val OpenInputFailed: String, + public val OperationFailed: String, +) + +public data class YumeStrings_Feature_BackupRestore( + public val Section: String, + public val ExportTitle: String, + public val ExportSummary: String, + public val RestoreTitle: String, + public val RestoreSummary: String, + public val Cancel: String, + public val RestoreDialog: YumeStrings_Feature_BackupRestore_RestoreDialog, + public val Message: YumeStrings_Feature_BackupRestore_Message, + public val Error: YumeStrings_Feature_BackupRestore_Error, +) + +public data class YumeStrings_Feature( + public val Title: String, + public val ServiceStatus: YumeStrings_Feature_ServiceStatus, + public val Panel: YumeStrings_Feature_Panel, + public val RemoteController: YumeStrings_Feature_RemoteController, + public val SubStore: YumeStrings_Feature_SubStore, + public val BackupRestore: YumeStrings_Feature_BackupRestore, +) + +// ==================== Home ==================== + +public data class YumeStrings_Home_Message( + public val ConfigSwitched: String, + public val ConfigSwitchFailed: String, + public val Preparing: String, + public val BuiltinGeoRequired: String, + public val StartFailed: String, + public val RuntimeUnavailable: String, + public val StopFailed: String, +) + +public data class YumeStrings_Home_Control( + public val HintAddProfile: String, + public val HintEnableProfile: String, + public val Start: String, + public val Stop: String, +) + +public data class YumeStrings_Home_NodeInfo( + public val Node: String, + public val Delay: String, + public val Unknown: String, + public val DelayValue: String, +) + +public data class YumeStrings_Home_Traffic( + public val UpShort: String, + public val DownShort: String, + public val Upload: String, + public val Download: String, + public val NoProfile: String, +) + +public data class YumeStrings_Home_IpInfo( + public val ExitIp: String, +) + +public data class YumeStrings_Home_Status( + public val Connecting: String, + public val Disconnecting: String, + public val Running: String, + public val Lost: String, + public val TapToStart: String, +) + +public data class YumeStrings_Home_Settings( + public val Title: String, + public val Quote: String, + public val ClassicHome: String, + public val ExpandSidebar: String, + public val ChangeWallpaper: String, +) + +public data class YumeStrings_Home_ProxyMode( + public val Vpn: String, + public val Tun: String, + public val Ebpf: String, +) + +public data class YumeStrings_Home_PreviewGuide( + public val Title: String, + public val Description: String, + public val Next: String, + public val Start: String, + public val WallpaperTitle: String, + public val WallpaperDescription: String, + public val SwipeTitle: String, + public val SwipeDescription: String, + public val AddTitle: String, + public val AddDescription: String, +) + +public data class YumeStrings_Home( + public val Title: String, + public val Message: YumeStrings_Home_Message, + public val Control: YumeStrings_Home_Control, + public val NodeInfo: YumeStrings_Home_NodeInfo, + public val Traffic: YumeStrings_Home_Traffic, + public val IpInfo: YumeStrings_Home_IpInfo, + public val Status: YumeStrings_Home_Status, + public val Settings: YumeStrings_Home_Settings, + public val ProxyMode: YumeStrings_Home_ProxyMode, + public val PreviewGuide: YumeStrings_Home_PreviewGuide, +) + +// ==================== Log ==================== + +public data class YumeStrings_Log_Level( + public val All: String, + public val Debug: String, + public val Info: String, + public val Warning: String, + public val Error: String, + public val Filter: String, +) + +public data class YumeStrings_Log_Action( + public val Export: String, + public val Copied: String, +) + +public data class YumeStrings_Log_Empty( + public val Connecting: String, + public val ConnectingHint: String, + public val Retrying: String, + public val RetryingHint: String, + public val NoLogs: String, + public val LiveHint: String, + public val NoMatch: String, + public val NoResults: String, +) + +public data class YumeStrings_Log_Detail( + public val WaitingLog: String, + public val WillShowWhenGenerated: String, +) + +public data class YumeStrings_Log( + public val Title: String, + public val Summary: String, + public val SearchHint: String, + public val Level: YumeStrings_Log_Level, + public val Action: YumeStrings_Log_Action, + public val Empty: YumeStrings_Log_Empty, + public val Detail: YumeStrings_Log_Detail, +) + +// ==================== MetaFeature ==================== + +public data class YumeStrings_MetaFeature_Section( + public val ConnectionAndTraffic: String, + public val Routing: String, +) + +public data class YumeStrings_MetaFeature_GeoX( + public val OnlineUpdateTitle: String, + public val OnlineUpdateSummary: String, +) + +public data class YumeStrings_MetaFeature_CustomRouting_Region( + public val HongKong: String, + public val Taiwan: String, + public val Japan: String, + public val Singapore: String, + public val UnitedStates: String, + public val Other: String, +) + +public data class YumeStrings_MetaFeature_CustomRouting_Item( + public val Proxy: String, + public val Ads: String, + public val China: String, + public val Global: String, + public val Match: String, +) + +public data class YumeStrings_MetaFeature_CustomRouting( + public val Title: String, + public val Summary: String, + public val EditYaml: String, + public val ManualYamlPresetDiscarded: String, + public val GroupTypeTitle: String, + public val GroupTypeUrlTest: String, + public val GroupTypeFallback: String, + public val UrlTestRegionGroupTitle: String, + public val FallbackRegionGroupTitle: String, + public val Region: YumeStrings_MetaFeature_CustomRouting_Region, + public val Item: YumeStrings_MetaFeature_CustomRouting_Item, +) + +public data class YumeStrings_MetaFeature_RuntimeRules( + public val Title: String, + public val Summary: String, +) + +public data class YumeStrings_MetaFeature_Download( + public val DialogTitle: String, + public val DownloadComplete: String, +) + +public data class YumeStrings_MetaFeature_AgeKey( + public val Section: String, + public val X25519Title: String, + public val HybridTitle: String, + public val SecretKey: String, + public val PublicKey: String, + public val Generate: String, + public val DerivePublicKey: String, +) + +public data class YumeStrings_MetaFeature( + public val Title: String, + public val Section: YumeStrings_MetaFeature_Section, + public val GeoX: YumeStrings_MetaFeature_GeoX, + public val CustomRouting: YumeStrings_MetaFeature_CustomRouting, + public val RuntimeRules: YumeStrings_MetaFeature_RuntimeRules, + public val Download: YumeStrings_MetaFeature_Download, + public val AgeKey: YumeStrings_MetaFeature_AgeKey, +) + +// ==================== NetworkSettings ==================== + +public data class YumeStrings_NetworkSettings_Section( + public val VpnOptions: String, + public val Advanced: String, + public val ProxyOptions: String, + public val Kernel: String, +) + +public data class YumeStrings_NetworkSettings_Advanced( + public val DisableOverrideTitle: String, +) + +public data class YumeStrings_NetworkSettings_RunMode( + public val SectionTitle: String, + public val VpnServiceTitle: String, + public val VpnServiceSummary: String, + public val TunTitle: String, + public val TunSummary: String, + public val EbpfTitle: String, + public val EbpfSummary: String, +) + +public data class YumeStrings_NetworkSettings_VpnOptions( + public val BypassPrivateTitle: String, + public val DnsHijackTitle: String, + public val AllowBypassTitle: String, + public val EnableIpv6Title: String, + public val SystemProxyTitle: String, +) + +public data class YumeStrings_NetworkSettings_EbpfOptions( + public val BypassCnTitle: String, +) + +public data class YumeStrings_NetworkSettings_TunOptions( + public val Title: String, + public val IfNameTitle: String, + public val MtuTitle: String, + public val StackTitle: String, + public val StackSystem: String, + public val StackGVisor: String, + public val StackMixed: String, + public val StackMips: String, + public val AutoRouteTitle: String, + public val StrictRouteTitle: String, + public val AutoRedirectTitle: String, + public val DnsModeTitle: String, + public val DnsRedirHost: String, + public val DnsFakeIp: String, + public val Ipv6Title: String, +) + +public data class YumeStrings_NetworkSettings_Kernel( + public val ActiveTitle: String, + public val BundledAlpha: String, + public val RefreshTitle: String, + public val DownloadTitle: String, + public val FetchButton: String, + public val DownloadButton: String, + public val CustomTitle: String, + public val CustomMethodTitle: String, + public val CustomUrlMethod: String, + public val CustomFileMethod: String, + public val CustomUrlLabel: String, + public val CustomChooseFile: String, + public val CustomInstallButton: String, +) + +public data class YumeStrings_NetworkSettings_ProxyOptions( + public val AccessControlModeTitle: String, + public val AllowAll: String, + public val AllowSelected: String, + public val RejectSelected: String, + public val ManageAccessControlTitle: String, +) + +public data class YumeStrings_NetworkSettings_WifiAutomation( + public val Title: String, + public val EnabledTitle: String, + public val WifiNameHeading: String, + public val NetworkChangeSection: String, + public val OtherWifiTitle: String, + public val NoWifiTitle: String, + public val AddCurrent: String, + public val AddManual: String, + public val Scan: String, + public val Scanning: String, + public val ScanEmpty: String, + public val ScanUnavailable: String, + public val ManualDialogTitle: String, + public val EditDialogTitle: String, + public val ManualDialogLabel: String, + public val StartAction: String, + public val StopAction: String, + public val KeepAction: String, + public val ActionTitle: String, + public val ProfileAction: String, + public val NoSwitchAction: String, + public val EmptyRules: String, + public val VpnOnly: String, + public val PermissionTitle: String, + public val PermissionMessage: String, + public val ApproximateTitle: String, + public val ApproximateMessage: String, + public val DeniedTitle: String, + public val DeniedMessage: String, + public val SettingsTitle: String, + public val SettingsMessage: String, + public val LocationTitle: String, + public val LocationMessage: String, + public val Grant: String, + public val OpenSettings: String, + public val TurnOnLocation: String, + public val Added: String, + public val Duplicate: String, + public val NoWifi: String, + public val Unavailable: String, +) + +public data class YumeStrings_NetworkSettings_Error( + public val VpnDenied: String, + public val RootRequired: String, +) + +public data class YumeStrings_NetworkSettings( + public val Title: String, + public val Section: YumeStrings_NetworkSettings_Section, + public val Advanced: YumeStrings_NetworkSettings_Advanced, + public val RunMode: YumeStrings_NetworkSettings_RunMode, + public val VpnOptions: YumeStrings_NetworkSettings_VpnOptions, + public val EbpfOptions: YumeStrings_NetworkSettings_EbpfOptions, + public val TunOptions: YumeStrings_NetworkSettings_TunOptions, + public val Kernel: YumeStrings_NetworkSettings_Kernel, + public val ProxyOptions: YumeStrings_NetworkSettings_ProxyOptions, + public val WifiAutomation: YumeStrings_NetworkSettings_WifiAutomation, + public val Error: YumeStrings_NetworkSettings_Error, +) + +// ==================== Onboarding ==================== + +public data class YumeStrings_Onboarding_Navigation( + public val Back: String, + public val Next: String, + public val Enter: String, + public val Start: String, +) + +public data class YumeStrings_Onboarding_Welcome( + public val Tagline: String, +) + +public data class YumeStrings_Onboarding_Permission_Common( + public val Granted: String, +) + +public data class YumeStrings_Onboarding_Permission_Notification( + public val Title: String, + public val SummaryNeed: String, + public val SummaryNotRequired: String, +) + +public data class YumeStrings_Onboarding_Permission_AppList( + public val Title: String, + public val SummaryNeed: String, +) + +public data class YumeStrings_Onboarding_Permission( + public val Title: String, + public val Subtitle: String, + public val Common: YumeStrings_Onboarding_Permission_Common, + public val Notification: YumeStrings_Onboarding_Permission_Notification, + public val AppList: YumeStrings_Onboarding_Permission_AppList, +) + +public data class YumeStrings_Onboarding_Privacy_Accept( + public val Title: String, +) + +public data class YumeStrings_Onboarding_Privacy( + public val Title: String, + public val Subtitle: String, + public val RichTextLead: String, + public val RichTextPrefix: String, + public val RichTextConnector: String, + public val RichTextSuffix: String, + public val TermsLink: String, + public val PolicyLink: String, + public val Accept: YumeStrings_Onboarding_Privacy_Accept, +) + +public data class YumeStrings_Onboarding_Personalize( + public val Title: String, + public val Subtitle: String, +) + +public data class YumeStrings_Onboarding_Finish( + public val Title: String, + public val Subtitle: String, +) + +public data class YumeStrings_Onboarding_Project_Github( + public val Title: String, + public val Summary: String, +) + +public data class YumeStrings_Onboarding_Project_Community( + public val Title: String, + public val Summary: String, +) + +public data class YumeStrings_Onboarding_Project( + public val Github: YumeStrings_Onboarding_Project_Github, + public val Community: YumeStrings_Onboarding_Project_Community, +) + +public data class YumeStrings_Onboarding_Sheet( + public val PrivacyPolicyTitle: String, + public val LoadFailed: String, +) + +public data class YumeStrings_Onboarding( + public val Navigation: YumeStrings_Onboarding_Navigation, + public val Welcome: YumeStrings_Onboarding_Welcome, + public val Permission: YumeStrings_Onboarding_Permission, + public val Privacy: YumeStrings_Onboarding_Privacy, + public val Personalize: YumeStrings_Onboarding_Personalize, + public val Finish: YumeStrings_Onboarding_Finish, + public val Project: YumeStrings_Onboarding_Project, + public val Sheet: YumeStrings_Onboarding_Sheet, +) + +// ==================== OpenSourceLicenses ==================== + +public data class YumeStrings_OpenSourceLicenses_LicenseSheet( + public val NoContent: String, +) + +public data class YumeStrings_OpenSourceLicenses( + public val Title: String, + public val LicenseSheet: YumeStrings_OpenSourceLicenses_LicenseSheet, +) + +// ==================== Override ==================== + +public data class YumeStrings_Override_Action( + public val Create: String, + public val New: String, + public val NetworkImport: String, +) + +public data class YumeStrings_Override_BuiltIn( + public val PreventDnsLeak: String, + public val AddDirectRules: String, + public val PuddingDog: String, + public val Acl4ssrOnlineFull: String, + public val CopyName: String, +) + +public data class YumeStrings_Override_Empty( + public val Title: String, + public val Hint: String, + public val UserTitle: String, + public val UserHint: String, +) + +public data class YumeStrings_Override_Section( + public val BuiltIn: String, + public val User: String, +) + +public data class YumeStrings_Override_Status( + public val InUse: String, + public val NotInUse: String, + public val BuiltIn: String, +) + +public data class YumeStrings_Override_Card( + public val Copy: String, + public val Export: String, + public val Edit: String, + public val Delete: String, + public val EditButton: String, + public val DeleteButton: String, + public val Apply: String, + public val ApplyButton: String, +) + +public data class YumeStrings_Override_ApplySheet_Button( + public val Cancel: String, + public val Confirm: String, +) + +public data class YumeStrings_Override_ApplySheet( + public val Title: String, + public val Empty: String, + public val Success: String, + public val Failed: String, + public val Button: YumeStrings_Override_ApplySheet_Button, +) + +public data class YumeStrings_Override_Import( + public val ReadError: String, + public val Failed: String, + public val FileError: String, + public val NetworkError: String, + public val InvalidUrl: String, + public val HttpError: String, + public val UnsupportedType: String, + public val EmptyJavaScript: String, +) + +public data class YumeStrings_Override_Export( + public val Failed: String, + public val Success: String, +) + +public data class YumeStrings_Override_Dialog_Create( + public val Title: String, + public val Name: String, + public val Url: String, + public val Type: String, +) + +public data class YumeStrings_Override_Dialog_Delete( + public val Title: String, + public val InUseMessage: String, + public val Message: String, +) + +public data class YumeStrings_Override_Dialog_Button( + public val Cancel: String, + public val Delete: String, +) + +public data class YumeStrings_Override_Dialog( + public val Create: YumeStrings_Override_Dialog_Create, + public val Delete: YumeStrings_Override_Dialog_Delete, + public val Button: YumeStrings_Override_Dialog_Button, +) + +public data class YumeStrings_Override_Draft( + public val BasicRouting: String, + public val ServiceRouting: String, +) + +public data class YumeStrings_Override_Save( + public val ImportDefaultName: String, + public val Failed: String, +) + +public data class YumeStrings_Override_Label( + public val RulesReplace: String, +) + +public data class YumeStrings_Override( + public val Title: String, + public val Action: YumeStrings_Override_Action, + public val BuiltIn: YumeStrings_Override_BuiltIn, + public val Empty: YumeStrings_Override_Empty, + public val Section: YumeStrings_Override_Section, + public val Status: YumeStrings_Override_Status, + public val Card: YumeStrings_Override_Card, + public val ApplySheet: YumeStrings_Override_ApplySheet, + public val Import: YumeStrings_Override_Import, + public val Export: YumeStrings_Override_Export, + public val Dialog: YumeStrings_Override_Dialog, + public val Draft: YumeStrings_Override_Draft, + public val Save: YumeStrings_Override_Save, + public val Label: YumeStrings_Override_Label, +) + +// ==================== ProfilesPage ==================== + +public data class YumeStrings_ProfilesPage_Action( + public val UpdateAll: String, + public val AddProfile: String, +) + +public data class YumeStrings_ProfilesPage_Empty( + public val NoProfiles: String, + public val Hint: String, +) + +public data class YumeStrings_ProfilesPage_Sheet( + public val AddTitle: String, + public val EditTitle: String, + public val Complete: String, +) + +public data class YumeStrings_ProfilesPage_Type( + public val Title: String, + public val Subscription: String, + public val LocalFile: String, + public val QrScan: String, +) + +public data class YumeStrings_ProfilesPage_Input( + public val ProfileName: String, + public val SubscriptionUrl: String, + public val SelectFile: String, + public val NewProfile: String, + public val AgeSecretKey: String, +) + +public data class YumeStrings_ProfilesPage_QrScanner( + public val NeedPermission: String, + public val NeedCamera: String, + public val SelectFromAlbum: String, + public val RecognizeSuccess: String, + public val RecognizeFailed: String, + public val RecognizeError: String, +) + +public data class YumeStrings_ProfilesPage_Message( + public val UnknownFile: String, +) + +public data class YumeStrings_ProfilesPage_Validation( + public val EnterUrl: String, + public val SelectFile: String, + public val YamlOnly: String, +) + +public data class YumeStrings_ProfilesPage_Progress( + public val Downloading: String, +) + +public data class YumeStrings_ProfilesPage_Button( + public val Cancel: String, + public val Confirm: String, +) + +public data class YumeStrings_ProfilesPage_DeleteDialog( + public val Title: String, + public val Message: String, + public val Confirm: String, +) + +public data class YumeStrings_ProfilesPage_EditDialog( + public val Title: String, +) + +public data class YumeStrings_ProfilesPage_LinkSettings_Validation( + public val EnterName: String, + public val EnterUrl: String, + public val InvalidUrl: String, +) + +public data class YumeStrings_ProfilesPage_LinkSettings( + public val Title: String, + public val OpenMode: String, + public val OpenModeInApp: String, + public val OpenModeExternal: String, + public val DefaultLink: String, + public val DefaultLinkSummary: String, + public val AddLink: String, + public val EditLink: String, + public val Name: String, + public val Url: String, + public val Close: String, + public val Validation: YumeStrings_ProfilesPage_LinkSettings_Validation, +) + +public data class YumeStrings_ProfilesPage_ShareDialog( + public val Title: String, + public val ShareFile: String, + public val ShareLink: String, + public val NoLink: String, + public val ImportedConfigMissing: String, +) + +public data class YumeStrings_ProfilesPage_SettingsDialog( + public val Title: String, + public val ChangeLink: String, + public val CustomRouting: String, + public val CustomRoutingSummary: String, + public val NoDescription: String, + public val EditProfile: String, + public val OpenConfig: String, + public val EditSettings: String, + public val SectionType: String, + public val SectionSubscription: String, + public val SectionOverride: String, + public val SaveFailed: String, + public val ConfigMissing: String, + public val AgeSecretKey: String, +) + +public data class YumeStrings_ProfilesPage( + public val Title: String, + public val Action: YumeStrings_ProfilesPage_Action, + public val Empty: YumeStrings_ProfilesPage_Empty, + public val Sheet: YumeStrings_ProfilesPage_Sheet, + public val Type: YumeStrings_ProfilesPage_Type, + public val Input: YumeStrings_ProfilesPage_Input, + public val QrScanner: YumeStrings_ProfilesPage_QrScanner, + public val Message: YumeStrings_ProfilesPage_Message, + public val Validation: YumeStrings_ProfilesPage_Validation, + public val Progress: YumeStrings_ProfilesPage_Progress, + public val Button: YumeStrings_ProfilesPage_Button, + public val DeleteDialog: YumeStrings_ProfilesPage_DeleteDialog, + public val EditDialog: YumeStrings_ProfilesPage_EditDialog, + public val LinkSettings: YumeStrings_ProfilesPage_LinkSettings, + public val ShareDialog: YumeStrings_ProfilesPage_ShareDialog, + public val SettingsDialog: YumeStrings_ProfilesPage_SettingsDialog, +) + +// ==================== ProfilesVM ==================== + +public data class YumeStrings_ProfilesVM_Message( + public val ProfileAdded: String, + public val AddFailed: String, + public val ProfileDeleted: String, + public val DeleteFailed: String, + public val ProfileUpdated: String, + public val UpdateFailed: String, + public val ToggleFailed: String, + public val ProvidersPartial: String, + public val ProvidersUndiscovered: String, +) + +public data class YumeStrings_ProfilesVM_Progress( + public val Preparing: String, + public val Verifying: String, + public val ImportComplete: String, +) + +public data class YumeStrings_ProfilesVM_Error( + public val ProfileNotExist: String, +) + +public data class YumeStrings_ProfilesVM( + public val Message: YumeStrings_ProfilesVM_Message, + public val Progress: YumeStrings_ProfilesVM_Progress, + public val Error: YumeStrings_ProfilesVM_Error, +) + +// ==================== Providers ==================== + +public data class YumeStrings_Providers_Action( + public val UpdateAll: String, + public val Update: String, + public val Upload: String, + public val Operation: String, +) + +public data class YumeStrings_Providers_Empty( + public val NotRunning: String, + public val NotRunningHint: String, + public val NoProviders: String, + public val NoProvidersHint: String, +) + +public data class YumeStrings_Providers_Type( + public val ProxyProviders: String, + public val RuleProviders: String, +) + +public data class YumeStrings_Providers_VehicleType( + public val Http: String, + public val File: String, + public val Inline: String, + public val Compatible: String, +) + +public data class YumeStrings_Providers_Message( + public val FetchFailed: String, + public val UpdateSuccess: String, + public val UpdateFailed: String, + public val AllUpdated: String, + public val UploadSuccess: String, + public val UploadFailed: String, +) + +public data class YumeStrings_Providers( + public val Title: String, + public val Action: YumeStrings_Providers_Action, + public val Empty: YumeStrings_Providers_Empty, + public val Type: YumeStrings_Providers_Type, + public val VehicleType: YumeStrings_Providers_VehicleType, + public val Message: YumeStrings_Providers_Message, +) + +// ==================== Proxy ==================== + +public data class YumeStrings_Proxy_Mode( + public val Direct: String, +) + +public data class YumeStrings_Proxy_Action( + public val Panel: String, + public val Test: String, + public val Sort: String, + public val LocateCurrent: String, + public val More: String, +) + +public data class YumeStrings_Proxy_Node( + public val Timeout: String, + public val Count: String, +) + +public data class YumeStrings_Proxy_Empty( + public val NoNodes: String, + public val Hint: String, +) + +public data class YumeStrings_Proxy_Testing( + public val Group: String, + public val All: String, + public val RequestSent: String, + public val Progress: String, + public val Completed: String, + public val Failed: String, + public val InProgress: String, +) + +public data class YumeStrings_Proxy_Selection( + public val Switched: String, + public val Failed: String, + public val Error: String, +) + +public data class YumeStrings_Proxy_SortMode( + public val Default: String, + public val ByName: String, + public val ByLatency: String, +) + +public data class YumeStrings_Proxy_DisplayMode( + public val SingleDetailed: String, + public val SingleSimple: String, + public val DoubleDetailed: String, + public val DoubleSimple: String, +) + +public data class YumeStrings_Proxy( + public val Title: String, + public val Mode: YumeStrings_Proxy_Mode, + public val Action: YumeStrings_Proxy_Action, + public val Node: YumeStrings_Proxy_Node, + public val Empty: YumeStrings_Proxy_Empty, + public val Testing: YumeStrings_Proxy_Testing, + public val Selection: YumeStrings_Proxy_Selection, + public val SortMode: YumeStrings_Proxy_SortMode, + public val DisplayMode: YumeStrings_Proxy_DisplayMode, +) + +// ==================== Rules ==================== + +public data class YumeStrings_Rules_Label( + public val Proxy: String, + public val HitRate: String, +) + +public data class YumeStrings_Rules_Message( + public val ToggleFailed: String, +) + +public data class YumeStrings_Rules_Empty( + public val Loading: String, + public val LoadingHint: String, + public val NotRunning: String, + public val NotRunningHint: String, + public val NoRules: String, + public val NoRulesHint: String, + public val NoResults: String, +) + +public data class YumeStrings_Rules( + public val Title: String, + public val Summary: String, + public val SearchHint: String, + public val Label: YumeStrings_Rules_Label, + public val Message: YumeStrings_Rules_Message, + public val Empty: YumeStrings_Rules_Empty, +) + +// ==================== Service ==================== + +public data class YumeStrings_Service_Notification( + public val Running: String, + public val UnknownProfile: String, + public val NoNode: String, + public val CurrentNode: String, + public val CurrentNodeLabel: String, + public val RealtimeTraffic: String, + public val SpeedLine: String, + public val TotalTraffic: String, + public val LogChannel: String, + public val LogRecording: String, + public val LogRecordingPending: String, + public val Stop: String, +) + +public data class YumeStrings_Service_Tile( + public val ClickToOpen: String, + public val ClickToStartProxy: String, + public val ClickToStopProxy: String, + public val Connecting: String, + public val Disconnecting: String, +) + +public data class YumeStrings_Service( + public val Notification: YumeStrings_Service_Notification, + public val Tile: YumeStrings_Service_Tile, +) + +// ==================== Settings ==================== + +public data class YumeStrings_Settings_Section( + public val UiSettings: String, + public val More: String, +) + +public data class YumeStrings_Settings_UiSettings( + public val App: String, + public val AppSummary: String, + public val Network: String, + public val NetworkSummary: String, + public val Override: String, + public val OverrideSummary: String, + public val MetaFeatures: String, + public val MetaFeaturesSummary: String, +) + +public data class YumeStrings_Settings_More( + public val Lab: String, + public val LabSummary: String, + public val Logs: String, + public val LogsSummary: String, + public val Onboarding: String, + public val OnboardingSummary: String, + public val About: String, + public val AboutSummary: String, +) + +public data class YumeStrings_Settings_Error( + public val WebviewFailed: String, +) + +public data class YumeStrings_Settings( + public val Title: String, + public val Section: YumeStrings_Settings_Section, + public val UiSettings: YumeStrings_Settings_UiSettings, + public val More: YumeStrings_Settings_More, + public val Error: YumeStrings_Settings_Error, +) + +// ==================== TrafficStatistics ==================== + +public data class YumeStrings_TrafficStatistics_TimeRange( + public val Today: String, + public val Week: String, +) + +public data class YumeStrings_TrafficStatistics_Summary( + public val TodayTraffic: String, + public val WeekTraffic: String, + public val Average: String, + public val DayTrafficTip: String, +) + +public data class YumeStrings_TrafficStatistics_Donut( + public val Other: String, +) + +public data class YumeStrings_TrafficStatistics_Action( + public val Clear: String, + public val ClearSuccess: String, +) + +public data class YumeStrings_TrafficStatistics_Section( + public val Traffic: String, + public val TopApps: String, + public val TodayApps: String, + public val WeekApps: String, + public val SystemTraffic: String, + public val EmptyApps: String, +) + +public data class YumeStrings_TrafficStatistics_Metric( + public val Download: String, + public val Upload: String, + public val UsageLine: String, + public val SortByName: String, + public val SortByUsage: String, +) + +public data class YumeStrings_TrafficStatistics_Weekday( + public val Mon: String, + public val Tue: String, + public val Wed: String, + public val Thu: String, + public val Fri: String, + public val Sat: String, + public val Sun: String, + public val Today: String, +) + +public data class YumeStrings_TrafficStatistics( + public val Title: String, + public val EntrySummary: String, + public val TimeRange: YumeStrings_TrafficStatistics_TimeRange, + public val Summary: YumeStrings_TrafficStatistics_Summary, + public val Donut: YumeStrings_TrafficStatistics_Donut, + public val Action: YumeStrings_TrafficStatistics_Action, + public val Section: YumeStrings_TrafficStatistics_Section, + public val Metric: YumeStrings_TrafficStatistics_Metric, + public val Weekday: YumeStrings_TrafficStatistics_Weekday, +) + +// ==================== Util ==================== + +public data class YumeStrings_Util_Error( + public val UnknownError: String, +) + +public data class YumeStrings_Util( + public val Error: YumeStrings_Util_Error, +) + diff --git a/locale/src/YumeTxt.kt b/locale/src/YumeTxt.kt new file mode 100644 index 000000000..e3f52b0fb --- /dev/null +++ b/locale/src/YumeTxt.kt @@ -0,0 +1,4354 @@ +package com.github.yumeyucca.yumebox.core.locale + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.ProvidableCompositionLocal +import androidx.compose.runtime.staticCompositionLocalOf +import cafe.adriel.lyricist.Lyricist +import cafe.adriel.lyricist.ProvideStrings +import cafe.adriel.lyricist.rememberStrings + +public val LocalYumeStrings: ProvidableCompositionLocal = + staticCompositionLocalOf { ZhHansStrings } + +public val yumeStrings: Map = mapOf( + "zh-CN" to ZhHansStrings, + "zh-Hans" to ZhHansStrings, + "zh" to ZhHansStrings, + "zh-TW" to ZhStrings, + "zh-Hant" to ZhStrings, + "zh-HK" to ZhStrings, + "en" to EnStrings, + "ja" to JaStrings, + "ru" to RuStrings, +) + +public val currentYumeStrings: YumeStrings + @Composable + get() = LocalYumeStrings.current + +@Composable +public fun rememberYumeStrings( + defaultLanguageTag: String = "zh-CN", + currentLanguageTag: String = java.util.Locale.getDefault().toLanguageTag(), +): Lyricist = + rememberStrings(yumeStrings, defaultLanguageTag, currentLanguageTag) + +@Composable +public fun ProvideYumeStrings( + lyricist: Lyricist = rememberYumeStrings(), + content: @Composable () -> Unit, +) { + ProvideStrings(lyricist, LocalYumeStrings, content) +} + +public object YumeLocaleManager { + @Volatile + public var activeStrings: YumeStrings = ZhHansStrings + internal set + + public fun updateLocale(tag: String) { + val resolved = yumeStrings[tag] + ?: yumeStrings[tag.split("-")[0]] + ?: ZhHansStrings + activeStrings = resolved + } +} + +public object YumeTxt { + public object About { + public val Title: String + get() = YumeLocaleManager.activeStrings.About.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Title, *args) + public object App { + public val Description: String + get() = YumeLocaleManager.activeStrings.About.App.Description + @androidx.compose.runtime.Composable + public fun Description(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.App.Description else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.App.Description, *args) + public val VersionLoading: String + get() = YumeLocaleManager.activeStrings.About.App.VersionLoading + @androidx.compose.runtime.Composable + public fun VersionLoading(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.App.VersionLoading else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.App.VersionLoading, *args) + public val VersionFailed: String + get() = YumeLocaleManager.activeStrings.About.App.VersionFailed + @androidx.compose.runtime.Composable + public fun VersionFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.App.VersionFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.App.VersionFailed, *args) + } + public object Debug { + public val Title: String + get() = YumeLocaleManager.activeStrings.About.Debug.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Debug.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Debug.Title, *args) + public val TestInitialization: String + get() = YumeLocaleManager.activeStrings.About.Debug.TestInitialization + @androidx.compose.runtime.Composable + public fun TestInitialization(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Debug.TestInitialization else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Debug.TestInitialization, *args) + public val InitializationReset: String + get() = YumeLocaleManager.activeStrings.About.Debug.InitializationReset + @androidx.compose.runtime.Composable + public fun InitializationReset(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Debug.InitializationReset else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Debug.InitializationReset, *args) + } + public object Section { + public val ProjectLinks: String + get() = YumeLocaleManager.activeStrings.About.Section.ProjectLinks + @androidx.compose.runtime.Composable + public fun ProjectLinks(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Section.ProjectLinks else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Section.ProjectLinks, *args) + public val More: String + get() = YumeLocaleManager.activeStrings.About.Section.More + @androidx.compose.runtime.Composable + public fun More(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Section.More else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Section.More, *args) + public val Support: String + get() = YumeLocaleManager.activeStrings.About.Section.Support + @androidx.compose.runtime.Composable + public fun Support(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Section.Support else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Section.Support, *args) + public val License: String + get() = YumeLocaleManager.activeStrings.About.Section.License + @androidx.compose.runtime.Composable + public fun License(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Section.License else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Section.License, *args) + } + public object Link { + public val TelegramGroup: String + get() = YumeLocaleManager.activeStrings.About.Link.TelegramGroup + @androidx.compose.runtime.Composable + public fun TelegramGroup(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Link.TelegramGroup else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Link.TelegramGroup, *args) + public val TelegramChannel: String + get() = YumeLocaleManager.activeStrings.About.Link.TelegramChannel + @androidx.compose.runtime.Composable + public fun TelegramChannel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Link.TelegramChannel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Link.TelegramChannel, *args) + } + public object Support { + public val ExportLogs: String + get() = YumeLocaleManager.activeStrings.About.Support.ExportLogs + @androidx.compose.runtime.Composable + public fun ExportLogs(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Support.ExportLogs else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Support.ExportLogs, *args) + public val ReportIssue: String + get() = YumeLocaleManager.activeStrings.About.Support.ReportIssue + @androidx.compose.runtime.Composable + public fun ReportIssue(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Support.ReportIssue else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Support.ReportIssue, *args) + public val ExportSuccess: String + get() = YumeLocaleManager.activeStrings.About.Support.ExportSuccess + @androidx.compose.runtime.Composable + public fun ExportSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Support.ExportSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Support.ExportSuccess, *args) + public val ExportFailed: String + get() = YumeLocaleManager.activeStrings.About.Support.ExportFailed + @androidx.compose.runtime.Composable + public fun ExportFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Support.ExportFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Support.ExportFailed, *args) + } + public object License { + public val Libraries: String + get() = YumeLocaleManager.activeStrings.About.License.Libraries + @androidx.compose.runtime.Composable + public fun Libraries(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.License.Libraries else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.License.Libraries, *args) + public val LibrariesSummary: String + get() = YumeLocaleManager.activeStrings.About.License.LibrariesSummary + @androidx.compose.runtime.Composable + public fun LibrariesSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.License.LibrariesSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.License.LibrariesSummary, *args) + public val AgplName: String + get() = YumeLocaleManager.activeStrings.About.License.AgplName + @androidx.compose.runtime.Composable + public fun AgplName(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.License.AgplName else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.License.AgplName, *args) + public val AgplDescription: String + get() = YumeLocaleManager.activeStrings.About.License.AgplDescription + @androidx.compose.runtime.Composable + public fun AgplDescription(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.License.AgplDescription else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.License.AgplDescription, *args) + } + public val Copyright: String + get() = YumeLocaleManager.activeStrings.About.Copyright + @androidx.compose.runtime.Composable + public fun Copyright(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.About.Copyright else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.About.Copyright, *args) + } + public object AccessControl { + public val Title: String + get() = YumeLocaleManager.activeStrings.AccessControl.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Title, *args) + public object Search { + public val Placeholder: String + get() = YumeLocaleManager.activeStrings.AccessControl.Search.Placeholder + @androidx.compose.runtime.Composable + public fun Placeholder(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Search.Placeholder else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Search.Placeholder, *args) + public val Empty: String + get() = YumeLocaleManager.activeStrings.AccessControl.Search.Empty + @androidx.compose.runtime.Composable + public fun Empty(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Search.Empty else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Search.Empty, *args) + } + public object AppList { + public val Title: String + get() = YumeLocaleManager.activeStrings.AccessControl.AppList.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.AppList.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.AppList.Title, *args) + public val Loading: String + get() = YumeLocaleManager.activeStrings.AccessControl.AppList.Loading + @androidx.compose.runtime.Composable + public fun Loading(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.AppList.Loading else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.AppList.Loading, *args) + } + public object Settings { + public val Title: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.Title, *args) + public val ShowSystemApps: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.ShowSystemApps + @androidx.compose.runtime.Composable + public fun ShowSystemApps(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.ShowSystemApps else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.ShowSystemApps, *args) + public val SelectedFirst: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.SelectedFirst + @androidx.compose.runtime.Composable + public fun SelectedFirst(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.SelectedFirst else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.SelectedFirst, *args) + public val SortMode: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.SortMode + @androidx.compose.runtime.Composable + public fun SortMode(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.SortMode else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.SortMode, *args) + public val SortModeCurrent: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.SortModeCurrent + @androidx.compose.runtime.Composable + public fun SortModeCurrent(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.SortModeCurrent else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.SortModeCurrent, *args) + public val BatchOperation: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.BatchOperation + @androidx.compose.runtime.Composable + public fun BatchOperation(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.BatchOperation else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.BatchOperation, *args) + public val SelectAll: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.SelectAll + @androidx.compose.runtime.Composable + public fun SelectAll(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.SelectAll else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.SelectAll, *args) + public val DeselectAll: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.DeselectAll + @androidx.compose.runtime.Composable + public fun DeselectAll(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.DeselectAll else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.DeselectAll, *args) + public val Invert: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.Invert + @androidx.compose.runtime.Composable + public fun Invert(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.Invert else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.Invert, *args) + public val ImportExport: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.ImportExport + @androidx.compose.runtime.Composable + public fun ImportExport(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.ImportExport else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.ImportExport, *args) + public val Import: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.Import + @androidx.compose.runtime.Composable + public fun Import(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.Import else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.Import, *args) + public val Export: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.Export + @androidx.compose.runtime.Composable + public fun Export(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.Export else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.Export, *args) + public val ImportSuccess: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.ImportSuccess + @androidx.compose.runtime.Composable + public fun ImportSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.ImportSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.ImportSuccess, *args) + public val ExportSuccess: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.ExportSuccess + @androidx.compose.runtime.Composable + public fun ExportSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.ExportSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.ExportSuccess, *args) + public val ImportFailed: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.ImportFailed + @androidx.compose.runtime.Composable + public fun ImportFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.ImportFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.ImportFailed, *args) + public val RegionQuickSelect: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.RegionQuickSelect + @androidx.compose.runtime.Composable + public fun RegionQuickSelect(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.RegionQuickSelect else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.RegionQuickSelect, *args) + public val ChinaApps: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.ChinaApps + @androidx.compose.runtime.Composable + public fun ChinaApps(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.ChinaApps else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.ChinaApps, *args) + public val OverseasApps: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.OverseasApps + @androidx.compose.runtime.Composable + public fun OverseasApps(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.OverseasApps else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.OverseasApps, *args) + public val RegionSelectResult: String + get() = YumeLocaleManager.activeStrings.AccessControl.Settings.RegionSelectResult + @androidx.compose.runtime.Composable + public fun RegionSelectResult(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Settings.RegionSelectResult else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Settings.RegionSelectResult, *args) + } + public object SortMode { + public val PackageName: String + get() = YumeLocaleManager.activeStrings.AccessControl.SortMode.PackageName + @androidx.compose.runtime.Composable + public fun PackageName(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.SortMode.PackageName else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.SortMode.PackageName, *args) + public val Label: String + get() = YumeLocaleManager.activeStrings.AccessControl.SortMode.Label + @androidx.compose.runtime.Composable + public fun Label(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.SortMode.Label else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.SortMode.Label, *args) + public val InstallTime: String + get() = YumeLocaleManager.activeStrings.AccessControl.SortMode.InstallTime + @androidx.compose.runtime.Composable + public fun InstallTime(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.SortMode.InstallTime else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.SortMode.InstallTime, *args) + public val UpdateTime: String + get() = YumeLocaleManager.activeStrings.AccessControl.SortMode.UpdateTime + @androidx.compose.runtime.Composable + public fun UpdateTime(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.SortMode.UpdateTime else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.SortMode.UpdateTime, *args) + } + public object Button { + public val Cancel: String + get() = YumeLocaleManager.activeStrings.AccessControl.Button.Cancel + @androidx.compose.runtime.Composable + public fun Cancel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Button.Cancel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Button.Cancel, *args) + public val Confirm: String + get() = YumeLocaleManager.activeStrings.AccessControl.Button.Confirm + @androidx.compose.runtime.Composable + public fun Confirm(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AccessControl.Button.Confirm else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AccessControl.Button.Confirm, *args) + } + } + public object AppSettings { + public val Title: String + get() = YumeLocaleManager.activeStrings.AppSettings.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Title, *args) + public object Section { + public val Behavior: String + get() = YumeLocaleManager.activeStrings.AppSettings.Section.Behavior + @androidx.compose.runtime.Composable + public fun Behavior(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Section.Behavior else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Section.Behavior, *args) + public val Interface: String + get() = YumeLocaleManager.activeStrings.AppSettings.Section.Interface + @androidx.compose.runtime.Composable + public fun Interface(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Section.Interface else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Section.Interface, *args) + public val Privacy: String + get() = YumeLocaleManager.activeStrings.AppSettings.Section.Privacy + @androidx.compose.runtime.Composable + public fun Privacy(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Section.Privacy else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Section.Privacy, *args) + public val Service: String + get() = YumeLocaleManager.activeStrings.AppSettings.Section.Service + @androidx.compose.runtime.Composable + public fun Service(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Section.Service else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Section.Service, *args) + public val Network: String + get() = YumeLocaleManager.activeStrings.AppSettings.Section.Network + @androidx.compose.runtime.Composable + public fun Network(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Section.Network else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Section.Network, *args) + public val Navigation: String + get() = YumeLocaleManager.activeStrings.AppSettings.Section.Navigation + @androidx.compose.runtime.Composable + public fun Navigation(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Section.Navigation else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Section.Navigation, *args) + public val Home: String + get() = YumeLocaleManager.activeStrings.AppSettings.Section.Home + @androidx.compose.runtime.Composable + public fun Home(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Section.Home else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Section.Home, *args) + } + public object Behavior { + public val AutoStartTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Behavior.AutoStartTitle + @androidx.compose.runtime.Composable + public fun AutoStartTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Behavior.AutoStartTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Behavior.AutoStartTitle, *args) + public val AutoUpdateOnStartTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Behavior.AutoUpdateOnStartTitle + @androidx.compose.runtime.Composable + public fun AutoUpdateOnStartTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Behavior.AutoUpdateOnStartTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Behavior.AutoUpdateOnStartTitle, *args) + } + public object Interface { + public val ThemeModeTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeTitle + @androidx.compose.runtime.Composable + public fun ThemeModeTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeTitle, *args) + public val ThemeModeSummary: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeSummary + @androidx.compose.runtime.Composable + public fun ThemeModeSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeSummary, *args) + public val ThemeModeSystem: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeSystem + @androidx.compose.runtime.Composable + public fun ThemeModeSystem(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeSystem else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeSystem, *args) + public val ThemeModeLight: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeLight + @androidx.compose.runtime.Composable + public fun ThemeModeLight(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeLight else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeLight, *args) + public val ThemeModeDark: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeDark + @androidx.compose.runtime.Composable + public fun ThemeModeDark(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeDark else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeModeDark, *args) + public val LanguageTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageTitle + @androidx.compose.runtime.Composable + public fun LanguageTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageTitle, *args) + public val LanguageSystem: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageSystem + @androidx.compose.runtime.Composable + public fun LanguageSystem(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageSystem else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageSystem, *args) + public val LanguageChinese: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageChinese + @androidx.compose.runtime.Composable + public fun LanguageChinese(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageChinese else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageChinese, *args) + public val LanguageChineseTraditional: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageChineseTraditional + @androidx.compose.runtime.Composable + public fun LanguageChineseTraditional(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageChineseTraditional else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageChineseTraditional, *args) + public val LanguageEnglish: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageEnglish + @androidx.compose.runtime.Composable + public fun LanguageEnglish(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageEnglish else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageEnglish, *args) + public val LanguageJapanese: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageJapanese + @androidx.compose.runtime.Composable + public fun LanguageJapanese(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageJapanese else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageJapanese, *args) + public val LanguageRussian: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageRussian + @androidx.compose.runtime.Composable + public fun LanguageRussian(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageRussian else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.LanguageRussian, *args) + public val ColorThemeTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.ColorThemeTitle + @androidx.compose.runtime.Composable + public fun ColorThemeTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.ColorThemeTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.ColorThemeTitle, *args) + public val ColorThemePickerTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.ColorThemePickerTitle + @androidx.compose.runtime.Composable + public fun ColorThemePickerTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.ColorThemePickerTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.ColorThemePickerTitle, *args) + public val ColorThemeCodeLabel: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.ColorThemeCodeLabel + @androidx.compose.runtime.Composable + public fun ColorThemeCodeLabel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.ColorThemeCodeLabel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.ColorThemeCodeLabel, *args) + public val ColorThemeCustomSummary: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.ColorThemeCustomSummary + @androidx.compose.runtime.Composable + public fun ColorThemeCustomSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.ColorThemeCustomSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.ColorThemeCustomSummary, *args) + public val ThemeColorPolarityInvertTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeColorPolarityInvertTitle + @androidx.compose.runtime.Composable + public fun ThemeColorPolarityInvertTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeColorPolarityInvertTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.ThemeColorPolarityInvertTitle, *args) + public val TopBarBlurTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.TopBarBlurTitle + @androidx.compose.runtime.Composable + public fun TopBarBlurTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.TopBarBlurTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.TopBarBlurTitle, *args) + public val AutoHideNavbarTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.AutoHideNavbarTitle + @androidx.compose.runtime.Composable + public fun AutoHideNavbarTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.AutoHideNavbarTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.AutoHideNavbarTitle, *args) + public val PageScaleTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.PageScaleTitle + @androidx.compose.runtime.Composable + public fun PageScaleTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.PageScaleTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.PageScaleTitle, *args) + public val PageScaleDialogSummary: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.PageScaleDialogSummary + @androidx.compose.runtime.Composable + public fun PageScaleDialogSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.PageScaleDialogSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.PageScaleDialogSummary, *args) + public val PredictiveBackTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.PredictiveBackTitle + @androidx.compose.runtime.Composable + public fun PredictiveBackTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.PredictiveBackTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.PredictiveBackTitle, *args) + public val PredictiveBackRestartSummary: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.PredictiveBackRestartSummary + @androidx.compose.runtime.Composable + public fun PredictiveBackRestartSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.PredictiveBackRestartSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.PredictiveBackRestartSummary, *args) + public val PredictiveBackProgressTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.PredictiveBackProgressTitle + @androidx.compose.runtime.Composable + public fun PredictiveBackProgressTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.PredictiveBackProgressTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.PredictiveBackProgressTitle, *args) + public val ClassicHomeTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.ClassicHomeTitle + @androidx.compose.runtime.Composable + public fun ClassicHomeTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.ClassicHomeTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.ClassicHomeTitle, *args) + public val SystemWallpaperTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.SystemWallpaperTitle + @androidx.compose.runtime.Composable + public fun SystemWallpaperTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.SystemWallpaperTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.SystemWallpaperTitle, *args) + public val CustomIconTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.CustomIconTitle + @androidx.compose.runtime.Composable + public fun CustomIconTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.CustomIconTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.CustomIconTitle, *args) + public val HomeQuoteTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.HomeQuoteTitle + @androidx.compose.runtime.Composable + public fun HomeQuoteTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.HomeQuoteTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.HomeQuoteTitle, *args) + public val HomeQuoteDefault: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.HomeQuoteDefault + @androidx.compose.runtime.Composable + public fun HomeQuoteDefault(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.HomeQuoteDefault else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.HomeQuoteDefault, *args) + public val EditHomeQuoteTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.EditHomeQuoteTitle + @androidx.compose.runtime.Composable + public fun EditHomeQuoteTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.EditHomeQuoteTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.EditHomeQuoteTitle, *args) + public val HomeWallpaperImportFailed: String + get() = YumeLocaleManager.activeStrings.AppSettings.Interface.HomeWallpaperImportFailed + @androidx.compose.runtime.Composable + public fun HomeWallpaperImportFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Interface.HomeWallpaperImportFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Interface.HomeWallpaperImportFailed, *args) + } + public object Privacy { + public val HideFromRecentsTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Privacy.HideFromRecentsTitle + @androidx.compose.runtime.Composable + public fun HideFromRecentsTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Privacy.HideFromRecentsTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Privacy.HideFromRecentsTitle, *args) + } + public object ServiceSection { + public val TrafficNotificationTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.ServiceSection.TrafficNotificationTitle + @androidx.compose.runtime.Composable + public fun TrafficNotificationTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.ServiceSection.TrafficNotificationTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.ServiceSection.TrafficNotificationTitle, *args) + public val ExitUiWhenBackgroundTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ExitUiWhenBackgroundTitle + @androidx.compose.runtime.Composable + public fun ExitUiWhenBackgroundTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ExitUiWhenBackgroundTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ExitUiWhenBackgroundTitle, *args) + public val SuperIslandTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.ServiceSection.SuperIslandTitle + @androidx.compose.runtime.Composable + public fun SuperIslandTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.ServiceSection.SuperIslandTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.ServiceSection.SuperIslandTitle, *args) + public val ShizukuTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuTitle + @androidx.compose.runtime.Composable + public fun ShizukuTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuTitle, *args) + public val ShizukuNotRunning: String + get() = YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuNotRunning + @androidx.compose.runtime.Composable + public fun ShizukuNotRunning(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuNotRunning else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuNotRunning, *args) + public val ShizukuPermissionRequired: String + get() = YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuPermissionRequired + @androidx.compose.runtime.Composable + public fun ShizukuPermissionRequired(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuPermissionRequired else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuPermissionRequired, *args) + public val ShizukuReady: String + get() = YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuReady + @androidx.compose.runtime.Composable + public fun ShizukuReady(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuReady else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuReady, *args) + public val ShizukuStatusUnavailable: String + get() = YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuStatusUnavailable + @androidx.compose.runtime.Composable + public fun ShizukuStatusUnavailable(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuStatusUnavailable else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuStatusUnavailable, *args) + public val ShizukuStatusPending: String + get() = YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuStatusPending + @androidx.compose.runtime.Composable + public fun ShizukuStatusPending(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuStatusPending else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuStatusPending, *args) + public val ShizukuStatusGranted: String + get() = YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuStatusGranted + @androidx.compose.runtime.Composable + public fun ShizukuStatusGranted(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuStatusGranted else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.ServiceSection.ShizukuStatusGranted, *args) + public val BatteryOptimizationTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.ServiceSection.BatteryOptimizationTitle + @androidx.compose.runtime.Composable + public fun BatteryOptimizationTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.ServiceSection.BatteryOptimizationTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.ServiceSection.BatteryOptimizationTitle, *args) + public val BatteryOptimizationAlreadyDisabled: String + get() = YumeLocaleManager.activeStrings.AppSettings.ServiceSection.BatteryOptimizationAlreadyDisabled + @androidx.compose.runtime.Composable + public fun BatteryOptimizationAlreadyDisabled(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.ServiceSection.BatteryOptimizationAlreadyDisabled else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.ServiceSection.BatteryOptimizationAlreadyDisabled, *args) + } + public object Network { + public val CustomUserAgentTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.Network.CustomUserAgentTitle + @androidx.compose.runtime.Composable + public fun CustomUserAgentTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Network.CustomUserAgentTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Network.CustomUserAgentTitle, *args) + public val CustomUserAgentSummaryDefault: String + get() = YumeLocaleManager.activeStrings.AppSettings.Network.CustomUserAgentSummaryDefault + @androidx.compose.runtime.Composable + public fun CustomUserAgentSummaryDefault(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Network.CustomUserAgentSummaryDefault else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Network.CustomUserAgentSummaryDefault, *args) + } + public object WarningDialog { + public val Title: String + get() = YumeLocaleManager.activeStrings.AppSettings.WarningDialog.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.WarningDialog.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.WarningDialog.Title, *args) + } + public object EditDialog { + public val UserAgentTitle: String + get() = YumeLocaleManager.activeStrings.AppSettings.EditDialog.UserAgentTitle + @androidx.compose.runtime.Composable + public fun UserAgentTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.EditDialog.UserAgentTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.EditDialog.UserAgentTitle, *args) + } + public object Button { + public val Apply: String + get() = YumeLocaleManager.activeStrings.AppSettings.Button.Apply + @androidx.compose.runtime.Composable + public fun Apply(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.AppSettings.Button.Apply else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.AppSettings.Button.Apply, *args) + } + } + public object Component { + public object ProfileCard { + public val Update: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.Update + @androidx.compose.runtime.Composable + public fun Update(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.Update else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.Update, *args) + public val Export: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.Export + @androidx.compose.runtime.Composable + public fun Export(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.Export else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.Export, *args) + public val Edit: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.Edit + @androidx.compose.runtime.Composable + public fun Edit(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.Edit else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.Edit, *args) + public val Delete: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.Delete + @androidx.compose.runtime.Composable + public fun Delete(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.Delete else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.Delete, *args) + public val RemoteSubscription: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.RemoteSubscription + @androidx.compose.runtime.Composable + public fun RemoteSubscription(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.RemoteSubscription else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.RemoteSubscription, *args) + public val LocalFile: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.LocalFile + @androidx.compose.runtime.Composable + public fun LocalFile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.LocalFile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.LocalFile, *args) + public val LocalConfig: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.LocalConfig + @androidx.compose.runtime.Composable + public fun LocalConfig(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.LocalConfig else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.LocalConfig, *args) + public val ClickToUpdate: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.ClickToUpdate + @androidx.compose.runtime.Composable + public fun ClickToUpdate(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.ClickToUpdate else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.ClickToUpdate, *args) + public val Traffic: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.Traffic + @androidx.compose.runtime.Composable + public fun Traffic(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.Traffic else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.Traffic, *args) + public val UsedTraffic: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.UsedTraffic + @androidx.compose.runtime.Composable + public fun UsedTraffic(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.UsedTraffic else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.UsedTraffic, *args) + public val ExpireAt: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.ExpireAt + @androidx.compose.runtime.Composable + public fun ExpireAt(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.ExpireAt else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.ExpireAt, *args) + public val ExpireToday: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.ExpireToday + @androidx.compose.runtime.Composable + public fun ExpireToday(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.ExpireToday else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.ExpireToday, *args) + public val Expired: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.Expired + @androidx.compose.runtime.Composable + public fun Expired(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.Expired else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.Expired, *args) + public val JustNow: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.JustNow + @androidx.compose.runtime.Composable + public fun JustNow(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.JustNow else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.JustNow, *args) + public val MinutesAgo: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.MinutesAgo + @androidx.compose.runtime.Composable + public fun MinutesAgo(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.MinutesAgo else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.MinutesAgo, *args) + public val HoursAgo: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.HoursAgo + @androidx.compose.runtime.Composable + public fun HoursAgo(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.HoursAgo else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.HoursAgo, *args) + public val DaysAgo: String + get() = YumeLocaleManager.activeStrings.Component.ProfileCard.DaysAgo + @androidx.compose.runtime.Composable + public fun DaysAgo(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ProfileCard.DaysAgo else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ProfileCard.DaysAgo, *args) + } + public object WebView { + public val InvalidUrl: String + get() = YumeLocaleManager.activeStrings.Component.WebView.InvalidUrl + @androidx.compose.runtime.Composable + public fun InvalidUrl(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.WebView.InvalidUrl else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.WebView.InvalidUrl, *args) + } + public object Selector { + public val NotModify: String + get() = YumeLocaleManager.activeStrings.Component.Selector.NotModify + @androidx.compose.runtime.Composable + public fun NotModify(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Selector.NotModify else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Selector.NotModify, *args) + public val Enable: String + get() = YumeLocaleManager.activeStrings.Component.Selector.Enable + @androidx.compose.runtime.Composable + public fun Enable(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Selector.Enable else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Selector.Enable, *args) + public val Disable: String + get() = YumeLocaleManager.activeStrings.Component.Selector.Disable + @androidx.compose.runtime.Composable + public fun Disable(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Selector.Disable else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Selector.Disable, *args) + public val Replace: String + get() = YumeLocaleManager.activeStrings.Component.Selector.Replace + @androidx.compose.runtime.Composable + public fun Replace(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Selector.Replace else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Selector.Replace, *args) + public val Prepend: String + get() = YumeLocaleManager.activeStrings.Component.Selector.Prepend + @androidx.compose.runtime.Composable + public fun Prepend(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Selector.Prepend else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Selector.Prepend, *args) + public val Append: String + get() = YumeLocaleManager.activeStrings.Component.Selector.Append + @androidx.compose.runtime.Composable + public fun Append(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Selector.Append else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Selector.Append, *args) + public val Merge: String + get() = YumeLocaleManager.activeStrings.Component.Selector.Merge + @androidx.compose.runtime.Composable + public fun Merge(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Selector.Merge else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Selector.Merge, *args) + } + public object Navigation { + public val Back: String + get() = YumeLocaleManager.activeStrings.Component.Navigation.Back + @androidx.compose.runtime.Composable + public fun Back(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Navigation.Back else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Navigation.Back, *args) + } + public object Message { + public val Confirm: String + get() = YumeLocaleManager.activeStrings.Component.Message.Confirm + @androidx.compose.runtime.Composable + public fun Confirm(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Message.Confirm else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Message.Confirm, *args) + public val Hint: String + get() = YumeLocaleManager.activeStrings.Component.Message.Hint + @androidx.compose.runtime.Composable + public fun Hint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Message.Hint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Message.Hint, *args) + public val Error: String + get() = YumeLocaleManager.activeStrings.Component.Message.Error + @androidx.compose.runtime.Composable + public fun Error(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Message.Error else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Message.Error, *args) + public val Success: String + get() = YumeLocaleManager.activeStrings.Component.Message.Success + @androidx.compose.runtime.Composable + public fun Success(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Message.Success else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Message.Success, *args) + } + public object Button { + public val Cancel: String + get() = YumeLocaleManager.activeStrings.Component.Button.Cancel + @androidx.compose.runtime.Composable + public fun Cancel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Button.Cancel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Button.Cancel, *args) + public val Confirm: String + get() = YumeLocaleManager.activeStrings.Component.Button.Confirm + @androidx.compose.runtime.Composable + public fun Confirm(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Button.Confirm else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Button.Confirm, *args) + public val Clear: String + get() = YumeLocaleManager.activeStrings.Component.Button.Clear + @androidx.compose.runtime.Composable + public fun Clear(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Button.Clear else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Button.Clear, *args) + public val Copy: String + get() = YumeLocaleManager.activeStrings.Component.Button.Copy + @androidx.compose.runtime.Composable + public fun Copy(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Button.Copy else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Button.Copy, *args) + } + public object Flag { + public val ContentDescription: String + get() = YumeLocaleManager.activeStrings.Component.Flag.ContentDescription + @androidx.compose.runtime.Composable + public fun ContentDescription(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Flag.ContentDescription else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Flag.ContentDescription, *args) + } + public object Loading { + public val Starting: String + get() = YumeLocaleManager.activeStrings.Component.Loading.Starting + @androidx.compose.runtime.Composable + public fun Starting(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Loading.Starting else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Loading.Starting, *args) + } + public object ConfigInput { + public val PortLabel: String + get() = YumeLocaleManager.activeStrings.Component.ConfigInput.PortLabel + @androidx.compose.runtime.Composable + public fun PortLabel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ConfigInput.PortLabel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ConfigInput.PortLabel, *args) + public val CountItems: String + get() = YumeLocaleManager.activeStrings.Component.ConfigInput.CountItems + @androidx.compose.runtime.Composable + public fun CountItems(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.ConfigInput.CountItems else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.ConfigInput.CountItems, *args) + } + public object BottomBar { + public val Home: String + get() = YumeLocaleManager.activeStrings.Component.BottomBar.Home + @androidx.compose.runtime.Composable + public fun Home(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.BottomBar.Home else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.BottomBar.Home, *args) + public val Proxy: String + get() = YumeLocaleManager.activeStrings.Component.BottomBar.Proxy + @androidx.compose.runtime.Composable + public fun Proxy(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.BottomBar.Proxy else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.BottomBar.Proxy, *args) + public val Config: String + get() = YumeLocaleManager.activeStrings.Component.BottomBar.Config + @androidx.compose.runtime.Composable + public fun Config(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.BottomBar.Config else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.BottomBar.Config, *args) + public val Setting: String + get() = YumeLocaleManager.activeStrings.Component.BottomBar.Setting + @androidx.compose.runtime.Composable + public fun Setting(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.BottomBar.Setting else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.BottomBar.Setting, *args) + } + public object Editor { + public val CountItems: String + get() = YumeLocaleManager.activeStrings.Component.Editor.CountItems + @androidx.compose.runtime.Composable + public fun CountItems(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.CountItems else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.CountItems, *args) + public object Action { + public val Search: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Action.Search + @androidx.compose.runtime.Composable + public fun Search(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Action.Search else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Action.Search, *args) + } + public object Dialog { + public val AddTitle: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Dialog.AddTitle + @androidx.compose.runtime.Composable + public fun AddTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Dialog.AddTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Dialog.AddTitle, *args) + public val EditTitle: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Dialog.EditTitle + @androidx.compose.runtime.Composable + public fun EditTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Dialog.EditTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Dialog.EditTitle, *args) + public val ResetTitle: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Dialog.ResetTitle + @androidx.compose.runtime.Composable + public fun ResetTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Dialog.ResetTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Dialog.ResetTitle, *args) + public val ResetMessage: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Dialog.ResetMessage + @androidx.compose.runtime.Composable + public fun ResetMessage(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Dialog.ResetMessage else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Dialog.ResetMessage, *args) + } + public object Empty { + public val Title: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Empty.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Empty.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Empty.Title, *args) + public val Hint: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Empty.Hint + @androidx.compose.runtime.Composable + public fun Hint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Empty.Hint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Empty.Hint, *args) + } + public object Error { + public val KeyEmpty: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Error.KeyEmpty + @androidx.compose.runtime.Composable + public fun KeyEmpty(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Error.KeyEmpty else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Error.KeyEmpty, *args) + public val KeyExists: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Error.KeyExists + @androidx.compose.runtime.Composable + public fun KeyExists(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Error.KeyExists else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Error.KeyExists, *args) + } + public object Rule { + public val Type: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Rule.Type + @androidx.compose.runtime.Composable + public fun Type(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Rule.Type else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Rule.Type, *args) + public val Target: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Rule.Target + @androidx.compose.runtime.Composable + public fun Target(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Rule.Target else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Rule.Target, *args) + public val Content: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Rule.Content + @androidx.compose.runtime.Composable + public fun Content(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Rule.Content else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Rule.Content, *args) + public val Src: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Rule.Src + @androidx.compose.runtime.Composable + public fun Src(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Rule.Src else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Rule.Src, *args) + public val NoResolve: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Rule.NoResolve + @androidx.compose.runtime.Composable + public fun NoResolve(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Rule.NoResolve else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Rule.NoResolve, *args) + public val TargetReject: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Rule.TargetReject + @androidx.compose.runtime.Composable + public fun TargetReject(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Rule.TargetReject else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Rule.TargetReject, *args) + public val TargetDirect: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Rule.TargetDirect + @androidx.compose.runtime.Composable + public fun TargetDirect(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Rule.TargetDirect else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Rule.TargetDirect, *args) + public val TargetMatch: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Rule.TargetMatch + @androidx.compose.runtime.Composable + public fun TargetMatch(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Rule.TargetMatch else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Rule.TargetMatch, *args) + public val ErrorContentRequired: String + get() = YumeLocaleManager.activeStrings.Component.Editor.Rule.ErrorContentRequired + @androidx.compose.runtime.Composable + public fun ErrorContentRequired(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Component.Editor.Rule.ErrorContentRequired else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Component.Editor.Rule.ErrorContentRequired, *args) + } + } + } + public object Connection { + public val Title: String + get() = YumeLocaleManager.activeStrings.Connection.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Title, *args) + public val Summary: String + get() = YumeLocaleManager.activeStrings.Connection.Summary + @androidx.compose.runtime.Composable + public fun Summary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Summary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Summary, *args) + public object Tab { + public val Active: String + get() = YumeLocaleManager.activeStrings.Connection.Tab.Active + @androidx.compose.runtime.Composable + public fun Active(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Tab.Active else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Tab.Active, *args) + public val Closed: String + get() = YumeLocaleManager.activeStrings.Connection.Tab.Closed + @androidx.compose.runtime.Composable + public fun Closed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Tab.Closed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Tab.Closed, *args) + } + public val Search: String + get() = YumeLocaleManager.activeStrings.Connection.Search + @androidx.compose.runtime.Composable + public fun Search(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Search else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Search, *args) + public val SearchHint: String + get() = YumeLocaleManager.activeStrings.Connection.SearchHint + @androidx.compose.runtime.Composable + public fun SearchHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.SearchHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.SearchHint, *args) + public val SortBy: String + get() = YumeLocaleManager.activeStrings.Connection.SortBy + @androidx.compose.runtime.Composable + public fun SortBy(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.SortBy else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.SortBy, *args) + public object Sort { + public val Time: String + get() = YumeLocaleManager.activeStrings.Connection.Sort.Time + @androidx.compose.runtime.Composable + public fun Time(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Sort.Time else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Sort.Time, *args) + public val Upload: String + get() = YumeLocaleManager.activeStrings.Connection.Sort.Upload + @androidx.compose.runtime.Composable + public fun Upload(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Sort.Upload else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Sort.Upload, *args) + public val Download: String + get() = YumeLocaleManager.activeStrings.Connection.Sort.Download + @androidx.compose.runtime.Composable + public fun Download(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Sort.Download else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Sort.Download, *args) + public val Host: String + get() = YumeLocaleManager.activeStrings.Connection.Sort.Host + @androidx.compose.runtime.Composable + public fun Host(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Sort.Host else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Sort.Host, *args) + } + public val ChainCount: String + get() = YumeLocaleManager.activeStrings.Connection.ChainCount + @androidx.compose.runtime.Composable + public fun ChainCount(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.ChainCount else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.ChainCount, *args) + public object RelativeTime { + public val JustNow: String + get() = YumeLocaleManager.activeStrings.Connection.RelativeTime.JustNow + @androidx.compose.runtime.Composable + public fun JustNow(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.RelativeTime.JustNow else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.RelativeTime.JustNow, *args) + public val MinutesAgo: String + get() = YumeLocaleManager.activeStrings.Connection.RelativeTime.MinutesAgo + @androidx.compose.runtime.Composable + public fun MinutesAgo(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.RelativeTime.MinutesAgo else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.RelativeTime.MinutesAgo, *args) + public val HoursAgo: String + get() = YumeLocaleManager.activeStrings.Connection.RelativeTime.HoursAgo + @androidx.compose.runtime.Composable + public fun HoursAgo(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.RelativeTime.HoursAgo else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.RelativeTime.HoursAgo, *args) + public val DaysAgo: String + get() = YumeLocaleManager.activeStrings.Connection.RelativeTime.DaysAgo + @androidx.compose.runtime.Composable + public fun DaysAgo(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.RelativeTime.DaysAgo else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.RelativeTime.DaysAgo, *args) + public val Date: String + get() = YumeLocaleManager.activeStrings.Connection.RelativeTime.Date + @androidx.compose.runtime.Composable + public fun Date(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.RelativeTime.Date else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.RelativeTime.Date, *args) + } + public object Detail { + public val Title: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Title, *args) + public object Action { + public val Interrupting: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Action.Interrupting + @androidx.compose.runtime.Composable + public fun Interrupting(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Action.Interrupting else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Action.Interrupting, *args) + public val Interrupt: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Action.Interrupt + @androidx.compose.runtime.Composable + public fun Interrupt(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Action.Interrupt else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Action.Interrupt, *args) + } + public object Section { + public val Info: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Section.Info + @androidx.compose.runtime.Composable + public fun Info(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Section.Info else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Section.Info, *args) + public val Rule: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Section.Rule + @androidx.compose.runtime.Composable + public fun Rule(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Section.Rule else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Section.Rule, *args) + public val Chain: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Section.Chain + @androidx.compose.runtime.Composable + public fun Chain(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Section.Chain else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Section.Chain, *args) + } + public object Label { + public val Host: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Label.Host + @androidx.compose.runtime.Composable + public fun Host(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Label.Host else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Label.Host, *args) + public val Protocol: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Label.Protocol + @androidx.compose.runtime.Composable + public fun Protocol(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Label.Protocol else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Label.Protocol, *args) + public val Process: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Label.Process + @androidx.compose.runtime.Composable + public fun Process(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Label.Process else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Label.Process, *args) + public val SourceAddress: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Label.SourceAddress + @androidx.compose.runtime.Composable + public fun SourceAddress(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Label.SourceAddress else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Label.SourceAddress, *args) + public val DestinationAddress: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Label.DestinationAddress + @androidx.compose.runtime.Composable + public fun DestinationAddress(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Label.DestinationAddress else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Label.DestinationAddress, *args) + public val Duration: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Label.Duration + @androidx.compose.runtime.Composable + public fun Duration(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Label.Duration else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Label.Duration, *args) + public val Upload: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Label.Upload + @androidx.compose.runtime.Composable + public fun Upload(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Label.Upload else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Label.Upload, *args) + public val Download: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Label.Download + @androidx.compose.runtime.Composable + public fun Download(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Label.Download else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Label.Download, *args) + public val Type: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Label.Type + @androidx.compose.runtime.Composable + public fun Type(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Label.Type else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Label.Type, *args) + public val Content: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Label.Content + @androidx.compose.runtime.Composable + public fun Content(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Label.Content else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Label.Content, *args) + public val Chain: String + get() = YumeLocaleManager.activeStrings.Connection.Detail.Label.Chain + @androidx.compose.runtime.Composable + public fun Chain(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Detail.Label.Chain else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Detail.Label.Chain, *args) + } + } + public val Loading: String + get() = YumeLocaleManager.activeStrings.Connection.Loading + @androidx.compose.runtime.Composable + public fun Loading(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Loading else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Loading, *args) + public val Empty: String + get() = YumeLocaleManager.activeStrings.Connection.Empty + @androidx.compose.runtime.Composable + public fun Empty(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.Empty else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.Empty, *args) + public val NoResults: String + get() = YumeLocaleManager.activeStrings.Connection.NoResults + @androidx.compose.runtime.Composable + public fun NoResults(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Connection.NoResults else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Connection.NoResults, *args) + } + public object Editor { + public object Title { + public val Config: String + get() = YumeLocaleManager.activeStrings.Editor.Title.Config + @androidx.compose.runtime.Composable + public fun Config(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.Title.Config else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.Title.Config, *args) + public val Preview: String + get() = YumeLocaleManager.activeStrings.Editor.Title.Preview + @androidx.compose.runtime.Composable + public fun Preview(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.Title.Preview else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.Title.Preview, *args) + public val Override: String + get() = YumeLocaleManager.activeStrings.Editor.Title.Override + @androidx.compose.runtime.Composable + public fun Override(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.Title.Override else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.Title.Override, *args) + public val Profile: String + get() = YumeLocaleManager.activeStrings.Editor.Title.Profile + @androidx.compose.runtime.Composable + public fun Profile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.Title.Profile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.Title.Profile, *args) + } + public object Action { + public val Format: String + get() = YumeLocaleManager.activeStrings.Editor.Action.Format + @androidx.compose.runtime.Composable + public fun Format(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.Action.Format else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.Action.Format, *args) + public val Save: String + get() = YumeLocaleManager.activeStrings.Editor.Action.Save + @androidx.compose.runtime.Composable + public fun Save(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.Action.Save else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.Action.Save, *args) + } + public object Message { + public val FormatSuccess: String + get() = YumeLocaleManager.activeStrings.Editor.Message.FormatSuccess + @androidx.compose.runtime.Composable + public fun FormatSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.Message.FormatSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.Message.FormatSuccess, *args) + public val FormatSkipped: String + get() = YumeLocaleManager.activeStrings.Editor.Message.FormatSkipped + @androidx.compose.runtime.Composable + public fun FormatSkipped(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.Message.FormatSkipped else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.Message.FormatSkipped, *args) + public val SaveFailed: String + get() = YumeLocaleManager.activeStrings.Editor.Message.SaveFailed + @androidx.compose.runtime.Composable + public fun SaveFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.Message.SaveFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.Message.SaveFailed, *args) + } + public object Discard { + public val Title: String + get() = YumeLocaleManager.activeStrings.Editor.Discard.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.Discard.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.Discard.Title, *args) + public val Summary: String + get() = YumeLocaleManager.activeStrings.Editor.Discard.Summary + @androidx.compose.runtime.Composable + public fun Summary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.Discard.Summary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.Discard.Summary, *args) + public val Confirm: String + get() = YumeLocaleManager.activeStrings.Editor.Discard.Confirm + @androidx.compose.runtime.Composable + public fun Confirm(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.Discard.Confirm else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.Discard.Confirm, *args) + } + public val JsonSubtitle: String + get() = YumeLocaleManager.activeStrings.Editor.JsonSubtitle + @androidx.compose.runtime.Composable + public fun JsonSubtitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Editor.JsonSubtitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Editor.JsonSubtitle, *args) + } + public object Feature { + public val Title: String + get() = YumeLocaleManager.activeStrings.Feature.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.Title, *args) + public object ServiceStatus { + public val Section: String + get() = YumeLocaleManager.activeStrings.Feature.ServiceStatus.Section + @androidx.compose.runtime.Composable + public fun Section(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.ServiceStatus.Section else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.ServiceStatus.Section, *args) + public val SwitchStartSubStore: String + get() = YumeLocaleManager.activeStrings.Feature.ServiceStatus.SwitchStartSubStore + @androidx.compose.runtime.Composable + public fun SwitchStartSubStore(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.ServiceStatus.SwitchStartSubStore else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.ServiceStatus.SwitchStartSubStore, *args) + public val OpenSubStorePanel: String + get() = YumeLocaleManager.activeStrings.Feature.ServiceStatus.OpenSubStorePanel + @androidx.compose.runtime.Composable + public fun OpenSubStorePanel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.ServiceStatus.OpenSubStorePanel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.ServiceStatus.OpenSubStorePanel, *args) + public val AllowLan: String + get() = YumeLocaleManager.activeStrings.Feature.ServiceStatus.AllowLan + @androidx.compose.runtime.Composable + public fun AllowLan(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.ServiceStatus.AllowLan else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.ServiceStatus.AllowLan, *args) + public val AutoCloseModeTitle: String + get() = YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoCloseModeTitle + @androidx.compose.runtime.Composable + public fun AutoCloseModeTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoCloseModeTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoCloseModeTitle, *args) + public val AutoCloseModeAlwaysOn: String + get() = YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoCloseModeAlwaysOn + @androidx.compose.runtime.Composable + public fun AutoCloseModeAlwaysOn(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoCloseModeAlwaysOn else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoCloseModeAlwaysOn, *args) + public val AutoCloseMode5Min: String + get() = YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoCloseMode5Min + @androidx.compose.runtime.Composable + public fun AutoCloseMode5Min(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoCloseMode5Min else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoCloseMode5Min, *args) + public val AutoCloseMode10Min: String + get() = YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoCloseMode10Min + @androidx.compose.runtime.Composable + public fun AutoCloseMode10Min(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoCloseMode10Min else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoCloseMode10Min, *args) + public val AutoClosed: String + get() = YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoClosed + @androidx.compose.runtime.Composable + public fun AutoClosed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoClosed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.ServiceStatus.AutoClosed, *args) + } + public object Panel { + public val Section: String + get() = YumeLocaleManager.activeStrings.Feature.Panel.Section + @androidx.compose.runtime.Composable + public fun Section(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.Panel.Section else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.Panel.Section, *args) + public val SelectPanel: String + get() = YumeLocaleManager.activeStrings.Feature.Panel.SelectPanel + @androidx.compose.runtime.Composable + public fun SelectPanel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.Panel.SelectPanel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.Panel.SelectPanel, *args) + public val OpenMode: String + get() = YumeLocaleManager.activeStrings.Feature.Panel.OpenMode + @androidx.compose.runtime.Composable + public fun OpenMode(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.Panel.OpenMode else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.Panel.OpenMode, *args) + public val OpenPanel: String + get() = YumeLocaleManager.activeStrings.Feature.Panel.OpenPanel + @androidx.compose.runtime.Composable + public fun OpenPanel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.Panel.OpenPanel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.Panel.OpenPanel, *args) + public val Unknown: String + get() = YumeLocaleManager.activeStrings.Feature.Panel.Unknown + @androidx.compose.runtime.Composable + public fun Unknown(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.Panel.Unknown else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.Panel.Unknown, *args) + public val CreateShortcut: String + get() = YumeLocaleManager.activeStrings.Feature.Panel.CreateShortcut + @androidx.compose.runtime.Composable + public fun CreateShortcut(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.Panel.CreateShortcut else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.Panel.CreateShortcut, *args) + public val CreateShortcutSummary: String + get() = YumeLocaleManager.activeStrings.Feature.Panel.CreateShortcutSummary + @androidx.compose.runtime.Composable + public fun CreateShortcutSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.Panel.CreateShortcutSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.Panel.CreateShortcutSummary, *args) + public val ShortcutTitle: String + get() = YumeLocaleManager.activeStrings.Feature.Panel.ShortcutTitle + @androidx.compose.runtime.Composable + public fun ShortcutTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.Panel.ShortcutTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.Panel.ShortcutTitle, *args) + public val ShortcutName: String + get() = YumeLocaleManager.activeStrings.Feature.Panel.ShortcutName + @androidx.compose.runtime.Composable + public fun ShortcutName(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.Panel.ShortcutName else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.Panel.ShortcutName, *args) + public val ShortcutPickIcon: String + get() = YumeLocaleManager.activeStrings.Feature.Panel.ShortcutPickIcon + @androidx.compose.runtime.Composable + public fun ShortcutPickIcon(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.Panel.ShortcutPickIcon else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.Panel.ShortcutPickIcon, *args) + public val ShortcutResetIcon: String + get() = YumeLocaleManager.activeStrings.Feature.Panel.ShortcutResetIcon + @androidx.compose.runtime.Composable + public fun ShortcutResetIcon(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.Panel.ShortcutResetIcon else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.Panel.ShortcutResetIcon, *args) + } + public object RemoteController { + public val Section: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.Section + @androidx.compose.runtime.Composable + public fun Section(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.Section else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.Section, *args) + public val ModeTitle: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.ModeTitle + @androidx.compose.runtime.Composable + public fun ModeTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.ModeTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.ModeTitle, *args) + public val ControlBackend: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.ControlBackend + @androidx.compose.runtime.Composable + public fun ControlBackend(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.ControlBackend else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.ControlBackend, *args) + public val AddBackend: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.AddBackend + @androidx.compose.runtime.Composable + public fun AddBackend(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.AddBackend else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.AddBackend, *args) + public val EditBackend: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.EditBackend + @androidx.compose.runtime.Composable + public fun EditBackend(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.EditBackend else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.EditBackend, *args) + public val Name: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.Name + @androidx.compose.runtime.Composable + public fun Name(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.Name else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.Name, *args) + public val Host: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.Host + @androidx.compose.runtime.Composable + public fun Host(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.Host else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.Host, *args) + public val Port: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.Port + @androidx.compose.runtime.Composable + public fun Port(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.Port else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.Port, *args) + public val Secret: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.Secret + @androidx.compose.runtime.Composable + public fun Secret(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.Secret else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.Secret, *args) + public val Protocol: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.Protocol + @androidx.compose.runtime.Composable + public fun Protocol(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.Protocol else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.Protocol, *args) + public val PortRangeError: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.PortRangeError + @androidx.compose.runtime.Composable + public fun PortRangeError(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.PortRangeError else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.PortRangeError, *args) + public val Connected: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.Connected + @androidx.compose.runtime.Composable + public fun Connected(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.Connected else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.Connected, *args) + public val ConnectionFailed: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.ConnectionFailed + @androidx.compose.runtime.Composable + public fun ConnectionFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.ConnectionFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.ConnectionFailed, *args) + public val Delete: String + get() = YumeLocaleManager.activeStrings.Feature.RemoteController.Delete + @androidx.compose.runtime.Composable + public fun Delete(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.RemoteController.Delete else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.RemoteController.Delete, *args) + } + public object SubStore { + public val Section: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.Section + @androidx.compose.runtime.Composable + public fun Section(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.Section else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.Section, *args) + public val JavetLibraryReady: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.JavetLibraryReady + @androidx.compose.runtime.Composable + public fun JavetLibraryReady(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.JavetLibraryReady else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.JavetLibraryReady, *args) + public val JavetLibraryDownload: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.JavetLibraryDownload + @androidx.compose.runtime.Composable + public fun JavetLibraryDownload(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.JavetLibraryDownload else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.JavetLibraryDownload, *args) + public val JavetAvailable: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.JavetAvailable + @androidx.compose.runtime.Composable + public fun JavetAvailable(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.JavetAvailable else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.JavetAvailable, *args) + public val DownloadHint: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.DownloadHint + @androidx.compose.runtime.Composable + public fun DownloadHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.DownloadHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.DownloadHint, *args) + public val JavetDownloadSuccess: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.JavetDownloadSuccess + @androidx.compose.runtime.Composable + public fun JavetDownloadSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.JavetDownloadSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.JavetDownloadSuccess, *args) + public val JavetDownloadFailed: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.JavetDownloadFailed + @androidx.compose.runtime.Composable + public fun JavetDownloadFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.JavetDownloadFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.JavetDownloadFailed, *args) + public val DownloadResources: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.DownloadResources + @androidx.compose.runtime.Composable + public fun DownloadResources(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.DownloadResources else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.DownloadResources, *args) + public val DownloadResourcesSummary: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.DownloadResourcesSummary + @androidx.compose.runtime.Composable + public fun DownloadResourcesSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.DownloadResourcesSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.DownloadResourcesSummary, *args) + public val Not32Bit: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.Not32Bit + @androidx.compose.runtime.Composable + public fun Not32Bit(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.Not32Bit else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.Not32Bit, *args) + public val DownloadSubStoreFirst: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.DownloadSubStoreFirst + @androidx.compose.runtime.Composable + public fun DownloadSubStoreFirst(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.DownloadSubStoreFirst else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.DownloadSubStoreFirst, *args) + public val JavetNotReady: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.JavetNotReady + @androidx.compose.runtime.Composable + public fun JavetNotReady(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.JavetNotReady else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.JavetNotReady, *args) + public val FrontendDownloadSuccess: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.FrontendDownloadSuccess + @androidx.compose.runtime.Composable + public fun FrontendDownloadSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.FrontendDownloadSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.FrontendDownloadSuccess, *args) + public val FrontendDownloadFailed: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.FrontendDownloadFailed + @androidx.compose.runtime.Composable + public fun FrontendDownloadFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.FrontendDownloadFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.FrontendDownloadFailed, *args) + public val BackendDownloadSuccess: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.BackendDownloadSuccess + @androidx.compose.runtime.Composable + public fun BackendDownloadSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.BackendDownloadSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.BackendDownloadSuccess, *args) + public val BackendDownloadFailed: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.BackendDownloadFailed + @androidx.compose.runtime.Composable + public fun BackendDownloadFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.BackendDownloadFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.BackendDownloadFailed, *args) + public val DownloadError: String + get() = YumeLocaleManager.activeStrings.Feature.SubStore.DownloadError + @androidx.compose.runtime.Composable + public fun DownloadError(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.SubStore.DownloadError else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.SubStore.DownloadError, *args) + } + public object BackupRestore { + public val Section: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.Section + @androidx.compose.runtime.Composable + public fun Section(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.Section else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.Section, *args) + public val ExportTitle: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.ExportTitle + @androidx.compose.runtime.Composable + public fun ExportTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.ExportTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.ExportTitle, *args) + public val ExportSummary: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.ExportSummary + @androidx.compose.runtime.Composable + public fun ExportSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.ExportSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.ExportSummary, *args) + public val RestoreTitle: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.RestoreTitle + @androidx.compose.runtime.Composable + public fun RestoreTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.RestoreTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.RestoreTitle, *args) + public val RestoreSummary: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.RestoreSummary + @androidx.compose.runtime.Composable + public fun RestoreSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.RestoreSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.RestoreSummary, *args) + public val Cancel: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.Cancel + @androidx.compose.runtime.Composable + public fun Cancel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.Cancel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.Cancel, *args) + public object RestoreDialog { + public val Title: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.RestoreDialog.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.RestoreDialog.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.RestoreDialog.Title, *args) + public val Message: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.RestoreDialog.Message + @androidx.compose.runtime.Composable + public fun Message(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.RestoreDialog.Message else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.RestoreDialog.Message, *args) + } + public object Message { + public val ExportSuccess: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.Message.ExportSuccess + @androidx.compose.runtime.Composable + public fun ExportSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.Message.ExportSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.Message.ExportSuccess, *args) + public val RestoreSuccess: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.Message.RestoreSuccess + @androidx.compose.runtime.Composable + public fun RestoreSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.Message.RestoreSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.Message.RestoreSuccess, *args) + } + public object Error { + public val OpenOutputFailed: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.Error.OpenOutputFailed + @androidx.compose.runtime.Composable + public fun OpenOutputFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.Error.OpenOutputFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.Error.OpenOutputFailed, *args) + public val OpenInputFailed: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.Error.OpenInputFailed + @androidx.compose.runtime.Composable + public fun OpenInputFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.Error.OpenInputFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.Error.OpenInputFailed, *args) + public val OperationFailed: String + get() = YumeLocaleManager.activeStrings.Feature.BackupRestore.Error.OperationFailed + @androidx.compose.runtime.Composable + public fun OperationFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Feature.BackupRestore.Error.OperationFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Feature.BackupRestore.Error.OperationFailed, *args) + } + } + } + public object Home { + public val Title: String + get() = YumeLocaleManager.activeStrings.Home.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Title, *args) + public object Message { + public val ConfigSwitched: String + get() = YumeLocaleManager.activeStrings.Home.Message.ConfigSwitched + @androidx.compose.runtime.Composable + public fun ConfigSwitched(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Message.ConfigSwitched else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Message.ConfigSwitched, *args) + public val ConfigSwitchFailed: String + get() = YumeLocaleManager.activeStrings.Home.Message.ConfigSwitchFailed + @androidx.compose.runtime.Composable + public fun ConfigSwitchFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Message.ConfigSwitchFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Message.ConfigSwitchFailed, *args) + public val Preparing: String + get() = YumeLocaleManager.activeStrings.Home.Message.Preparing + @androidx.compose.runtime.Composable + public fun Preparing(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Message.Preparing else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Message.Preparing, *args) + public val BuiltinGeoRequired: String + get() = YumeLocaleManager.activeStrings.Home.Message.BuiltinGeoRequired + @androidx.compose.runtime.Composable + public fun BuiltinGeoRequired(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Message.BuiltinGeoRequired else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Message.BuiltinGeoRequired, *args) + public val StartFailed: String + get() = YumeLocaleManager.activeStrings.Home.Message.StartFailed + @androidx.compose.runtime.Composable + public fun StartFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Message.StartFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Message.StartFailed, *args) + public val RuntimeUnavailable: String + get() = YumeLocaleManager.activeStrings.Home.Message.RuntimeUnavailable + @androidx.compose.runtime.Composable + public fun RuntimeUnavailable(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Message.RuntimeUnavailable else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Message.RuntimeUnavailable, *args) + public val StopFailed: String + get() = YumeLocaleManager.activeStrings.Home.Message.StopFailed + @androidx.compose.runtime.Composable + public fun StopFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Message.StopFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Message.StopFailed, *args) + } + public object Control { + public val HintAddProfile: String + get() = YumeLocaleManager.activeStrings.Home.Control.HintAddProfile + @androidx.compose.runtime.Composable + public fun HintAddProfile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Control.HintAddProfile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Control.HintAddProfile, *args) + public val HintEnableProfile: String + get() = YumeLocaleManager.activeStrings.Home.Control.HintEnableProfile + @androidx.compose.runtime.Composable + public fun HintEnableProfile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Control.HintEnableProfile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Control.HintEnableProfile, *args) + public val Start: String + get() = YumeLocaleManager.activeStrings.Home.Control.Start + @androidx.compose.runtime.Composable + public fun Start(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Control.Start else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Control.Start, *args) + public val Stop: String + get() = YumeLocaleManager.activeStrings.Home.Control.Stop + @androidx.compose.runtime.Composable + public fun Stop(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Control.Stop else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Control.Stop, *args) + } + public object NodeInfo { + public val Node: String + get() = YumeLocaleManager.activeStrings.Home.NodeInfo.Node + @androidx.compose.runtime.Composable + public fun Node(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.NodeInfo.Node else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.NodeInfo.Node, *args) + public val Delay: String + get() = YumeLocaleManager.activeStrings.Home.NodeInfo.Delay + @androidx.compose.runtime.Composable + public fun Delay(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.NodeInfo.Delay else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.NodeInfo.Delay, *args) + public val Unknown: String + get() = YumeLocaleManager.activeStrings.Home.NodeInfo.Unknown + @androidx.compose.runtime.Composable + public fun Unknown(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.NodeInfo.Unknown else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.NodeInfo.Unknown, *args) + public val DelayValue: String + get() = YumeLocaleManager.activeStrings.Home.NodeInfo.DelayValue + @androidx.compose.runtime.Composable + public fun DelayValue(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.NodeInfo.DelayValue else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.NodeInfo.DelayValue, *args) + } + public object Traffic { + public val UpShort: String + get() = YumeLocaleManager.activeStrings.Home.Traffic.UpShort + @androidx.compose.runtime.Composable + public fun UpShort(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Traffic.UpShort else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Traffic.UpShort, *args) + public val DownShort: String + get() = YumeLocaleManager.activeStrings.Home.Traffic.DownShort + @androidx.compose.runtime.Composable + public fun DownShort(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Traffic.DownShort else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Traffic.DownShort, *args) + public val Upload: String + get() = YumeLocaleManager.activeStrings.Home.Traffic.Upload + @androidx.compose.runtime.Composable + public fun Upload(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Traffic.Upload else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Traffic.Upload, *args) + public val Download: String + get() = YumeLocaleManager.activeStrings.Home.Traffic.Download + @androidx.compose.runtime.Composable + public fun Download(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Traffic.Download else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Traffic.Download, *args) + public val NoProfile: String + get() = YumeLocaleManager.activeStrings.Home.Traffic.NoProfile + @androidx.compose.runtime.Composable + public fun NoProfile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Traffic.NoProfile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Traffic.NoProfile, *args) + } + public object IpInfo { + public val ExitIp: String + get() = YumeLocaleManager.activeStrings.Home.IpInfo.ExitIp + @androidx.compose.runtime.Composable + public fun ExitIp(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.IpInfo.ExitIp else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.IpInfo.ExitIp, *args) + } + public object Status { + public val Connecting: String + get() = YumeLocaleManager.activeStrings.Home.Status.Connecting + @androidx.compose.runtime.Composable + public fun Connecting(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Status.Connecting else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Status.Connecting, *args) + public val Disconnecting: String + get() = YumeLocaleManager.activeStrings.Home.Status.Disconnecting + @androidx.compose.runtime.Composable + public fun Disconnecting(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Status.Disconnecting else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Status.Disconnecting, *args) + public val Running: String + get() = YumeLocaleManager.activeStrings.Home.Status.Running + @androidx.compose.runtime.Composable + public fun Running(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Status.Running else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Status.Running, *args) + public val Lost: String + get() = YumeLocaleManager.activeStrings.Home.Status.Lost + @androidx.compose.runtime.Composable + public fun Lost(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Status.Lost else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Status.Lost, *args) + public val TapToStart: String + get() = YumeLocaleManager.activeStrings.Home.Status.TapToStart + @androidx.compose.runtime.Composable + public fun TapToStart(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Status.TapToStart else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Status.TapToStart, *args) + } + public object Settings { + public val Title: String + get() = YumeLocaleManager.activeStrings.Home.Settings.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Settings.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Settings.Title, *args) + public val Quote: String + get() = YumeLocaleManager.activeStrings.Home.Settings.Quote + @androidx.compose.runtime.Composable + public fun Quote(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Settings.Quote else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Settings.Quote, *args) + public val ClassicHome: String + get() = YumeLocaleManager.activeStrings.Home.Settings.ClassicHome + @androidx.compose.runtime.Composable + public fun ClassicHome(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Settings.ClassicHome else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Settings.ClassicHome, *args) + public val ExpandSidebar: String + get() = YumeLocaleManager.activeStrings.Home.Settings.ExpandSidebar + @androidx.compose.runtime.Composable + public fun ExpandSidebar(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Settings.ExpandSidebar else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Settings.ExpandSidebar, *args) + public val ChangeWallpaper: String + get() = YumeLocaleManager.activeStrings.Home.Settings.ChangeWallpaper + @androidx.compose.runtime.Composable + public fun ChangeWallpaper(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.Settings.ChangeWallpaper else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.Settings.ChangeWallpaper, *args) + } + public object ProxyMode { + public val Vpn: String + get() = YumeLocaleManager.activeStrings.Home.ProxyMode.Vpn + @androidx.compose.runtime.Composable + public fun Vpn(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.ProxyMode.Vpn else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.ProxyMode.Vpn, *args) + public val Tun: String + get() = YumeLocaleManager.activeStrings.Home.ProxyMode.Tun + @androidx.compose.runtime.Composable + public fun Tun(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.ProxyMode.Tun else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.ProxyMode.Tun, *args) + public val Ebpf: String + get() = YumeLocaleManager.activeStrings.Home.ProxyMode.Ebpf + @androidx.compose.runtime.Composable + public fun Ebpf(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.ProxyMode.Ebpf else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.ProxyMode.Ebpf, *args) + } + public object PreviewGuide { + public val Title: String + get() = YumeLocaleManager.activeStrings.Home.PreviewGuide.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.PreviewGuide.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.PreviewGuide.Title, *args) + public val Description: String + get() = YumeLocaleManager.activeStrings.Home.PreviewGuide.Description + @androidx.compose.runtime.Composable + public fun Description(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.PreviewGuide.Description else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.PreviewGuide.Description, *args) + public val Next: String + get() = YumeLocaleManager.activeStrings.Home.PreviewGuide.Next + @androidx.compose.runtime.Composable + public fun Next(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.PreviewGuide.Next else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.PreviewGuide.Next, *args) + public val Start: String + get() = YumeLocaleManager.activeStrings.Home.PreviewGuide.Start + @androidx.compose.runtime.Composable + public fun Start(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.PreviewGuide.Start else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.PreviewGuide.Start, *args) + public val WallpaperTitle: String + get() = YumeLocaleManager.activeStrings.Home.PreviewGuide.WallpaperTitle + @androidx.compose.runtime.Composable + public fun WallpaperTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.PreviewGuide.WallpaperTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.PreviewGuide.WallpaperTitle, *args) + public val WallpaperDescription: String + get() = YumeLocaleManager.activeStrings.Home.PreviewGuide.WallpaperDescription + @androidx.compose.runtime.Composable + public fun WallpaperDescription(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.PreviewGuide.WallpaperDescription else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.PreviewGuide.WallpaperDescription, *args) + public val SwipeTitle: String + get() = YumeLocaleManager.activeStrings.Home.PreviewGuide.SwipeTitle + @androidx.compose.runtime.Composable + public fun SwipeTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.PreviewGuide.SwipeTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.PreviewGuide.SwipeTitle, *args) + public val SwipeDescription: String + get() = YumeLocaleManager.activeStrings.Home.PreviewGuide.SwipeDescription + @androidx.compose.runtime.Composable + public fun SwipeDescription(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.PreviewGuide.SwipeDescription else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.PreviewGuide.SwipeDescription, *args) + public val AddTitle: String + get() = YumeLocaleManager.activeStrings.Home.PreviewGuide.AddTitle + @androidx.compose.runtime.Composable + public fun AddTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.PreviewGuide.AddTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.PreviewGuide.AddTitle, *args) + public val AddDescription: String + get() = YumeLocaleManager.activeStrings.Home.PreviewGuide.AddDescription + @androidx.compose.runtime.Composable + public fun AddDescription(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Home.PreviewGuide.AddDescription else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Home.PreviewGuide.AddDescription, *args) + } + } + public object Log { + public val Title: String + get() = YumeLocaleManager.activeStrings.Log.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Title, *args) + public val Summary: String + get() = YumeLocaleManager.activeStrings.Log.Summary + @androidx.compose.runtime.Composable + public fun Summary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Summary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Summary, *args) + public val SearchHint: String + get() = YumeLocaleManager.activeStrings.Log.SearchHint + @androidx.compose.runtime.Composable + public fun SearchHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.SearchHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.SearchHint, *args) + public object Level { + public val All: String + get() = YumeLocaleManager.activeStrings.Log.Level.All + @androidx.compose.runtime.Composable + public fun All(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Level.All else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Level.All, *args) + public val Debug: String + get() = YumeLocaleManager.activeStrings.Log.Level.Debug + @androidx.compose.runtime.Composable + public fun Debug(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Level.Debug else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Level.Debug, *args) + public val Info: String + get() = YumeLocaleManager.activeStrings.Log.Level.Info + @androidx.compose.runtime.Composable + public fun Info(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Level.Info else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Level.Info, *args) + public val Warning: String + get() = YumeLocaleManager.activeStrings.Log.Level.Warning + @androidx.compose.runtime.Composable + public fun Warning(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Level.Warning else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Level.Warning, *args) + public val Error: String + get() = YumeLocaleManager.activeStrings.Log.Level.Error + @androidx.compose.runtime.Composable + public fun Error(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Level.Error else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Level.Error, *args) + public val Filter: String + get() = YumeLocaleManager.activeStrings.Log.Level.Filter + @androidx.compose.runtime.Composable + public fun Filter(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Level.Filter else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Level.Filter, *args) + } + public object Action { + public val Export: String + get() = YumeLocaleManager.activeStrings.Log.Action.Export + @androidx.compose.runtime.Composable + public fun Export(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Action.Export else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Action.Export, *args) + public val Copied: String + get() = YumeLocaleManager.activeStrings.Log.Action.Copied + @androidx.compose.runtime.Composable + public fun Copied(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Action.Copied else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Action.Copied, *args) + } + public object Empty { + public val Connecting: String + get() = YumeLocaleManager.activeStrings.Log.Empty.Connecting + @androidx.compose.runtime.Composable + public fun Connecting(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Empty.Connecting else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Empty.Connecting, *args) + public val ConnectingHint: String + get() = YumeLocaleManager.activeStrings.Log.Empty.ConnectingHint + @androidx.compose.runtime.Composable + public fun ConnectingHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Empty.ConnectingHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Empty.ConnectingHint, *args) + public val Retrying: String + get() = YumeLocaleManager.activeStrings.Log.Empty.Retrying + @androidx.compose.runtime.Composable + public fun Retrying(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Empty.Retrying else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Empty.Retrying, *args) + public val RetryingHint: String + get() = YumeLocaleManager.activeStrings.Log.Empty.RetryingHint + @androidx.compose.runtime.Composable + public fun RetryingHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Empty.RetryingHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Empty.RetryingHint, *args) + public val NoLogs: String + get() = YumeLocaleManager.activeStrings.Log.Empty.NoLogs + @androidx.compose.runtime.Composable + public fun NoLogs(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Empty.NoLogs else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Empty.NoLogs, *args) + public val LiveHint: String + get() = YumeLocaleManager.activeStrings.Log.Empty.LiveHint + @androidx.compose.runtime.Composable + public fun LiveHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Empty.LiveHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Empty.LiveHint, *args) + public val NoMatch: String + get() = YumeLocaleManager.activeStrings.Log.Empty.NoMatch + @androidx.compose.runtime.Composable + public fun NoMatch(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Empty.NoMatch else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Empty.NoMatch, *args) + public val NoResults: String + get() = YumeLocaleManager.activeStrings.Log.Empty.NoResults + @androidx.compose.runtime.Composable + public fun NoResults(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Empty.NoResults else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Empty.NoResults, *args) + } + public object Detail { + public val WaitingLog: String + get() = YumeLocaleManager.activeStrings.Log.Detail.WaitingLog + @androidx.compose.runtime.Composable + public fun WaitingLog(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Detail.WaitingLog else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Detail.WaitingLog, *args) + public val WillShowWhenGenerated: String + get() = YumeLocaleManager.activeStrings.Log.Detail.WillShowWhenGenerated + @androidx.compose.runtime.Composable + public fun WillShowWhenGenerated(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Log.Detail.WillShowWhenGenerated else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Log.Detail.WillShowWhenGenerated, *args) + } + } + public object MetaFeature { + public val Title: String + get() = YumeLocaleManager.activeStrings.MetaFeature.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.Title, *args) + public object Section { + public val ConnectionAndTraffic: String + get() = YumeLocaleManager.activeStrings.MetaFeature.Section.ConnectionAndTraffic + @androidx.compose.runtime.Composable + public fun ConnectionAndTraffic(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.Section.ConnectionAndTraffic else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.Section.ConnectionAndTraffic, *args) + public val Routing: String + get() = YumeLocaleManager.activeStrings.MetaFeature.Section.Routing + @androidx.compose.runtime.Composable + public fun Routing(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.Section.Routing else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.Section.Routing, *args) + } + public object GeoX { + public val OnlineUpdateTitle: String + get() = YumeLocaleManager.activeStrings.MetaFeature.GeoX.OnlineUpdateTitle + @androidx.compose.runtime.Composable + public fun OnlineUpdateTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.GeoX.OnlineUpdateTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.GeoX.OnlineUpdateTitle, *args) + public val OnlineUpdateSummary: String + get() = YumeLocaleManager.activeStrings.MetaFeature.GeoX.OnlineUpdateSummary + @androidx.compose.runtime.Composable + public fun OnlineUpdateSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.GeoX.OnlineUpdateSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.GeoX.OnlineUpdateSummary, *args) + } + public object CustomRouting { + public val Title: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Title, *args) + public val Summary: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Summary + @androidx.compose.runtime.Composable + public fun Summary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Summary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Summary, *args) + public val EditYaml: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.EditYaml + @androidx.compose.runtime.Composable + public fun EditYaml(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.EditYaml else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.EditYaml, *args) + public val ManualYamlPresetDiscarded: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.ManualYamlPresetDiscarded + @androidx.compose.runtime.Composable + public fun ManualYamlPresetDiscarded(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.ManualYamlPresetDiscarded else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.ManualYamlPresetDiscarded, *args) + public val GroupTypeTitle: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.GroupTypeTitle + @androidx.compose.runtime.Composable + public fun GroupTypeTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.GroupTypeTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.GroupTypeTitle, *args) + public val GroupTypeUrlTest: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.GroupTypeUrlTest + @androidx.compose.runtime.Composable + public fun GroupTypeUrlTest(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.GroupTypeUrlTest else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.GroupTypeUrlTest, *args) + public val GroupTypeFallback: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.GroupTypeFallback + @androidx.compose.runtime.Composable + public fun GroupTypeFallback(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.GroupTypeFallback else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.GroupTypeFallback, *args) + public val UrlTestRegionGroupTitle: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.UrlTestRegionGroupTitle + @androidx.compose.runtime.Composable + public fun UrlTestRegionGroupTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.UrlTestRegionGroupTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.UrlTestRegionGroupTitle, *args) + public val FallbackRegionGroupTitle: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.FallbackRegionGroupTitle + @androidx.compose.runtime.Composable + public fun FallbackRegionGroupTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.FallbackRegionGroupTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.FallbackRegionGroupTitle, *args) + public object Region { + public val HongKong: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.HongKong + @androidx.compose.runtime.Composable + public fun HongKong(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.HongKong else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.HongKong, *args) + public val Taiwan: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.Taiwan + @androidx.compose.runtime.Composable + public fun Taiwan(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.Taiwan else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.Taiwan, *args) + public val Japan: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.Japan + @androidx.compose.runtime.Composable + public fun Japan(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.Japan else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.Japan, *args) + public val Singapore: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.Singapore + @androidx.compose.runtime.Composable + public fun Singapore(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.Singapore else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.Singapore, *args) + public val UnitedStates: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.UnitedStates + @androidx.compose.runtime.Composable + public fun UnitedStates(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.UnitedStates else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.UnitedStates, *args) + public val Other: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.Other + @androidx.compose.runtime.Composable + public fun Other(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.Other else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Region.Other, *args) + } + public object Item { + public val Proxy: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.Proxy + @androidx.compose.runtime.Composable + public fun Proxy(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.Proxy else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.Proxy, *args) + public val Ads: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.Ads + @androidx.compose.runtime.Composable + public fun Ads(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.Ads else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.Ads, *args) + public val China: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.China + @androidx.compose.runtime.Composable + public fun China(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.China else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.China, *args) + public val Global: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.Global + @androidx.compose.runtime.Composable + public fun Global(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.Global else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.Global, *args) + public val Match: String + get() = YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.Match + @androidx.compose.runtime.Composable + public fun Match(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.Match else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.CustomRouting.Item.Match, *args) + } + } + public object RuntimeRules { + public val Title: String + get() = YumeLocaleManager.activeStrings.MetaFeature.RuntimeRules.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.RuntimeRules.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.RuntimeRules.Title, *args) + public val Summary: String + get() = YumeLocaleManager.activeStrings.MetaFeature.RuntimeRules.Summary + @androidx.compose.runtime.Composable + public fun Summary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.RuntimeRules.Summary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.RuntimeRules.Summary, *args) + } + public object Download { + public val DialogTitle: String + get() = YumeLocaleManager.activeStrings.MetaFeature.Download.DialogTitle + @androidx.compose.runtime.Composable + public fun DialogTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.Download.DialogTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.Download.DialogTitle, *args) + public val DownloadComplete: String + get() = YumeLocaleManager.activeStrings.MetaFeature.Download.DownloadComplete + @androidx.compose.runtime.Composable + public fun DownloadComplete(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.Download.DownloadComplete else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.Download.DownloadComplete, *args) + } + public object AgeKey { + public val Section: String + get() = YumeLocaleManager.activeStrings.MetaFeature.AgeKey.Section + @androidx.compose.runtime.Composable + public fun Section(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.AgeKey.Section else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.AgeKey.Section, *args) + public val X25519Title: String + get() = YumeLocaleManager.activeStrings.MetaFeature.AgeKey.X25519Title + @androidx.compose.runtime.Composable + public fun X25519Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.AgeKey.X25519Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.AgeKey.X25519Title, *args) + public val HybridTitle: String + get() = YumeLocaleManager.activeStrings.MetaFeature.AgeKey.HybridTitle + @androidx.compose.runtime.Composable + public fun HybridTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.AgeKey.HybridTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.AgeKey.HybridTitle, *args) + public val SecretKey: String + get() = YumeLocaleManager.activeStrings.MetaFeature.AgeKey.SecretKey + @androidx.compose.runtime.Composable + public fun SecretKey(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.AgeKey.SecretKey else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.AgeKey.SecretKey, *args) + public val PublicKey: String + get() = YumeLocaleManager.activeStrings.MetaFeature.AgeKey.PublicKey + @androidx.compose.runtime.Composable + public fun PublicKey(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.AgeKey.PublicKey else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.AgeKey.PublicKey, *args) + public val Generate: String + get() = YumeLocaleManager.activeStrings.MetaFeature.AgeKey.Generate + @androidx.compose.runtime.Composable + public fun Generate(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.AgeKey.Generate else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.AgeKey.Generate, *args) + public val DerivePublicKey: String + get() = YumeLocaleManager.activeStrings.MetaFeature.AgeKey.DerivePublicKey + @androidx.compose.runtime.Composable + public fun DerivePublicKey(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.MetaFeature.AgeKey.DerivePublicKey else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.MetaFeature.AgeKey.DerivePublicKey, *args) + } + } + public object NetworkSettings { + public val Title: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Title, *args) + public object Section { + public val VpnOptions: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Section.VpnOptions + @androidx.compose.runtime.Composable + public fun VpnOptions(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Section.VpnOptions else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Section.VpnOptions, *args) + public val Advanced: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Section.Advanced + @androidx.compose.runtime.Composable + public fun Advanced(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Section.Advanced else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Section.Advanced, *args) + public val ProxyOptions: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Section.ProxyOptions + @androidx.compose.runtime.Composable + public fun ProxyOptions(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Section.ProxyOptions else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Section.ProxyOptions, *args) + public val Kernel: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Section.Kernel + @androidx.compose.runtime.Composable + public fun Kernel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Section.Kernel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Section.Kernel, *args) + } + public object Advanced { + public val DisableOverrideTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Advanced.DisableOverrideTitle + @androidx.compose.runtime.Composable + public fun DisableOverrideTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Advanced.DisableOverrideTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Advanced.DisableOverrideTitle, *args) + } + public object RunMode { + public val SectionTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.RunMode.SectionTitle + @androidx.compose.runtime.Composable + public fun SectionTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.RunMode.SectionTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.RunMode.SectionTitle, *args) + public val VpnServiceTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.RunMode.VpnServiceTitle + @androidx.compose.runtime.Composable + public fun VpnServiceTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.RunMode.VpnServiceTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.RunMode.VpnServiceTitle, *args) + public val VpnServiceSummary: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.RunMode.VpnServiceSummary + @androidx.compose.runtime.Composable + public fun VpnServiceSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.RunMode.VpnServiceSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.RunMode.VpnServiceSummary, *args) + public val TunTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.RunMode.TunTitle + @androidx.compose.runtime.Composable + public fun TunTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.RunMode.TunTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.RunMode.TunTitle, *args) + public val TunSummary: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.RunMode.TunSummary + @androidx.compose.runtime.Composable + public fun TunSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.RunMode.TunSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.RunMode.TunSummary, *args) + public val EbpfTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.RunMode.EbpfTitle + @androidx.compose.runtime.Composable + public fun EbpfTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.RunMode.EbpfTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.RunMode.EbpfTitle, *args) + public val EbpfSummary: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.RunMode.EbpfSummary + @androidx.compose.runtime.Composable + public fun EbpfSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.RunMode.EbpfSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.RunMode.EbpfSummary, *args) + } + public object VpnOptions { + public val BypassPrivateTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.BypassPrivateTitle + @androidx.compose.runtime.Composable + public fun BypassPrivateTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.BypassPrivateTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.BypassPrivateTitle, *args) + public val DnsHijackTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.DnsHijackTitle + @androidx.compose.runtime.Composable + public fun DnsHijackTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.DnsHijackTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.DnsHijackTitle, *args) + public val AllowBypassTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.AllowBypassTitle + @androidx.compose.runtime.Composable + public fun AllowBypassTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.AllowBypassTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.AllowBypassTitle, *args) + public val EnableIpv6Title: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.EnableIpv6Title + @androidx.compose.runtime.Composable + public fun EnableIpv6Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.EnableIpv6Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.EnableIpv6Title, *args) + public val SystemProxyTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.SystemProxyTitle + @androidx.compose.runtime.Composable + public fun SystemProxyTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.SystemProxyTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.VpnOptions.SystemProxyTitle, *args) + } + public object EbpfOptions { + public val BypassCnTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.EbpfOptions.BypassCnTitle + @androidx.compose.runtime.Composable + public fun BypassCnTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.EbpfOptions.BypassCnTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.EbpfOptions.BypassCnTitle, *args) + } + public object TunOptions { + public val Title: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.Title, *args) + public val IfNameTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.IfNameTitle + @androidx.compose.runtime.Composable + public fun IfNameTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.IfNameTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.IfNameTitle, *args) + public val MtuTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.MtuTitle + @androidx.compose.runtime.Composable + public fun MtuTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.MtuTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.MtuTitle, *args) + public val StackTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackTitle + @androidx.compose.runtime.Composable + public fun StackTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackTitle, *args) + public val StackSystem: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackSystem + @androidx.compose.runtime.Composable + public fun StackSystem(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackSystem else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackSystem, *args) + public val StackGVisor: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackGVisor + @androidx.compose.runtime.Composable + public fun StackGVisor(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackGVisor else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackGVisor, *args) + public val StackMixed: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackMixed + @androidx.compose.runtime.Composable + public fun StackMixed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackMixed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackMixed, *args) + public val StackMips: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackMips + @androidx.compose.runtime.Composable + public fun StackMips(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackMips else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StackMips, *args) + public val AutoRouteTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.AutoRouteTitle + @androidx.compose.runtime.Composable + public fun AutoRouteTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.AutoRouteTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.AutoRouteTitle, *args) + public val StrictRouteTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StrictRouteTitle + @androidx.compose.runtime.Composable + public fun StrictRouteTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StrictRouteTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.StrictRouteTitle, *args) + public val AutoRedirectTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.AutoRedirectTitle + @androidx.compose.runtime.Composable + public fun AutoRedirectTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.AutoRedirectTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.AutoRedirectTitle, *args) + public val DnsModeTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.DnsModeTitle + @androidx.compose.runtime.Composable + public fun DnsModeTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.DnsModeTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.DnsModeTitle, *args) + public val DnsRedirHost: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.DnsRedirHost + @androidx.compose.runtime.Composable + public fun DnsRedirHost(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.DnsRedirHost else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.DnsRedirHost, *args) + public val DnsFakeIp: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.DnsFakeIp + @androidx.compose.runtime.Composable + public fun DnsFakeIp(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.DnsFakeIp else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.DnsFakeIp, *args) + public val Ipv6Title: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.Ipv6Title + @androidx.compose.runtime.Composable + public fun Ipv6Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.Ipv6Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.TunOptions.Ipv6Title, *args) + } + public object Kernel { + public val ActiveTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.ActiveTitle + @androidx.compose.runtime.Composable + public fun ActiveTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.ActiveTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.ActiveTitle, *args) + public val BundledAlpha: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.BundledAlpha + @androidx.compose.runtime.Composable + public fun BundledAlpha(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.BundledAlpha else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.BundledAlpha, *args) + public val RefreshTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.RefreshTitle + @androidx.compose.runtime.Composable + public fun RefreshTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.RefreshTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.RefreshTitle, *args) + public val DownloadTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.DownloadTitle + @androidx.compose.runtime.Composable + public fun DownloadTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.DownloadTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.DownloadTitle, *args) + public val FetchButton: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.FetchButton + @androidx.compose.runtime.Composable + public fun FetchButton(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.FetchButton else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.FetchButton, *args) + public val DownloadButton: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.DownloadButton + @androidx.compose.runtime.Composable + public fun DownloadButton(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.DownloadButton else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.DownloadButton, *args) + public val CustomTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomTitle + @androidx.compose.runtime.Composable + public fun CustomTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomTitle, *args) + public val CustomMethodTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomMethodTitle + @androidx.compose.runtime.Composable + public fun CustomMethodTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomMethodTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomMethodTitle, *args) + public val CustomUrlMethod: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomUrlMethod + @androidx.compose.runtime.Composable + public fun CustomUrlMethod(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomUrlMethod else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomUrlMethod, *args) + public val CustomFileMethod: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomFileMethod + @androidx.compose.runtime.Composable + public fun CustomFileMethod(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomFileMethod else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomFileMethod, *args) + public val CustomUrlLabel: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomUrlLabel + @androidx.compose.runtime.Composable + public fun CustomUrlLabel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomUrlLabel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomUrlLabel, *args) + public val CustomChooseFile: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomChooseFile + @androidx.compose.runtime.Composable + public fun CustomChooseFile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomChooseFile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomChooseFile, *args) + public val CustomInstallButton: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomInstallButton + @androidx.compose.runtime.Composable + public fun CustomInstallButton(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomInstallButton else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Kernel.CustomInstallButton, *args) + } + public object ProxyOptions { + public val AccessControlModeTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.AccessControlModeTitle + @androidx.compose.runtime.Composable + public fun AccessControlModeTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.AccessControlModeTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.AccessControlModeTitle, *args) + public val AllowAll: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.AllowAll + @androidx.compose.runtime.Composable + public fun AllowAll(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.AllowAll else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.AllowAll, *args) + public val AllowSelected: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.AllowSelected + @androidx.compose.runtime.Composable + public fun AllowSelected(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.AllowSelected else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.AllowSelected, *args) + public val RejectSelected: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.RejectSelected + @androidx.compose.runtime.Composable + public fun RejectSelected(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.RejectSelected else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.RejectSelected, *args) + public val ManageAccessControlTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.ManageAccessControlTitle + @androidx.compose.runtime.Composable + public fun ManageAccessControlTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.ManageAccessControlTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.ProxyOptions.ManageAccessControlTitle, *args) + } + public object WifiAutomation { + public val Title: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Title, *args) + public val EnabledTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.EnabledTitle + @androidx.compose.runtime.Composable + public fun EnabledTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.EnabledTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.EnabledTitle, *args) + public val WifiNameHeading: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.WifiNameHeading + @androidx.compose.runtime.Composable + public fun WifiNameHeading(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.WifiNameHeading else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.WifiNameHeading, *args) + public val NetworkChangeSection: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.NetworkChangeSection + @androidx.compose.runtime.Composable + public fun NetworkChangeSection(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.NetworkChangeSection else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.NetworkChangeSection, *args) + public val OtherWifiTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.OtherWifiTitle + @androidx.compose.runtime.Composable + public fun OtherWifiTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.OtherWifiTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.OtherWifiTitle, *args) + public val NoWifiTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.NoWifiTitle + @androidx.compose.runtime.Composable + public fun NoWifiTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.NoWifiTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.NoWifiTitle, *args) + public val AddCurrent: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.AddCurrent + @androidx.compose.runtime.Composable + public fun AddCurrent(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.AddCurrent else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.AddCurrent, *args) + public val AddManual: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.AddManual + @androidx.compose.runtime.Composable + public fun AddManual(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.AddManual else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.AddManual, *args) + public val Scan: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Scan + @androidx.compose.runtime.Composable + public fun Scan(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Scan else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Scan, *args) + public val Scanning: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Scanning + @androidx.compose.runtime.Composable + public fun Scanning(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Scanning else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Scanning, *args) + public val ScanEmpty: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ScanEmpty + @androidx.compose.runtime.Composable + public fun ScanEmpty(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ScanEmpty else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ScanEmpty, *args) + public val ScanUnavailable: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ScanUnavailable + @androidx.compose.runtime.Composable + public fun ScanUnavailable(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ScanUnavailable else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ScanUnavailable, *args) + public val ManualDialogTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ManualDialogTitle + @androidx.compose.runtime.Composable + public fun ManualDialogTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ManualDialogTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ManualDialogTitle, *args) + public val EditDialogTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.EditDialogTitle + @androidx.compose.runtime.Composable + public fun EditDialogTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.EditDialogTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.EditDialogTitle, *args) + public val ManualDialogLabel: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ManualDialogLabel + @androidx.compose.runtime.Composable + public fun ManualDialogLabel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ManualDialogLabel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ManualDialogLabel, *args) + public val StartAction: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.StartAction + @androidx.compose.runtime.Composable + public fun StartAction(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.StartAction else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.StartAction, *args) + public val StopAction: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.StopAction + @androidx.compose.runtime.Composable + public fun StopAction(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.StopAction else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.StopAction, *args) + public val KeepAction: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.KeepAction + @androidx.compose.runtime.Composable + public fun KeepAction(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.KeepAction else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.KeepAction, *args) + public val ActionTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ActionTitle + @androidx.compose.runtime.Composable + public fun ActionTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ActionTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ActionTitle, *args) + public val ProfileAction: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ProfileAction + @androidx.compose.runtime.Composable + public fun ProfileAction(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ProfileAction else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ProfileAction, *args) + public val NoSwitchAction: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.NoSwitchAction + @androidx.compose.runtime.Composable + public fun NoSwitchAction(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.NoSwitchAction else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.NoSwitchAction, *args) + public val EmptyRules: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.EmptyRules + @androidx.compose.runtime.Composable + public fun EmptyRules(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.EmptyRules else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.EmptyRules, *args) + public val VpnOnly: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.VpnOnly + @androidx.compose.runtime.Composable + public fun VpnOnly(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.VpnOnly else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.VpnOnly, *args) + public val PermissionTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.PermissionTitle + @androidx.compose.runtime.Composable + public fun PermissionTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.PermissionTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.PermissionTitle, *args) + public val PermissionMessage: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.PermissionMessage + @androidx.compose.runtime.Composable + public fun PermissionMessage(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.PermissionMessage else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.PermissionMessage, *args) + public val ApproximateTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ApproximateTitle + @androidx.compose.runtime.Composable + public fun ApproximateTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ApproximateTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ApproximateTitle, *args) + public val ApproximateMessage: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ApproximateMessage + @androidx.compose.runtime.Composable + public fun ApproximateMessage(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ApproximateMessage else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.ApproximateMessage, *args) + public val DeniedTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.DeniedTitle + @androidx.compose.runtime.Composable + public fun DeniedTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.DeniedTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.DeniedTitle, *args) + public val DeniedMessage: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.DeniedMessage + @androidx.compose.runtime.Composable + public fun DeniedMessage(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.DeniedMessage else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.DeniedMessage, *args) + public val SettingsTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.SettingsTitle + @androidx.compose.runtime.Composable + public fun SettingsTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.SettingsTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.SettingsTitle, *args) + public val SettingsMessage: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.SettingsMessage + @androidx.compose.runtime.Composable + public fun SettingsMessage(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.SettingsMessage else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.SettingsMessage, *args) + public val LocationTitle: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.LocationTitle + @androidx.compose.runtime.Composable + public fun LocationTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.LocationTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.LocationTitle, *args) + public val LocationMessage: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.LocationMessage + @androidx.compose.runtime.Composable + public fun LocationMessage(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.LocationMessage else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.LocationMessage, *args) + public val Grant: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Grant + @androidx.compose.runtime.Composable + public fun Grant(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Grant else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Grant, *args) + public val OpenSettings: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.OpenSettings + @androidx.compose.runtime.Composable + public fun OpenSettings(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.OpenSettings else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.OpenSettings, *args) + public val TurnOnLocation: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.TurnOnLocation + @androidx.compose.runtime.Composable + public fun TurnOnLocation(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.TurnOnLocation else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.TurnOnLocation, *args) + public val Added: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Added + @androidx.compose.runtime.Composable + public fun Added(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Added else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Added, *args) + public val Duplicate: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Duplicate + @androidx.compose.runtime.Composable + public fun Duplicate(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Duplicate else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Duplicate, *args) + public val NoWifi: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.NoWifi + @androidx.compose.runtime.Composable + public fun NoWifi(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.NoWifi else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.NoWifi, *args) + public val Unavailable: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Unavailable + @androidx.compose.runtime.Composable + public fun Unavailable(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Unavailable else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.WifiAutomation.Unavailable, *args) + } + public object Error { + public val VpnDenied: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Error.VpnDenied + @androidx.compose.runtime.Composable + public fun VpnDenied(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Error.VpnDenied else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Error.VpnDenied, *args) + public val RootRequired: String + get() = YumeLocaleManager.activeStrings.NetworkSettings.Error.RootRequired + @androidx.compose.runtime.Composable + public fun RootRequired(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.NetworkSettings.Error.RootRequired else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.NetworkSettings.Error.RootRequired, *args) + } + } + public object Onboarding { + public object Navigation { + public val Back: String + get() = YumeLocaleManager.activeStrings.Onboarding.Navigation.Back + @androidx.compose.runtime.Composable + public fun Back(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Navigation.Back else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Navigation.Back, *args) + public val Next: String + get() = YumeLocaleManager.activeStrings.Onboarding.Navigation.Next + @androidx.compose.runtime.Composable + public fun Next(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Navigation.Next else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Navigation.Next, *args) + public val Enter: String + get() = YumeLocaleManager.activeStrings.Onboarding.Navigation.Enter + @androidx.compose.runtime.Composable + public fun Enter(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Navigation.Enter else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Navigation.Enter, *args) + public val Start: String + get() = YumeLocaleManager.activeStrings.Onboarding.Navigation.Start + @androidx.compose.runtime.Composable + public fun Start(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Navigation.Start else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Navigation.Start, *args) + } + public object Welcome { + public val Tagline: String + get() = YumeLocaleManager.activeStrings.Onboarding.Welcome.Tagline + @androidx.compose.runtime.Composable + public fun Tagline(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Welcome.Tagline else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Welcome.Tagline, *args) + } + public object Permission { + public val Title: String + get() = YumeLocaleManager.activeStrings.Onboarding.Permission.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Permission.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Permission.Title, *args) + public val Subtitle: String + get() = YumeLocaleManager.activeStrings.Onboarding.Permission.Subtitle + @androidx.compose.runtime.Composable + public fun Subtitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Permission.Subtitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Permission.Subtitle, *args) + public object Common { + public val Granted: String + get() = YumeLocaleManager.activeStrings.Onboarding.Permission.Common.Granted + @androidx.compose.runtime.Composable + public fun Granted(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Permission.Common.Granted else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Permission.Common.Granted, *args) + } + public object Notification { + public val Title: String + get() = YumeLocaleManager.activeStrings.Onboarding.Permission.Notification.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Permission.Notification.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Permission.Notification.Title, *args) + public val SummaryNeed: String + get() = YumeLocaleManager.activeStrings.Onboarding.Permission.Notification.SummaryNeed + @androidx.compose.runtime.Composable + public fun SummaryNeed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Permission.Notification.SummaryNeed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Permission.Notification.SummaryNeed, *args) + public val SummaryNotRequired: String + get() = YumeLocaleManager.activeStrings.Onboarding.Permission.Notification.SummaryNotRequired + @androidx.compose.runtime.Composable + public fun SummaryNotRequired(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Permission.Notification.SummaryNotRequired else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Permission.Notification.SummaryNotRequired, *args) + } + public object AppList { + public val Title: String + get() = YumeLocaleManager.activeStrings.Onboarding.Permission.AppList.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Permission.AppList.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Permission.AppList.Title, *args) + public val SummaryNeed: String + get() = YumeLocaleManager.activeStrings.Onboarding.Permission.AppList.SummaryNeed + @androidx.compose.runtime.Composable + public fun SummaryNeed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Permission.AppList.SummaryNeed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Permission.AppList.SummaryNeed, *args) + } + } + public object Privacy { + public val Title: String + get() = YumeLocaleManager.activeStrings.Onboarding.Privacy.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Privacy.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Privacy.Title, *args) + public val Subtitle: String + get() = YumeLocaleManager.activeStrings.Onboarding.Privacy.Subtitle + @androidx.compose.runtime.Composable + public fun Subtitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Privacy.Subtitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Privacy.Subtitle, *args) + public val RichTextLead: String + get() = YumeLocaleManager.activeStrings.Onboarding.Privacy.RichTextLead + @androidx.compose.runtime.Composable + public fun RichTextLead(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Privacy.RichTextLead else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Privacy.RichTextLead, *args) + public val RichTextPrefix: String + get() = YumeLocaleManager.activeStrings.Onboarding.Privacy.RichTextPrefix + @androidx.compose.runtime.Composable + public fun RichTextPrefix(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Privacy.RichTextPrefix else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Privacy.RichTextPrefix, *args) + public val RichTextConnector: String + get() = YumeLocaleManager.activeStrings.Onboarding.Privacy.RichTextConnector + @androidx.compose.runtime.Composable + public fun RichTextConnector(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Privacy.RichTextConnector else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Privacy.RichTextConnector, *args) + public val RichTextSuffix: String + get() = YumeLocaleManager.activeStrings.Onboarding.Privacy.RichTextSuffix + @androidx.compose.runtime.Composable + public fun RichTextSuffix(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Privacy.RichTextSuffix else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Privacy.RichTextSuffix, *args) + public val TermsLink: String + get() = YumeLocaleManager.activeStrings.Onboarding.Privacy.TermsLink + @androidx.compose.runtime.Composable + public fun TermsLink(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Privacy.TermsLink else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Privacy.TermsLink, *args) + public val PolicyLink: String + get() = YumeLocaleManager.activeStrings.Onboarding.Privacy.PolicyLink + @androidx.compose.runtime.Composable + public fun PolicyLink(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Privacy.PolicyLink else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Privacy.PolicyLink, *args) + public object Accept { + public val Title: String + get() = YumeLocaleManager.activeStrings.Onboarding.Privacy.Accept.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Privacy.Accept.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Privacy.Accept.Title, *args) + } + } + public object Personalize { + public val Title: String + get() = YumeLocaleManager.activeStrings.Onboarding.Personalize.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Personalize.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Personalize.Title, *args) + public val Subtitle: String + get() = YumeLocaleManager.activeStrings.Onboarding.Personalize.Subtitle + @androidx.compose.runtime.Composable + public fun Subtitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Personalize.Subtitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Personalize.Subtitle, *args) + } + public object Finish { + public val Title: String + get() = YumeLocaleManager.activeStrings.Onboarding.Finish.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Finish.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Finish.Title, *args) + public val Subtitle: String + get() = YumeLocaleManager.activeStrings.Onboarding.Finish.Subtitle + @androidx.compose.runtime.Composable + public fun Subtitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Finish.Subtitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Finish.Subtitle, *args) + } + public object Project { + public object Github { + public val Title: String + get() = YumeLocaleManager.activeStrings.Onboarding.Project.Github.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Project.Github.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Project.Github.Title, *args) + public val Summary: String + get() = YumeLocaleManager.activeStrings.Onboarding.Project.Github.Summary + @androidx.compose.runtime.Composable + public fun Summary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Project.Github.Summary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Project.Github.Summary, *args) + } + public object Community { + public val Title: String + get() = YumeLocaleManager.activeStrings.Onboarding.Project.Community.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Project.Community.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Project.Community.Title, *args) + public val Summary: String + get() = YumeLocaleManager.activeStrings.Onboarding.Project.Community.Summary + @androidx.compose.runtime.Composable + public fun Summary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Project.Community.Summary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Project.Community.Summary, *args) + } + } + public object Sheet { + public val PrivacyPolicyTitle: String + get() = YumeLocaleManager.activeStrings.Onboarding.Sheet.PrivacyPolicyTitle + @androidx.compose.runtime.Composable + public fun PrivacyPolicyTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Sheet.PrivacyPolicyTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Sheet.PrivacyPolicyTitle, *args) + public val LoadFailed: String + get() = YumeLocaleManager.activeStrings.Onboarding.Sheet.LoadFailed + @androidx.compose.runtime.Composable + public fun LoadFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Onboarding.Sheet.LoadFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Onboarding.Sheet.LoadFailed, *args) + } + } + public object OpenSourceLicenses { + public val Title: String + get() = YumeLocaleManager.activeStrings.OpenSourceLicenses.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.OpenSourceLicenses.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.OpenSourceLicenses.Title, *args) + public object LicenseSheet { + public val NoContent: String + get() = YumeLocaleManager.activeStrings.OpenSourceLicenses.LicenseSheet.NoContent + @androidx.compose.runtime.Composable + public fun NoContent(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.OpenSourceLicenses.LicenseSheet.NoContent else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.OpenSourceLicenses.LicenseSheet.NoContent, *args) + } + } + public object Override { + public val Title: String + get() = YumeLocaleManager.activeStrings.Override.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Title, *args) + public object Action { + public val Create: String + get() = YumeLocaleManager.activeStrings.Override.Action.Create + @androidx.compose.runtime.Composable + public fun Create(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Action.Create else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Action.Create, *args) + public val New: String + get() = YumeLocaleManager.activeStrings.Override.Action.New + @androidx.compose.runtime.Composable + public fun New(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Action.New else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Action.New, *args) + public val NetworkImport: String + get() = YumeLocaleManager.activeStrings.Override.Action.NetworkImport + @androidx.compose.runtime.Composable + public fun NetworkImport(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Action.NetworkImport else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Action.NetworkImport, *args) + } + public object BuiltIn { + public val PreventDnsLeak: String + get() = YumeLocaleManager.activeStrings.Override.BuiltIn.PreventDnsLeak + @androidx.compose.runtime.Composable + public fun PreventDnsLeak(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.BuiltIn.PreventDnsLeak else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.BuiltIn.PreventDnsLeak, *args) + public val AddDirectRules: String + get() = YumeLocaleManager.activeStrings.Override.BuiltIn.AddDirectRules + @androidx.compose.runtime.Composable + public fun AddDirectRules(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.BuiltIn.AddDirectRules else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.BuiltIn.AddDirectRules, *args) + public val PuddingDog: String + get() = YumeLocaleManager.activeStrings.Override.BuiltIn.PuddingDog + @androidx.compose.runtime.Composable + public fun PuddingDog(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.BuiltIn.PuddingDog else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.BuiltIn.PuddingDog, *args) + public val Acl4ssrOnlineFull: String + get() = YumeLocaleManager.activeStrings.Override.BuiltIn.Acl4ssrOnlineFull + @androidx.compose.runtime.Composable + public fun Acl4ssrOnlineFull(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.BuiltIn.Acl4ssrOnlineFull else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.BuiltIn.Acl4ssrOnlineFull, *args) + public val CopyName: String + get() = YumeLocaleManager.activeStrings.Override.BuiltIn.CopyName + @androidx.compose.runtime.Composable + public fun CopyName(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.BuiltIn.CopyName else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.BuiltIn.CopyName, *args) + } + public object Empty { + public val Title: String + get() = YumeLocaleManager.activeStrings.Override.Empty.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Empty.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Empty.Title, *args) + public val Hint: String + get() = YumeLocaleManager.activeStrings.Override.Empty.Hint + @androidx.compose.runtime.Composable + public fun Hint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Empty.Hint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Empty.Hint, *args) + public val UserTitle: String + get() = YumeLocaleManager.activeStrings.Override.Empty.UserTitle + @androidx.compose.runtime.Composable + public fun UserTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Empty.UserTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Empty.UserTitle, *args) + public val UserHint: String + get() = YumeLocaleManager.activeStrings.Override.Empty.UserHint + @androidx.compose.runtime.Composable + public fun UserHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Empty.UserHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Empty.UserHint, *args) + } + public object Section { + public val BuiltIn: String + get() = YumeLocaleManager.activeStrings.Override.Section.BuiltIn + @androidx.compose.runtime.Composable + public fun BuiltIn(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Section.BuiltIn else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Section.BuiltIn, *args) + public val User: String + get() = YumeLocaleManager.activeStrings.Override.Section.User + @androidx.compose.runtime.Composable + public fun User(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Section.User else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Section.User, *args) + } + public object Status { + public val InUse: String + get() = YumeLocaleManager.activeStrings.Override.Status.InUse + @androidx.compose.runtime.Composable + public fun InUse(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Status.InUse else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Status.InUse, *args) + public val NotInUse: String + get() = YumeLocaleManager.activeStrings.Override.Status.NotInUse + @androidx.compose.runtime.Composable + public fun NotInUse(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Status.NotInUse else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Status.NotInUse, *args) + public val BuiltIn: String + get() = YumeLocaleManager.activeStrings.Override.Status.BuiltIn + @androidx.compose.runtime.Composable + public fun BuiltIn(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Status.BuiltIn else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Status.BuiltIn, *args) + } + public object Card { + public val Copy: String + get() = YumeLocaleManager.activeStrings.Override.Card.Copy + @androidx.compose.runtime.Composable + public fun Copy(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Card.Copy else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Card.Copy, *args) + public val Export: String + get() = YumeLocaleManager.activeStrings.Override.Card.Export + @androidx.compose.runtime.Composable + public fun Export(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Card.Export else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Card.Export, *args) + public val Edit: String + get() = YumeLocaleManager.activeStrings.Override.Card.Edit + @androidx.compose.runtime.Composable + public fun Edit(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Card.Edit else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Card.Edit, *args) + public val Delete: String + get() = YumeLocaleManager.activeStrings.Override.Card.Delete + @androidx.compose.runtime.Composable + public fun Delete(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Card.Delete else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Card.Delete, *args) + public val EditButton: String + get() = YumeLocaleManager.activeStrings.Override.Card.EditButton + @androidx.compose.runtime.Composable + public fun EditButton(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Card.EditButton else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Card.EditButton, *args) + public val DeleteButton: String + get() = YumeLocaleManager.activeStrings.Override.Card.DeleteButton + @androidx.compose.runtime.Composable + public fun DeleteButton(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Card.DeleteButton else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Card.DeleteButton, *args) + public val Apply: String + get() = YumeLocaleManager.activeStrings.Override.Card.Apply + @androidx.compose.runtime.Composable + public fun Apply(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Card.Apply else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Card.Apply, *args) + public val ApplyButton: String + get() = YumeLocaleManager.activeStrings.Override.Card.ApplyButton + @androidx.compose.runtime.Composable + public fun ApplyButton(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Card.ApplyButton else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Card.ApplyButton, *args) + } + public object ApplySheet { + public val Title: String + get() = YumeLocaleManager.activeStrings.Override.ApplySheet.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.ApplySheet.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.ApplySheet.Title, *args) + public val Empty: String + get() = YumeLocaleManager.activeStrings.Override.ApplySheet.Empty + @androidx.compose.runtime.Composable + public fun Empty(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.ApplySheet.Empty else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.ApplySheet.Empty, *args) + public val Success: String + get() = YumeLocaleManager.activeStrings.Override.ApplySheet.Success + @androidx.compose.runtime.Composable + public fun Success(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.ApplySheet.Success else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.ApplySheet.Success, *args) + public val Failed: String + get() = YumeLocaleManager.activeStrings.Override.ApplySheet.Failed + @androidx.compose.runtime.Composable + public fun Failed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.ApplySheet.Failed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.ApplySheet.Failed, *args) + public object Button { + public val Cancel: String + get() = YumeLocaleManager.activeStrings.Override.ApplySheet.Button.Cancel + @androidx.compose.runtime.Composable + public fun Cancel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.ApplySheet.Button.Cancel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.ApplySheet.Button.Cancel, *args) + public val Confirm: String + get() = YumeLocaleManager.activeStrings.Override.ApplySheet.Button.Confirm + @androidx.compose.runtime.Composable + public fun Confirm(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.ApplySheet.Button.Confirm else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.ApplySheet.Button.Confirm, *args) + } + } + public object Import { + public val ReadError: String + get() = YumeLocaleManager.activeStrings.Override.Import.ReadError + @androidx.compose.runtime.Composable + public fun ReadError(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Import.ReadError else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Import.ReadError, *args) + public val Failed: String + get() = YumeLocaleManager.activeStrings.Override.Import.Failed + @androidx.compose.runtime.Composable + public fun Failed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Import.Failed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Import.Failed, *args) + public val FileError: String + get() = YumeLocaleManager.activeStrings.Override.Import.FileError + @androidx.compose.runtime.Composable + public fun FileError(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Import.FileError else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Import.FileError, *args) + public val NetworkError: String + get() = YumeLocaleManager.activeStrings.Override.Import.NetworkError + @androidx.compose.runtime.Composable + public fun NetworkError(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Import.NetworkError else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Import.NetworkError, *args) + public val InvalidUrl: String + get() = YumeLocaleManager.activeStrings.Override.Import.InvalidUrl + @androidx.compose.runtime.Composable + public fun InvalidUrl(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Import.InvalidUrl else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Import.InvalidUrl, *args) + public val HttpError: String + get() = YumeLocaleManager.activeStrings.Override.Import.HttpError + @androidx.compose.runtime.Composable + public fun HttpError(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Import.HttpError else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Import.HttpError, *args) + public val UnsupportedType: String + get() = YumeLocaleManager.activeStrings.Override.Import.UnsupportedType + @androidx.compose.runtime.Composable + public fun UnsupportedType(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Import.UnsupportedType else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Import.UnsupportedType, *args) + public val EmptyJavaScript: String + get() = YumeLocaleManager.activeStrings.Override.Import.EmptyJavaScript + @androidx.compose.runtime.Composable + public fun EmptyJavaScript(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Import.EmptyJavaScript else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Import.EmptyJavaScript, *args) + } + public object Export { + public val Failed: String + get() = YumeLocaleManager.activeStrings.Override.Export.Failed + @androidx.compose.runtime.Composable + public fun Failed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Export.Failed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Export.Failed, *args) + public val Success: String + get() = YumeLocaleManager.activeStrings.Override.Export.Success + @androidx.compose.runtime.Composable + public fun Success(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Export.Success else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Export.Success, *args) + } + public object Dialog { + public object Create { + public val Title: String + get() = YumeLocaleManager.activeStrings.Override.Dialog.Create.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Dialog.Create.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Dialog.Create.Title, *args) + public val Name: String + get() = YumeLocaleManager.activeStrings.Override.Dialog.Create.Name + @androidx.compose.runtime.Composable + public fun Name(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Dialog.Create.Name else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Dialog.Create.Name, *args) + public val Url: String + get() = YumeLocaleManager.activeStrings.Override.Dialog.Create.Url + @androidx.compose.runtime.Composable + public fun Url(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Dialog.Create.Url else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Dialog.Create.Url, *args) + public val Type: String + get() = YumeLocaleManager.activeStrings.Override.Dialog.Create.Type + @androidx.compose.runtime.Composable + public fun Type(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Dialog.Create.Type else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Dialog.Create.Type, *args) + } + public object Delete { + public val Title: String + get() = YumeLocaleManager.activeStrings.Override.Dialog.Delete.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Dialog.Delete.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Dialog.Delete.Title, *args) + public val InUseMessage: String + get() = YumeLocaleManager.activeStrings.Override.Dialog.Delete.InUseMessage + @androidx.compose.runtime.Composable + public fun InUseMessage(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Dialog.Delete.InUseMessage else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Dialog.Delete.InUseMessage, *args) + public val Message: String + get() = YumeLocaleManager.activeStrings.Override.Dialog.Delete.Message + @androidx.compose.runtime.Composable + public fun Message(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Dialog.Delete.Message else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Dialog.Delete.Message, *args) + } + public object Button { + public val Cancel: String + get() = YumeLocaleManager.activeStrings.Override.Dialog.Button.Cancel + @androidx.compose.runtime.Composable + public fun Cancel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Dialog.Button.Cancel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Dialog.Button.Cancel, *args) + public val Delete: String + get() = YumeLocaleManager.activeStrings.Override.Dialog.Button.Delete + @androidx.compose.runtime.Composable + public fun Delete(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Dialog.Button.Delete else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Dialog.Button.Delete, *args) + } + } + public object Draft { + public val BasicRouting: String + get() = YumeLocaleManager.activeStrings.Override.Draft.BasicRouting + @androidx.compose.runtime.Composable + public fun BasicRouting(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Draft.BasicRouting else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Draft.BasicRouting, *args) + public val ServiceRouting: String + get() = YumeLocaleManager.activeStrings.Override.Draft.ServiceRouting + @androidx.compose.runtime.Composable + public fun ServiceRouting(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Draft.ServiceRouting else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Draft.ServiceRouting, *args) + } + public object Save { + public val ImportDefaultName: String + get() = YumeLocaleManager.activeStrings.Override.Save.ImportDefaultName + @androidx.compose.runtime.Composable + public fun ImportDefaultName(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Save.ImportDefaultName else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Save.ImportDefaultName, *args) + public val Failed: String + get() = YumeLocaleManager.activeStrings.Override.Save.Failed + @androidx.compose.runtime.Composable + public fun Failed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Save.Failed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Save.Failed, *args) + } + public object Label { + public val RulesReplace: String + get() = YumeLocaleManager.activeStrings.Override.Label.RulesReplace + @androidx.compose.runtime.Composable + public fun RulesReplace(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Override.Label.RulesReplace else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Override.Label.RulesReplace, *args) + } + } + public object ProfilesPage { + public val Title: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Title, *args) + public object Action { + public val UpdateAll: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Action.UpdateAll + @androidx.compose.runtime.Composable + public fun UpdateAll(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Action.UpdateAll else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Action.UpdateAll, *args) + public val AddProfile: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Action.AddProfile + @androidx.compose.runtime.Composable + public fun AddProfile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Action.AddProfile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Action.AddProfile, *args) + } + public object Empty { + public val NoProfiles: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Empty.NoProfiles + @androidx.compose.runtime.Composable + public fun NoProfiles(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Empty.NoProfiles else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Empty.NoProfiles, *args) + public val Hint: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Empty.Hint + @androidx.compose.runtime.Composable + public fun Hint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Empty.Hint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Empty.Hint, *args) + } + public object Sheet { + public val AddTitle: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Sheet.AddTitle + @androidx.compose.runtime.Composable + public fun AddTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Sheet.AddTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Sheet.AddTitle, *args) + public val EditTitle: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Sheet.EditTitle + @androidx.compose.runtime.Composable + public fun EditTitle(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Sheet.EditTitle else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Sheet.EditTitle, *args) + public val Complete: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Sheet.Complete + @androidx.compose.runtime.Composable + public fun Complete(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Sheet.Complete else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Sheet.Complete, *args) + } + public object Type { + public val Title: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Type.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Type.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Type.Title, *args) + public val Subscription: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Type.Subscription + @androidx.compose.runtime.Composable + public fun Subscription(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Type.Subscription else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Type.Subscription, *args) + public val LocalFile: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Type.LocalFile + @androidx.compose.runtime.Composable + public fun LocalFile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Type.LocalFile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Type.LocalFile, *args) + public val QrScan: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Type.QrScan + @androidx.compose.runtime.Composable + public fun QrScan(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Type.QrScan else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Type.QrScan, *args) + } + public object Input { + public val ProfileName: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Input.ProfileName + @androidx.compose.runtime.Composable + public fun ProfileName(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Input.ProfileName else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Input.ProfileName, *args) + public val SubscriptionUrl: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Input.SubscriptionUrl + @androidx.compose.runtime.Composable + public fun SubscriptionUrl(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Input.SubscriptionUrl else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Input.SubscriptionUrl, *args) + public val SelectFile: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Input.SelectFile + @androidx.compose.runtime.Composable + public fun SelectFile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Input.SelectFile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Input.SelectFile, *args) + public val NewProfile: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Input.NewProfile + @androidx.compose.runtime.Composable + public fun NewProfile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Input.NewProfile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Input.NewProfile, *args) + public val AgeSecretKey: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Input.AgeSecretKey + @androidx.compose.runtime.Composable + public fun AgeSecretKey(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Input.AgeSecretKey else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Input.AgeSecretKey, *args) + } + public object QrScanner { + public val NeedPermission: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.NeedPermission + @androidx.compose.runtime.Composable + public fun NeedPermission(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.NeedPermission else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.NeedPermission, *args) + public val NeedCamera: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.NeedCamera + @androidx.compose.runtime.Composable + public fun NeedCamera(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.NeedCamera else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.NeedCamera, *args) + public val SelectFromAlbum: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.SelectFromAlbum + @androidx.compose.runtime.Composable + public fun SelectFromAlbum(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.SelectFromAlbum else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.SelectFromAlbum, *args) + public val RecognizeSuccess: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.RecognizeSuccess + @androidx.compose.runtime.Composable + public fun RecognizeSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.RecognizeSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.RecognizeSuccess, *args) + public val RecognizeFailed: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.RecognizeFailed + @androidx.compose.runtime.Composable + public fun RecognizeFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.RecognizeFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.RecognizeFailed, *args) + public val RecognizeError: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.RecognizeError + @androidx.compose.runtime.Composable + public fun RecognizeError(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.RecognizeError else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.QrScanner.RecognizeError, *args) + } + public object Message { + public val UnknownFile: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Message.UnknownFile + @androidx.compose.runtime.Composable + public fun UnknownFile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Message.UnknownFile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Message.UnknownFile, *args) + } + public object Validation { + public val EnterUrl: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Validation.EnterUrl + @androidx.compose.runtime.Composable + public fun EnterUrl(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Validation.EnterUrl else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Validation.EnterUrl, *args) + public val SelectFile: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Validation.SelectFile + @androidx.compose.runtime.Composable + public fun SelectFile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Validation.SelectFile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Validation.SelectFile, *args) + public val YamlOnly: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Validation.YamlOnly + @androidx.compose.runtime.Composable + public fun YamlOnly(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Validation.YamlOnly else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Validation.YamlOnly, *args) + } + public object Progress { + public val Downloading: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Progress.Downloading + @androidx.compose.runtime.Composable + public fun Downloading(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Progress.Downloading else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Progress.Downloading, *args) + } + public object Button { + public val Cancel: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Button.Cancel + @androidx.compose.runtime.Composable + public fun Cancel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Button.Cancel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Button.Cancel, *args) + public val Confirm: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.Button.Confirm + @androidx.compose.runtime.Composable + public fun Confirm(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.Button.Confirm else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.Button.Confirm, *args) + } + public object DeleteDialog { + public val Title: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.DeleteDialog.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.DeleteDialog.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.DeleteDialog.Title, *args) + public val Message: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.DeleteDialog.Message + @androidx.compose.runtime.Composable + public fun Message(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.DeleteDialog.Message else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.DeleteDialog.Message, *args) + public val Confirm: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.DeleteDialog.Confirm + @androidx.compose.runtime.Composable + public fun Confirm(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.DeleteDialog.Confirm else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.DeleteDialog.Confirm, *args) + } + public object EditDialog { + public val Title: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.EditDialog.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.EditDialog.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.EditDialog.Title, *args) + } + public object LinkSettings { + public val Title: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Title, *args) + public val OpenMode: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.OpenMode + @androidx.compose.runtime.Composable + public fun OpenMode(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.OpenMode else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.OpenMode, *args) + public val OpenModeInApp: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.OpenModeInApp + @androidx.compose.runtime.Composable + public fun OpenModeInApp(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.OpenModeInApp else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.OpenModeInApp, *args) + public val OpenModeExternal: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.OpenModeExternal + @androidx.compose.runtime.Composable + public fun OpenModeExternal(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.OpenModeExternal else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.OpenModeExternal, *args) + public val DefaultLink: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.DefaultLink + @androidx.compose.runtime.Composable + public fun DefaultLink(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.DefaultLink else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.DefaultLink, *args) + public val DefaultLinkSummary: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.DefaultLinkSummary + @androidx.compose.runtime.Composable + public fun DefaultLinkSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.DefaultLinkSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.DefaultLinkSummary, *args) + public val AddLink: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.AddLink + @androidx.compose.runtime.Composable + public fun AddLink(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.AddLink else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.AddLink, *args) + public val EditLink: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.EditLink + @androidx.compose.runtime.Composable + public fun EditLink(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.EditLink else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.EditLink, *args) + public val Name: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Name + @androidx.compose.runtime.Composable + public fun Name(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Name else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Name, *args) + public val Url: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Url + @androidx.compose.runtime.Composable + public fun Url(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Url else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Url, *args) + public val Close: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Close + @androidx.compose.runtime.Composable + public fun Close(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Close else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Close, *args) + public object Validation { + public val EnterName: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Validation.EnterName + @androidx.compose.runtime.Composable + public fun EnterName(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Validation.EnterName else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Validation.EnterName, *args) + public val EnterUrl: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Validation.EnterUrl + @androidx.compose.runtime.Composable + public fun EnterUrl(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Validation.EnterUrl else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Validation.EnterUrl, *args) + public val InvalidUrl: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Validation.InvalidUrl + @androidx.compose.runtime.Composable + public fun InvalidUrl(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Validation.InvalidUrl else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.LinkSettings.Validation.InvalidUrl, *args) + } + } + public object ShareDialog { + public val Title: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.Title, *args) + public val ShareFile: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.ShareFile + @androidx.compose.runtime.Composable + public fun ShareFile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.ShareFile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.ShareFile, *args) + public val ShareLink: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.ShareLink + @androidx.compose.runtime.Composable + public fun ShareLink(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.ShareLink else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.ShareLink, *args) + public val NoLink: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.NoLink + @androidx.compose.runtime.Composable + public fun NoLink(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.NoLink else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.NoLink, *args) + public val ImportedConfigMissing: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.ImportedConfigMissing + @androidx.compose.runtime.Composable + public fun ImportedConfigMissing(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.ImportedConfigMissing else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.ShareDialog.ImportedConfigMissing, *args) + } + public object SettingsDialog { + public val Title: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.Title, *args) + public val ChangeLink: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.ChangeLink + @androidx.compose.runtime.Composable + public fun ChangeLink(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.ChangeLink else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.ChangeLink, *args) + public val CustomRouting: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.CustomRouting + @androidx.compose.runtime.Composable + public fun CustomRouting(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.CustomRouting else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.CustomRouting, *args) + public val CustomRoutingSummary: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.CustomRoutingSummary + @androidx.compose.runtime.Composable + public fun CustomRoutingSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.CustomRoutingSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.CustomRoutingSummary, *args) + public val NoDescription: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.NoDescription + @androidx.compose.runtime.Composable + public fun NoDescription(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.NoDescription else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.NoDescription, *args) + public val EditProfile: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.EditProfile + @androidx.compose.runtime.Composable + public fun EditProfile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.EditProfile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.EditProfile, *args) + public val OpenConfig: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.OpenConfig + @androidx.compose.runtime.Composable + public fun OpenConfig(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.OpenConfig else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.OpenConfig, *args) + public val EditSettings: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.EditSettings + @androidx.compose.runtime.Composable + public fun EditSettings(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.EditSettings else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.EditSettings, *args) + public val SectionType: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.SectionType + @androidx.compose.runtime.Composable + public fun SectionType(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.SectionType else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.SectionType, *args) + public val SectionSubscription: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.SectionSubscription + @androidx.compose.runtime.Composable + public fun SectionSubscription(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.SectionSubscription else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.SectionSubscription, *args) + public val SectionOverride: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.SectionOverride + @androidx.compose.runtime.Composable + public fun SectionOverride(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.SectionOverride else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.SectionOverride, *args) + public val SaveFailed: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.SaveFailed + @androidx.compose.runtime.Composable + public fun SaveFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.SaveFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.SaveFailed, *args) + public val ConfigMissing: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.ConfigMissing + @androidx.compose.runtime.Composable + public fun ConfigMissing(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.ConfigMissing else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.ConfigMissing, *args) + public val AgeSecretKey: String + get() = YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.AgeSecretKey + @androidx.compose.runtime.Composable + public fun AgeSecretKey(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.AgeSecretKey else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesPage.SettingsDialog.AgeSecretKey, *args) + } + } + public object ProfilesVM { + public object Message { + public val ProfileAdded: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Message.ProfileAdded + @androidx.compose.runtime.Composable + public fun ProfileAdded(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Message.ProfileAdded else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Message.ProfileAdded, *args) + public val AddFailed: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Message.AddFailed + @androidx.compose.runtime.Composable + public fun AddFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Message.AddFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Message.AddFailed, *args) + public val ProfileDeleted: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Message.ProfileDeleted + @androidx.compose.runtime.Composable + public fun ProfileDeleted(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Message.ProfileDeleted else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Message.ProfileDeleted, *args) + public val DeleteFailed: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Message.DeleteFailed + @androidx.compose.runtime.Composable + public fun DeleteFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Message.DeleteFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Message.DeleteFailed, *args) + public val ProfileUpdated: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Message.ProfileUpdated + @androidx.compose.runtime.Composable + public fun ProfileUpdated(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Message.ProfileUpdated else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Message.ProfileUpdated, *args) + public val UpdateFailed: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Message.UpdateFailed + @androidx.compose.runtime.Composable + public fun UpdateFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Message.UpdateFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Message.UpdateFailed, *args) + public val ToggleFailed: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Message.ToggleFailed + @androidx.compose.runtime.Composable + public fun ToggleFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Message.ToggleFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Message.ToggleFailed, *args) + public val ProvidersPartial: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Message.ProvidersPartial + @androidx.compose.runtime.Composable + public fun ProvidersPartial(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Message.ProvidersPartial else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Message.ProvidersPartial, *args) + public val ProvidersUndiscovered: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Message.ProvidersUndiscovered + @androidx.compose.runtime.Composable + public fun ProvidersUndiscovered(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Message.ProvidersUndiscovered else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Message.ProvidersUndiscovered, *args) + } + public object Progress { + public val Preparing: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Progress.Preparing + @androidx.compose.runtime.Composable + public fun Preparing(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Progress.Preparing else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Progress.Preparing, *args) + public val Verifying: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Progress.Verifying + @androidx.compose.runtime.Composable + public fun Verifying(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Progress.Verifying else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Progress.Verifying, *args) + public val ImportComplete: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Progress.ImportComplete + @androidx.compose.runtime.Composable + public fun ImportComplete(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Progress.ImportComplete else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Progress.ImportComplete, *args) + } + public object Error { + public val ProfileNotExist: String + get() = YumeLocaleManager.activeStrings.ProfilesVM.Error.ProfileNotExist + @androidx.compose.runtime.Composable + public fun ProfileNotExist(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.ProfilesVM.Error.ProfileNotExist else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.ProfilesVM.Error.ProfileNotExist, *args) + } + } + public object Providers { + public val Title: String + get() = YumeLocaleManager.activeStrings.Providers.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Title, *args) + public object Action { + public val UpdateAll: String + get() = YumeLocaleManager.activeStrings.Providers.Action.UpdateAll + @androidx.compose.runtime.Composable + public fun UpdateAll(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Action.UpdateAll else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Action.UpdateAll, *args) + public val Update: String + get() = YumeLocaleManager.activeStrings.Providers.Action.Update + @androidx.compose.runtime.Composable + public fun Update(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Action.Update else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Action.Update, *args) + public val Upload: String + get() = YumeLocaleManager.activeStrings.Providers.Action.Upload + @androidx.compose.runtime.Composable + public fun Upload(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Action.Upload else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Action.Upload, *args) + public val Operation: String + get() = YumeLocaleManager.activeStrings.Providers.Action.Operation + @androidx.compose.runtime.Composable + public fun Operation(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Action.Operation else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Action.Operation, *args) + } + public object Empty { + public val NotRunning: String + get() = YumeLocaleManager.activeStrings.Providers.Empty.NotRunning + @androidx.compose.runtime.Composable + public fun NotRunning(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Empty.NotRunning else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Empty.NotRunning, *args) + public val NotRunningHint: String + get() = YumeLocaleManager.activeStrings.Providers.Empty.NotRunningHint + @androidx.compose.runtime.Composable + public fun NotRunningHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Empty.NotRunningHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Empty.NotRunningHint, *args) + public val NoProviders: String + get() = YumeLocaleManager.activeStrings.Providers.Empty.NoProviders + @androidx.compose.runtime.Composable + public fun NoProviders(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Empty.NoProviders else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Empty.NoProviders, *args) + public val NoProvidersHint: String + get() = YumeLocaleManager.activeStrings.Providers.Empty.NoProvidersHint + @androidx.compose.runtime.Composable + public fun NoProvidersHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Empty.NoProvidersHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Empty.NoProvidersHint, *args) + } + public object Type { + public val ProxyProviders: String + get() = YumeLocaleManager.activeStrings.Providers.Type.ProxyProviders + @androidx.compose.runtime.Composable + public fun ProxyProviders(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Type.ProxyProviders else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Type.ProxyProviders, *args) + public val RuleProviders: String + get() = YumeLocaleManager.activeStrings.Providers.Type.RuleProviders + @androidx.compose.runtime.Composable + public fun RuleProviders(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Type.RuleProviders else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Type.RuleProviders, *args) + } + public object VehicleType { + public val Http: String + get() = YumeLocaleManager.activeStrings.Providers.VehicleType.Http + @androidx.compose.runtime.Composable + public fun Http(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.VehicleType.Http else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.VehicleType.Http, *args) + public val File: String + get() = YumeLocaleManager.activeStrings.Providers.VehicleType.File + @androidx.compose.runtime.Composable + public fun File(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.VehicleType.File else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.VehicleType.File, *args) + public val Inline: String + get() = YumeLocaleManager.activeStrings.Providers.VehicleType.Inline + @androidx.compose.runtime.Composable + public fun Inline(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.VehicleType.Inline else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.VehicleType.Inline, *args) + public val Compatible: String + get() = YumeLocaleManager.activeStrings.Providers.VehicleType.Compatible + @androidx.compose.runtime.Composable + public fun Compatible(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.VehicleType.Compatible else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.VehicleType.Compatible, *args) + } + public object Message { + public val FetchFailed: String + get() = YumeLocaleManager.activeStrings.Providers.Message.FetchFailed + @androidx.compose.runtime.Composable + public fun FetchFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Message.FetchFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Message.FetchFailed, *args) + public val UpdateSuccess: String + get() = YumeLocaleManager.activeStrings.Providers.Message.UpdateSuccess + @androidx.compose.runtime.Composable + public fun UpdateSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Message.UpdateSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Message.UpdateSuccess, *args) + public val UpdateFailed: String + get() = YumeLocaleManager.activeStrings.Providers.Message.UpdateFailed + @androidx.compose.runtime.Composable + public fun UpdateFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Message.UpdateFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Message.UpdateFailed, *args) + public val AllUpdated: String + get() = YumeLocaleManager.activeStrings.Providers.Message.AllUpdated + @androidx.compose.runtime.Composable + public fun AllUpdated(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Message.AllUpdated else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Message.AllUpdated, *args) + public val UploadSuccess: String + get() = YumeLocaleManager.activeStrings.Providers.Message.UploadSuccess + @androidx.compose.runtime.Composable + public fun UploadSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Message.UploadSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Message.UploadSuccess, *args) + public val UploadFailed: String + get() = YumeLocaleManager.activeStrings.Providers.Message.UploadFailed + @androidx.compose.runtime.Composable + public fun UploadFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Providers.Message.UploadFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Providers.Message.UploadFailed, *args) + } + } + public object Proxy { + public val Title: String + get() = YumeLocaleManager.activeStrings.Proxy.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Title, *args) + public object Mode { + public val Direct: String + get() = YumeLocaleManager.activeStrings.Proxy.Mode.Direct + @androidx.compose.runtime.Composable + public fun Direct(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Mode.Direct else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Mode.Direct, *args) + } + public object Action { + public val Panel: String + get() = YumeLocaleManager.activeStrings.Proxy.Action.Panel + @androidx.compose.runtime.Composable + public fun Panel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Action.Panel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Action.Panel, *args) + public val Test: String + get() = YumeLocaleManager.activeStrings.Proxy.Action.Test + @androidx.compose.runtime.Composable + public fun Test(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Action.Test else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Action.Test, *args) + public val Sort: String + get() = YumeLocaleManager.activeStrings.Proxy.Action.Sort + @androidx.compose.runtime.Composable + public fun Sort(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Action.Sort else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Action.Sort, *args) + public val LocateCurrent: String + get() = YumeLocaleManager.activeStrings.Proxy.Action.LocateCurrent + @androidx.compose.runtime.Composable + public fun LocateCurrent(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Action.LocateCurrent else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Action.LocateCurrent, *args) + public val More: String + get() = YumeLocaleManager.activeStrings.Proxy.Action.More + @androidx.compose.runtime.Composable + public fun More(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Action.More else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Action.More, *args) + } + public object Node { + public val Timeout: String + get() = YumeLocaleManager.activeStrings.Proxy.Node.Timeout + @androidx.compose.runtime.Composable + public fun Timeout(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Node.Timeout else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Node.Timeout, *args) + public val Count: String + get() = YumeLocaleManager.activeStrings.Proxy.Node.Count + @androidx.compose.runtime.Composable + public fun Count(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Node.Count else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Node.Count, *args) + } + public object Empty { + public val NoNodes: String + get() = YumeLocaleManager.activeStrings.Proxy.Empty.NoNodes + @androidx.compose.runtime.Composable + public fun NoNodes(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Empty.NoNodes else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Empty.NoNodes, *args) + public val Hint: String + get() = YumeLocaleManager.activeStrings.Proxy.Empty.Hint + @androidx.compose.runtime.Composable + public fun Hint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Empty.Hint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Empty.Hint, *args) + } + public object Testing { + public val Group: String + get() = YumeLocaleManager.activeStrings.Proxy.Testing.Group + @androidx.compose.runtime.Composable + public fun Group(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Testing.Group else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Testing.Group, *args) + public val All: String + get() = YumeLocaleManager.activeStrings.Proxy.Testing.All + @androidx.compose.runtime.Composable + public fun All(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Testing.All else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Testing.All, *args) + public val RequestSent: String + get() = YumeLocaleManager.activeStrings.Proxy.Testing.RequestSent + @androidx.compose.runtime.Composable + public fun RequestSent(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Testing.RequestSent else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Testing.RequestSent, *args) + public val Progress: String + get() = YumeLocaleManager.activeStrings.Proxy.Testing.Progress + @androidx.compose.runtime.Composable + public fun Progress(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Testing.Progress else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Testing.Progress, *args) + public val Completed: String + get() = YumeLocaleManager.activeStrings.Proxy.Testing.Completed + @androidx.compose.runtime.Composable + public fun Completed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Testing.Completed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Testing.Completed, *args) + public val Failed: String + get() = YumeLocaleManager.activeStrings.Proxy.Testing.Failed + @androidx.compose.runtime.Composable + public fun Failed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Testing.Failed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Testing.Failed, *args) + public val InProgress: String + get() = YumeLocaleManager.activeStrings.Proxy.Testing.InProgress + @androidx.compose.runtime.Composable + public fun InProgress(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Testing.InProgress else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Testing.InProgress, *args) + } + public object Selection { + public val Switched: String + get() = YumeLocaleManager.activeStrings.Proxy.Selection.Switched + @androidx.compose.runtime.Composable + public fun Switched(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Selection.Switched else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Selection.Switched, *args) + public val Failed: String + get() = YumeLocaleManager.activeStrings.Proxy.Selection.Failed + @androidx.compose.runtime.Composable + public fun Failed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Selection.Failed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Selection.Failed, *args) + public val Error: String + get() = YumeLocaleManager.activeStrings.Proxy.Selection.Error + @androidx.compose.runtime.Composable + public fun Error(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.Selection.Error else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.Selection.Error, *args) + } + public object SortMode { + public val Default: String + get() = YumeLocaleManager.activeStrings.Proxy.SortMode.Default + @androidx.compose.runtime.Composable + public fun Default(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.SortMode.Default else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.SortMode.Default, *args) + public val ByName: String + get() = YumeLocaleManager.activeStrings.Proxy.SortMode.ByName + @androidx.compose.runtime.Composable + public fun ByName(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.SortMode.ByName else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.SortMode.ByName, *args) + public val ByLatency: String + get() = YumeLocaleManager.activeStrings.Proxy.SortMode.ByLatency + @androidx.compose.runtime.Composable + public fun ByLatency(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.SortMode.ByLatency else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.SortMode.ByLatency, *args) + } + public object DisplayMode { + public val SingleDetailed: String + get() = YumeLocaleManager.activeStrings.Proxy.DisplayMode.SingleDetailed + @androidx.compose.runtime.Composable + public fun SingleDetailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.DisplayMode.SingleDetailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.DisplayMode.SingleDetailed, *args) + public val SingleSimple: String + get() = YumeLocaleManager.activeStrings.Proxy.DisplayMode.SingleSimple + @androidx.compose.runtime.Composable + public fun SingleSimple(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.DisplayMode.SingleSimple else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.DisplayMode.SingleSimple, *args) + public val DoubleDetailed: String + get() = YumeLocaleManager.activeStrings.Proxy.DisplayMode.DoubleDetailed + @androidx.compose.runtime.Composable + public fun DoubleDetailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.DisplayMode.DoubleDetailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.DisplayMode.DoubleDetailed, *args) + public val DoubleSimple: String + get() = YumeLocaleManager.activeStrings.Proxy.DisplayMode.DoubleSimple + @androidx.compose.runtime.Composable + public fun DoubleSimple(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Proxy.DisplayMode.DoubleSimple else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Proxy.DisplayMode.DoubleSimple, *args) + } + } + public object Rules { + public val Title: String + get() = YumeLocaleManager.activeStrings.Rules.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.Title, *args) + public val Summary: String + get() = YumeLocaleManager.activeStrings.Rules.Summary + @androidx.compose.runtime.Composable + public fun Summary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.Summary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.Summary, *args) + public val SearchHint: String + get() = YumeLocaleManager.activeStrings.Rules.SearchHint + @androidx.compose.runtime.Composable + public fun SearchHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.SearchHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.SearchHint, *args) + public object Label { + public val Proxy: String + get() = YumeLocaleManager.activeStrings.Rules.Label.Proxy + @androidx.compose.runtime.Composable + public fun Proxy(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.Label.Proxy else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.Label.Proxy, *args) + public val HitRate: String + get() = YumeLocaleManager.activeStrings.Rules.Label.HitRate + @androidx.compose.runtime.Composable + public fun HitRate(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.Label.HitRate else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.Label.HitRate, *args) + } + public object Message { + public val ToggleFailed: String + get() = YumeLocaleManager.activeStrings.Rules.Message.ToggleFailed + @androidx.compose.runtime.Composable + public fun ToggleFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.Message.ToggleFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.Message.ToggleFailed, *args) + } + public object Empty { + public val Loading: String + get() = YumeLocaleManager.activeStrings.Rules.Empty.Loading + @androidx.compose.runtime.Composable + public fun Loading(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.Empty.Loading else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.Empty.Loading, *args) + public val LoadingHint: String + get() = YumeLocaleManager.activeStrings.Rules.Empty.LoadingHint + @androidx.compose.runtime.Composable + public fun LoadingHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.Empty.LoadingHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.Empty.LoadingHint, *args) + public val NotRunning: String + get() = YumeLocaleManager.activeStrings.Rules.Empty.NotRunning + @androidx.compose.runtime.Composable + public fun NotRunning(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.Empty.NotRunning else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.Empty.NotRunning, *args) + public val NotRunningHint: String + get() = YumeLocaleManager.activeStrings.Rules.Empty.NotRunningHint + @androidx.compose.runtime.Composable + public fun NotRunningHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.Empty.NotRunningHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.Empty.NotRunningHint, *args) + public val NoRules: String + get() = YumeLocaleManager.activeStrings.Rules.Empty.NoRules + @androidx.compose.runtime.Composable + public fun NoRules(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.Empty.NoRules else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.Empty.NoRules, *args) + public val NoRulesHint: String + get() = YumeLocaleManager.activeStrings.Rules.Empty.NoRulesHint + @androidx.compose.runtime.Composable + public fun NoRulesHint(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.Empty.NoRulesHint else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.Empty.NoRulesHint, *args) + public val NoResults: String + get() = YumeLocaleManager.activeStrings.Rules.Empty.NoResults + @androidx.compose.runtime.Composable + public fun NoResults(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Rules.Empty.NoResults else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Rules.Empty.NoResults, *args) + } + } + public object Service { + public object Notification { + public val Running: String + get() = YumeLocaleManager.activeStrings.Service.Notification.Running + @androidx.compose.runtime.Composable + public fun Running(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Notification.Running else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Notification.Running, *args) + public val UnknownProfile: String + get() = YumeLocaleManager.activeStrings.Service.Notification.UnknownProfile + @androidx.compose.runtime.Composable + public fun UnknownProfile(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Notification.UnknownProfile else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Notification.UnknownProfile, *args) + public val NoNode: String + get() = YumeLocaleManager.activeStrings.Service.Notification.NoNode + @androidx.compose.runtime.Composable + public fun NoNode(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Notification.NoNode else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Notification.NoNode, *args) + public val CurrentNode: String + get() = YumeLocaleManager.activeStrings.Service.Notification.CurrentNode + @androidx.compose.runtime.Composable + public fun CurrentNode(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Notification.CurrentNode else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Notification.CurrentNode, *args) + public val CurrentNodeLabel: String + get() = YumeLocaleManager.activeStrings.Service.Notification.CurrentNodeLabel + @androidx.compose.runtime.Composable + public fun CurrentNodeLabel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Notification.CurrentNodeLabel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Notification.CurrentNodeLabel, *args) + public val RealtimeTraffic: String + get() = YumeLocaleManager.activeStrings.Service.Notification.RealtimeTraffic + @androidx.compose.runtime.Composable + public fun RealtimeTraffic(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Notification.RealtimeTraffic else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Notification.RealtimeTraffic, *args) + public val SpeedLine: String + get() = YumeLocaleManager.activeStrings.Service.Notification.SpeedLine + @androidx.compose.runtime.Composable + public fun SpeedLine(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Notification.SpeedLine else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Notification.SpeedLine, *args) + public val TotalTraffic: String + get() = YumeLocaleManager.activeStrings.Service.Notification.TotalTraffic + @androidx.compose.runtime.Composable + public fun TotalTraffic(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Notification.TotalTraffic else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Notification.TotalTraffic, *args) + public val LogChannel: String + get() = YumeLocaleManager.activeStrings.Service.Notification.LogChannel + @androidx.compose.runtime.Composable + public fun LogChannel(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Notification.LogChannel else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Notification.LogChannel, *args) + public val LogRecording: String + get() = YumeLocaleManager.activeStrings.Service.Notification.LogRecording + @androidx.compose.runtime.Composable + public fun LogRecording(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Notification.LogRecording else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Notification.LogRecording, *args) + public val LogRecordingPending: String + get() = YumeLocaleManager.activeStrings.Service.Notification.LogRecordingPending + @androidx.compose.runtime.Composable + public fun LogRecordingPending(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Notification.LogRecordingPending else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Notification.LogRecordingPending, *args) + public val Stop: String + get() = YumeLocaleManager.activeStrings.Service.Notification.Stop + @androidx.compose.runtime.Composable + public fun Stop(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Notification.Stop else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Notification.Stop, *args) + } + public object Tile { + public val ClickToOpen: String + get() = YumeLocaleManager.activeStrings.Service.Tile.ClickToOpen + @androidx.compose.runtime.Composable + public fun ClickToOpen(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Tile.ClickToOpen else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Tile.ClickToOpen, *args) + public val ClickToStartProxy: String + get() = YumeLocaleManager.activeStrings.Service.Tile.ClickToStartProxy + @androidx.compose.runtime.Composable + public fun ClickToStartProxy(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Tile.ClickToStartProxy else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Tile.ClickToStartProxy, *args) + public val ClickToStopProxy: String + get() = YumeLocaleManager.activeStrings.Service.Tile.ClickToStopProxy + @androidx.compose.runtime.Composable + public fun ClickToStopProxy(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Tile.ClickToStopProxy else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Tile.ClickToStopProxy, *args) + public val Connecting: String + get() = YumeLocaleManager.activeStrings.Service.Tile.Connecting + @androidx.compose.runtime.Composable + public fun Connecting(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Tile.Connecting else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Tile.Connecting, *args) + public val Disconnecting: String + get() = YumeLocaleManager.activeStrings.Service.Tile.Disconnecting + @androidx.compose.runtime.Composable + public fun Disconnecting(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Service.Tile.Disconnecting else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Service.Tile.Disconnecting, *args) + } + } + public object Settings { + public val Title: String + get() = YumeLocaleManager.activeStrings.Settings.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.Title, *args) + public object Section { + public val UiSettings: String + get() = YumeLocaleManager.activeStrings.Settings.Section.UiSettings + @androidx.compose.runtime.Composable + public fun UiSettings(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.Section.UiSettings else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.Section.UiSettings, *args) + public val More: String + get() = YumeLocaleManager.activeStrings.Settings.Section.More + @androidx.compose.runtime.Composable + public fun More(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.Section.More else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.Section.More, *args) + } + public object UiSettings { + public val App: String + get() = YumeLocaleManager.activeStrings.Settings.UiSettings.App + @androidx.compose.runtime.Composable + public fun App(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.UiSettings.App else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.UiSettings.App, *args) + public val AppSummary: String + get() = YumeLocaleManager.activeStrings.Settings.UiSettings.AppSummary + @androidx.compose.runtime.Composable + public fun AppSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.UiSettings.AppSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.UiSettings.AppSummary, *args) + public val Network: String + get() = YumeLocaleManager.activeStrings.Settings.UiSettings.Network + @androidx.compose.runtime.Composable + public fun Network(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.UiSettings.Network else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.UiSettings.Network, *args) + public val NetworkSummary: String + get() = YumeLocaleManager.activeStrings.Settings.UiSettings.NetworkSummary + @androidx.compose.runtime.Composable + public fun NetworkSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.UiSettings.NetworkSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.UiSettings.NetworkSummary, *args) + public val Override: String + get() = YumeLocaleManager.activeStrings.Settings.UiSettings.Override + @androidx.compose.runtime.Composable + public fun Override(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.UiSettings.Override else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.UiSettings.Override, *args) + public val OverrideSummary: String + get() = YumeLocaleManager.activeStrings.Settings.UiSettings.OverrideSummary + @androidx.compose.runtime.Composable + public fun OverrideSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.UiSettings.OverrideSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.UiSettings.OverrideSummary, *args) + public val MetaFeatures: String + get() = YumeLocaleManager.activeStrings.Settings.UiSettings.MetaFeatures + @androidx.compose.runtime.Composable + public fun MetaFeatures(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.UiSettings.MetaFeatures else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.UiSettings.MetaFeatures, *args) + public val MetaFeaturesSummary: String + get() = YumeLocaleManager.activeStrings.Settings.UiSettings.MetaFeaturesSummary + @androidx.compose.runtime.Composable + public fun MetaFeaturesSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.UiSettings.MetaFeaturesSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.UiSettings.MetaFeaturesSummary, *args) + } + public object More { + public val Lab: String + get() = YumeLocaleManager.activeStrings.Settings.More.Lab + @androidx.compose.runtime.Composable + public fun Lab(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.More.Lab else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.More.Lab, *args) + public val LabSummary: String + get() = YumeLocaleManager.activeStrings.Settings.More.LabSummary + @androidx.compose.runtime.Composable + public fun LabSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.More.LabSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.More.LabSummary, *args) + public val Logs: String + get() = YumeLocaleManager.activeStrings.Settings.More.Logs + @androidx.compose.runtime.Composable + public fun Logs(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.More.Logs else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.More.Logs, *args) + public val LogsSummary: String + get() = YumeLocaleManager.activeStrings.Settings.More.LogsSummary + @androidx.compose.runtime.Composable + public fun LogsSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.More.LogsSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.More.LogsSummary, *args) + public val Onboarding: String + get() = YumeLocaleManager.activeStrings.Settings.More.Onboarding + @androidx.compose.runtime.Composable + public fun Onboarding(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.More.Onboarding else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.More.Onboarding, *args) + public val OnboardingSummary: String + get() = YumeLocaleManager.activeStrings.Settings.More.OnboardingSummary + @androidx.compose.runtime.Composable + public fun OnboardingSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.More.OnboardingSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.More.OnboardingSummary, *args) + public val About: String + get() = YumeLocaleManager.activeStrings.Settings.More.About + @androidx.compose.runtime.Composable + public fun About(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.More.About else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.More.About, *args) + public val AboutSummary: String + get() = YumeLocaleManager.activeStrings.Settings.More.AboutSummary + @androidx.compose.runtime.Composable + public fun AboutSummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.More.AboutSummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.More.AboutSummary, *args) + } + public object Error { + public val WebviewFailed: String + get() = YumeLocaleManager.activeStrings.Settings.Error.WebviewFailed + @androidx.compose.runtime.Composable + public fun WebviewFailed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Settings.Error.WebviewFailed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Settings.Error.WebviewFailed, *args) + } + } + public object TrafficStatistics { + public val Title: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Title + @androidx.compose.runtime.Composable + public fun Title(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Title else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Title, *args) + public val EntrySummary: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.EntrySummary + @androidx.compose.runtime.Composable + public fun EntrySummary(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.EntrySummary else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.EntrySummary, *args) + public object TimeRange { + public val Today: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.TimeRange.Today + @androidx.compose.runtime.Composable + public fun Today(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.TimeRange.Today else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.TimeRange.Today, *args) + public val Week: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.TimeRange.Week + @androidx.compose.runtime.Composable + public fun Week(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.TimeRange.Week else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.TimeRange.Week, *args) + } + public object Summary { + public val TodayTraffic: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Summary.TodayTraffic + @androidx.compose.runtime.Composable + public fun TodayTraffic(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Summary.TodayTraffic else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Summary.TodayTraffic, *args) + public val WeekTraffic: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Summary.WeekTraffic + @androidx.compose.runtime.Composable + public fun WeekTraffic(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Summary.WeekTraffic else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Summary.WeekTraffic, *args) + public val Average: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Summary.Average + @androidx.compose.runtime.Composable + public fun Average(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Summary.Average else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Summary.Average, *args) + public val DayTrafficTip: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Summary.DayTrafficTip + @androidx.compose.runtime.Composable + public fun DayTrafficTip(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Summary.DayTrafficTip else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Summary.DayTrafficTip, *args) + } + public object Donut { + public val Other: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Donut.Other + @androidx.compose.runtime.Composable + public fun Other(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Donut.Other else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Donut.Other, *args) + } + public object Action { + public val Clear: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Action.Clear + @androidx.compose.runtime.Composable + public fun Clear(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Action.Clear else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Action.Clear, *args) + public val ClearSuccess: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Action.ClearSuccess + @androidx.compose.runtime.Composable + public fun ClearSuccess(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Action.ClearSuccess else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Action.ClearSuccess, *args) + } + public object Section { + public val Traffic: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Section.Traffic + @androidx.compose.runtime.Composable + public fun Traffic(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Section.Traffic else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Section.Traffic, *args) + public val TopApps: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Section.TopApps + @androidx.compose.runtime.Composable + public fun TopApps(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Section.TopApps else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Section.TopApps, *args) + public val TodayApps: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Section.TodayApps + @androidx.compose.runtime.Composable + public fun TodayApps(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Section.TodayApps else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Section.TodayApps, *args) + public val WeekApps: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Section.WeekApps + @androidx.compose.runtime.Composable + public fun WeekApps(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Section.WeekApps else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Section.WeekApps, *args) + public val SystemTraffic: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Section.SystemTraffic + @androidx.compose.runtime.Composable + public fun SystemTraffic(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Section.SystemTraffic else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Section.SystemTraffic, *args) + public val EmptyApps: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Section.EmptyApps + @androidx.compose.runtime.Composable + public fun EmptyApps(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Section.EmptyApps else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Section.EmptyApps, *args) + } + public object Metric { + public val Download: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Metric.Download + @androidx.compose.runtime.Composable + public fun Download(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Metric.Download else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Metric.Download, *args) + public val Upload: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Metric.Upload + @androidx.compose.runtime.Composable + public fun Upload(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Metric.Upload else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Metric.Upload, *args) + public val UsageLine: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Metric.UsageLine + @androidx.compose.runtime.Composable + public fun UsageLine(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Metric.UsageLine else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Metric.UsageLine, *args) + public val SortByName: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Metric.SortByName + @androidx.compose.runtime.Composable + public fun SortByName(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Metric.SortByName else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Metric.SortByName, *args) + public val SortByUsage: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Metric.SortByUsage + @androidx.compose.runtime.Composable + public fun SortByUsage(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Metric.SortByUsage else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Metric.SortByUsage, *args) + } + public object Weekday { + public val Mon: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Mon + @androidx.compose.runtime.Composable + public fun Mon(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Mon else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Mon, *args) + public val Tue: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Tue + @androidx.compose.runtime.Composable + public fun Tue(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Tue else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Tue, *args) + public val Wed: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Wed + @androidx.compose.runtime.Composable + public fun Wed(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Wed else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Wed, *args) + public val Thu: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Thu + @androidx.compose.runtime.Composable + public fun Thu(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Thu else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Thu, *args) + public val Fri: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Fri + @androidx.compose.runtime.Composable + public fun Fri(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Fri else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Fri, *args) + public val Sat: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Sat + @androidx.compose.runtime.Composable + public fun Sat(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Sat else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Sat, *args) + public val Sun: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Sun + @androidx.compose.runtime.Composable + public fun Sun(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Sun else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Sun, *args) + public val Today: String + get() = YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Today + @androidx.compose.runtime.Composable + public fun Today(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Today else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.TrafficStatistics.Weekday.Today, *args) + } + } + public object Util { + public object Error { + public val UnknownError: String + get() = YumeLocaleManager.activeStrings.Util.Error.UnknownError + @androidx.compose.runtime.Composable + public fun UnknownError(vararg args: Any?): String = + if (args.isEmpty()) YumeLocaleManager.activeStrings.Util.Error.UnknownError else String.format(java.util.Locale.getDefault(), YumeLocaleManager.activeStrings.Util.Error.UnknownError, *args) + } + } +} diff --git a/locale/src/ZhHansStrings.kt b/locale/src/ZhHansStrings.kt new file mode 100644 index 000000000..ff6657cc4 --- /dev/null +++ b/locale/src/ZhHansStrings.kt @@ -0,0 +1,30 @@ +package com.github.yumeyucca.yumebox.core.locale + +import cafe.adriel.lyricist.LyricistStrings + +@LyricistStrings(languageTag = "zh-CN", default = true) +public val ZhHansStrings: YumeStrings = YumeStrings( + About = ZhHansYumeStrings_About, + AccessControl = ZhHansYumeStrings_AccessControl, + AppSettings = ZhHansYumeStrings_AppSettings, + Component = ZhHansYumeStrings_Component, + Connection = ZhHansYumeStrings_Connection, + Editor = ZhHansYumeStrings_Editor, + Feature = ZhHansYumeStrings_Feature, + Home = ZhHansYumeStrings_Home, + Log = ZhHansYumeStrings_Log, + MetaFeature = ZhHansYumeStrings_MetaFeature, + NetworkSettings = ZhHansYumeStrings_NetworkSettings, + Onboarding = ZhHansYumeStrings_Onboarding, + OpenSourceLicenses = ZhHansYumeStrings_OpenSourceLicenses, + Override = ZhHansYumeStrings_Override, + ProfilesPage = ZhHansYumeStrings_ProfilesPage, + ProfilesVM = ZhHansYumeStrings_ProfilesVM, + Providers = ZhHansYumeStrings_Providers, + Proxy = ZhHansYumeStrings_Proxy, + Rules = ZhHansYumeStrings_Rules, + Service = ZhHansYumeStrings_Service, + Settings = ZhHansYumeStrings_Settings, + TrafficStatistics = ZhHansYumeStrings_TrafficStatistics, + Util = ZhHansYumeStrings_Util, +) diff --git a/locale/src/ZhStrings.kt b/locale/src/ZhStrings.kt new file mode 100644 index 000000000..58cf1ba0b --- /dev/null +++ b/locale/src/ZhStrings.kt @@ -0,0 +1,30 @@ +package com.github.yumeyucca.yumebox.core.locale + +import cafe.adriel.lyricist.LyricistStrings + +@LyricistStrings(languageTag = "zh-TW") +public val ZhStrings: YumeStrings = YumeStrings( + About = ZhYumeStrings_About, + AccessControl = ZhYumeStrings_AccessControl, + AppSettings = ZhYumeStrings_AppSettings, + Component = ZhYumeStrings_Component, + Connection = ZhYumeStrings_Connection, + Editor = ZhYumeStrings_Editor, + Feature = ZhYumeStrings_Feature, + Home = ZhYumeStrings_Home, + Log = ZhYumeStrings_Log, + MetaFeature = ZhYumeStrings_MetaFeature, + NetworkSettings = ZhYumeStrings_NetworkSettings, + Onboarding = ZhYumeStrings_Onboarding, + OpenSourceLicenses = ZhYumeStrings_OpenSourceLicenses, + Override = ZhYumeStrings_Override, + ProfilesPage = ZhYumeStrings_ProfilesPage, + ProfilesVM = ZhYumeStrings_ProfilesVM, + Providers = ZhYumeStrings_Providers, + Proxy = ZhYumeStrings_Proxy, + Rules = ZhYumeStrings_Rules, + Service = ZhYumeStrings_Service, + Settings = ZhYumeStrings_Settings, + TrafficStatistics = ZhYumeStrings_TrafficStatistics, + Util = ZhYumeStrings_Util, +) diff --git a/runtime/service/src/runtime/service/DialerReceiver.kt b/runtime/service/src/runtime/service/DialerReceiver.kt index 3998ec296..7815393d2 100644 --- a/runtime/service/src/runtime/service/DialerReceiver.kt +++ b/runtime/service/src/runtime/service/DialerReceiver.kt @@ -32,7 +32,7 @@ import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import com.github.yumeyucca.yumebox.runtime.api.Components import com.github.yumeyucca.yumebox.runtime.service.util.ServiceLogoIcons -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import timber.log.Timber class DialerReceiver : BroadcastReceiver() { diff --git a/runtime/service/src/runtime/service/ProxyTileService.kt b/runtime/service/src/runtime/service/ProxyTileService.kt index 5171a1a90..9157aa119 100644 --- a/runtime/service/src/runtime/service/ProxyTileService.kt +++ b/runtime/service/src/runtime/service/ProxyTileService.kt @@ -45,7 +45,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.cancel import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import timber.log.Timber @SuppressLint("NewApi") diff --git a/runtime/service/src/runtime/service/notification/MiuiIslandParams.kt b/runtime/service/src/runtime/service/notification/MiuiIslandParams.kt index 1a6afd340..ff6f5996d 100644 --- a/runtime/service/src/runtime/service/notification/MiuiIslandParams.kt +++ b/runtime/service/src/runtime/service/notification/MiuiIslandParams.kt @@ -22,7 +22,7 @@ package com.github.yumeyucca.yumebox.runtime.service.notification import org.json.JSONObject import java.util.concurrent.atomic.AtomicLong -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt /** * Builds the HyperOS Super Island payload that the system reads from the `miui.focus.param` diff --git a/runtime/service/src/runtime/service/notification/NotificationPresentation.kt b/runtime/service/src/runtime/service/notification/NotificationPresentation.kt index 4a1066ff3..bb97cd3ca 100644 --- a/runtime/service/src/runtime/service/notification/NotificationPresentation.kt +++ b/runtime/service/src/runtime/service/notification/NotificationPresentation.kt @@ -25,7 +25,7 @@ import com.github.yumeyucca.yumebox.common.util.formatSpeed import com.github.yumeyucca.yumebox.runtime.service.profile.Imported import java.time.Instant import java.time.ZoneId -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt /** What the ongoing notification renders. */ internal sealed class NotificationPresentation { diff --git a/runtime/service/src/runtime/service/notification/ServiceNotificationManager.kt b/runtime/service/src/runtime/service/notification/ServiceNotificationManager.kt index 0558fb796..6c7847a55 100644 --- a/runtime/service/src/runtime/service/notification/ServiceNotificationManager.kt +++ b/runtime/service/src/runtime/service/notification/ServiceNotificationManager.kt @@ -51,7 +51,7 @@ import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt class ServiceNotificationManager( private val service: Service, diff --git a/runtime/service/src/runtime/service/root/RootAccessSupport.kt b/runtime/service/src/runtime/service/root/RootAccessSupport.kt index ffbe4493e..bed8f354c 100644 --- a/runtime/service/src/runtime/service/root/RootAccessSupport.kt +++ b/runtime/service/src/runtime/service/root/RootAccessSupport.kt @@ -23,7 +23,7 @@ package com.github.yumeyucca.yumebox.runtime.service.root import com.topjohnwu.superuser.Shell import kotlinx.coroutines.InternalCoroutinesApi import kotlinx.coroutines.suspendCancellableCoroutine -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt object RootAccessSupport { // tryResume/completeResume (internal API): the libsu shell callback may fire after the diff --git a/settings.gradle.kts b/settings.gradle.kts index ad64d3e31..a3d9ee319 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -36,12 +36,7 @@ pluginManagement { maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap") maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev") maven("https://jitpack.io") - maven("https://maven.oom-wg.dev") { - content { includeGroupByRegex("ren\\.shiror\\.(fyl\\.fytxt|fvv)(\\..+)?") } - } - maven("https://maven.aliyun.com/nexus/content/repositories/releases/") { - content { excludeGroupByRegex("ren\\.shiror\\.(fyl\\.fytxt|fvv)(\\..+)?") } - } + maven("https://maven.aliyun.com/nexus/content/repositories/releases/") } } @@ -68,12 +63,7 @@ dependencyResolutionManagement { maven("https://jitpack.io") maven("https://raw.githubusercontent.com/MetaCubeX/maven-backup/main/releases") - maven("https://maven.oom-wg.dev") { - content { includeGroupByRegex("ren\\.shiror\\.(fyl\\.fytxt|fvv)(\\..+)?") } - } - maven("https://maven.aliyun.com/nexus/content/repositories/releases/") { - content { excludeGroupByRegex("ren\\.shiror\\.(fyl\\.fytxt|fvv)(\\..+)?") } - } + maven("https://maven.aliyun.com/nexus/content/repositories/releases/") } } diff --git a/ui/src/presentation/component/AppActionBottomSheet.kt b/ui/src/presentation/component/AppActionBottomSheet.kt index ba058c5aa..a83dd393b 100644 --- a/ui/src/presentation/component/AppActionBottomSheet.kt +++ b/ui/src/presentation/component/AppActionBottomSheet.kt @@ -34,7 +34,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.yume.Check import com.github.yumeyucca.yumebox.presentation.icon.yume.Close import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.IconButton import top.yukonga.miuix.kmp.layout.BottomSheetDefaults diff --git a/ui/src/presentation/component/AppConfirmDialog.kt b/ui/src/presentation/component/AppConfirmDialog.kt index 7a061351a..7b2367180 100644 --- a/ui/src/presentation/component/AppConfirmDialog.kt +++ b/ui/src/presentation/component/AppConfirmDialog.kt @@ -24,7 +24,7 @@ package com.github.yumeyucca.yumebox.presentation.component import androidx.compose.runtime.Composable -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt @Composable fun AppConfirmDialog( diff --git a/ui/src/presentation/component/AppDialogContent.kt b/ui/src/presentation/component/AppDialogContent.kt index 264c88d1e..2efe5b7ad 100644 --- a/ui/src/presentation/component/AppDialogContent.kt +++ b/ui/src/presentation/component/AppDialogContent.kt @@ -30,7 +30,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/ui/src/presentation/component/AppFormDialog.kt b/ui/src/presentation/component/AppFormDialog.kt index a39fbd41c..0ad72aae8 100644 --- a/ui/src/presentation/component/AppFormDialog.kt +++ b/ui/src/presentation/component/AppFormDialog.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalSoftwareKeyboardController import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/ui/src/presentation/component/BottomBar.kt b/ui/src/presentation/component/BottomBar.kt index 5226bd10a..8636e2dec 100644 --- a/ui/src/presentation/component/BottomBar.kt +++ b/ui/src/presentation/component/BottomBar.kt @@ -71,7 +71,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.job import kotlinx.coroutines.launch -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.theme.MiuixTheme import kotlin.math.abs diff --git a/ui/src/presentation/component/ConfigInput.kt b/ui/src/presentation/component/ConfigInput.kt index 15b19a3e0..c57b2faf6 100644 --- a/ui/src/presentation/component/ConfigInput.kt +++ b/ui/src/presentation/component/ConfigInput.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.TextFieldValue import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Button import top.yukonga.miuix.kmp.basic.HorizontalDivider import top.yukonga.miuix.kmp.basic.Text diff --git a/ui/src/presentation/component/ConfirmDialog.kt b/ui/src/presentation/component/ConfirmDialog.kt index d6d88324d..5c001acf7 100644 --- a/ui/src/presentation/component/ConfirmDialog.kt +++ b/ui/src/presentation/component/ConfirmDialog.kt @@ -26,7 +26,7 @@ package com.github.yumeyucca.yumebox.presentation.component import androidx.compose.runtime.Composable import com.github.yumeyucca.yumebox.presentation.util.DialogState import com.github.yumeyucca.yumebox.presentation.util.rememberDialogVisibilityState -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt @Composable fun ConfirmDialog( diff --git a/ui/src/presentation/component/CountryFlagCircle.kt b/ui/src/presentation/component/CountryFlagCircle.kt index 96e250676..5bc305b2e 100644 --- a/ui/src/presentation/component/CountryFlagCircle.kt +++ b/ui/src/presentation/component/CountryFlagCircle.kt @@ -42,7 +42,7 @@ import com.github.panpf.sketch.request.ImageRequest import com.github.yumeyucca.yumebox.common.util.LocaleUtil import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt @Composable fun CountryFlagCircle(countryCode: String?, modifier: Modifier = Modifier, size: Dp = UiDp.dp18) { diff --git a/ui/src/presentation/component/DialogButtonRow.kt b/ui/src/presentation/component/DialogButtonRow.kt index 38202c2b0..bb5afca5f 100644 --- a/ui/src/presentation/component/DialogButtonRow.kt +++ b/ui/src/presentation/component/DialogButtonRow.kt @@ -30,7 +30,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Button import top.yukonga.miuix.kmp.basic.ButtonDefaults import top.yukonga.miuix.kmp.basic.Text diff --git a/ui/src/presentation/component/EditBottomSheet.kt b/ui/src/presentation/component/EditBottomSheet.kt index afd12f9cd..35f892811 100644 --- a/ui/src/presentation/component/EditBottomSheet.kt +++ b/ui/src/presentation/component/EditBottomSheet.kt @@ -31,7 +31,7 @@ import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.text.input.TextFieldValue import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Button import top.yukonga.miuix.kmp.basic.ButtonDefaults import top.yukonga.miuix.kmp.basic.Text diff --git a/ui/src/presentation/component/LoadingAnimation.kt b/ui/src/presentation/component/LoadingAnimation.kt index ae640c2d2..82a6196fd 100644 --- a/ui/src/presentation/component/LoadingAnimation.kt +++ b/ui/src/presentation/component/LoadingAnimation.kt @@ -40,7 +40,7 @@ import androidx.compose.ui.unit.sp import com.github.yumeyucca.yumebox.presentation.theme.AnimationSpecs import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme diff --git a/ui/src/presentation/component/MessageHost.kt b/ui/src/presentation/component/MessageHost.kt index 6f489f056..133071327 100644 --- a/ui/src/presentation/component/MessageHost.kt +++ b/ui/src/presentation/component/MessageHost.kt @@ -32,7 +32,7 @@ import androidx.compose.ui.Modifier import com.github.yumeyucca.yumebox.core.util.PollingTimerSpecs import com.github.yumeyucca.yumebox.core.util.PollingTimers import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.preference.ArrowPreference enum class MessageType { diff --git a/ui/src/presentation/component/NullableSelector.kt b/ui/src/presentation/component/NullableSelector.kt index 0d2dba779..214dd5e8d 100644 --- a/ui/src/presentation/component/NullableSelector.kt +++ b/ui/src/presentation/component/NullableSelector.kt @@ -24,7 +24,7 @@ package com.github.yumeyucca.yumebox.presentation.component import androidx.compose.runtime.Composable -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.preference.WindowDropdownPreference @Composable diff --git a/ui/src/presentation/component/ProfileCard.kt b/ui/src/presentation/component/ProfileCard.kt index 94ff2f3de..3642cb6f1 100644 --- a/ui/src/presentation/component/ProfileCard.kt +++ b/ui/src/presentation/component/ProfileCard.kt @@ -42,7 +42,7 @@ import com.github.yumeyucca.yumebox.presentation.icon.yume.Share import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.util.* import com.github.yumeyucca.yumebox.runtime.api.Profile -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.* import top.yukonga.miuix.kmp.theme.MiuixTheme import java.io.File diff --git a/ui/src/presentation/component/SearchStatusUi.kt b/ui/src/presentation/component/SearchStatusUi.kt index 9bc81e34f..e74a26e51 100644 --- a/ui/src/presentation/component/SearchStatusUi.kt +++ b/ui/src/presentation/component/SearchStatusUi.kt @@ -47,7 +47,7 @@ import com.github.yumeyucca.yumebox.presentation.theme.AppTheme import com.github.yumeyucca.yumebox.presentation.theme.Sizes import com.github.yumeyucca.yumebox.presentation.theme.Spacing import com.github.yumeyucca.yumebox.presentation.theme.UiDp -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.InputField import top.yukonga.miuix.kmp.basic.Text diff --git a/ui/src/presentation/theme/Theme.kt b/ui/src/presentation/theme/Theme.kt index c0f05ddd0..b57b8dac9 100644 --- a/ui/src/presentation/theme/Theme.kt +++ b/ui/src/presentation/theme/Theme.kt @@ -29,7 +29,7 @@ import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.compositionLocalOf import androidx.compose.runtime.remember import com.github.yumeyucca.yumebox.data.model.ThemeMode -import tf.gal.shirosu.fyl.fytxt.compose.FYTxtProvider +import com.github.yumeyucca.yumebox.core.locale.ProvideYumeStrings import top.yukonga.miuix.kmp.theme.MiuixTheme internal val LocalPlatformSystemUiEffect = compositionLocalOf<@Composable () -> Unit> { {} } @@ -45,7 +45,7 @@ fun YumeTheme( opacity: Opacity = Opacity(), appColors: AppColors = AppColors(), content: @Composable () -> Unit, -) = FYTxtProvider { +) = ProvideYumeStrings { LocalPlatformSystemUiEffect.current() val effectiveThemeMode = themeMode ?: ThemeMode.Auto val isDark = diff --git a/ui/src/presentation/util/ProfileUiExtensions.kt b/ui/src/presentation/util/ProfileUiExtensions.kt index 3ff7aa554..c125f7cdf 100644 --- a/ui/src/presentation/util/ProfileUiExtensions.kt +++ b/ui/src/presentation/util/ProfileUiExtensions.kt @@ -24,7 +24,7 @@ package com.github.yumeyucca.yumebox.presentation.util import com.github.yumeyucca.yumebox.common.util.ByteFormatter import com.github.yumeyucca.yumebox.runtime.api.Profile -import tf.gal.yumebox.locale.YumeTxt +import com.github.yumeyucca.yumebox.core.locale.YumeTxt import java.io.File val Profile.enabled: Boolean From 5222ee0d12556cfbafd58c600e254ccae1082bcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=A6=E3=83=A1=E3=83=AA=E3=83=A9?= Date: Sun, 27 Sep 2026 20:08:25 +0800 Subject: [PATCH 2/2] fix(locale): normalize language tags to lowercase and add zh-mo --- .github/workflows/qodana_code_quality.yml | 4 ++-- app/src/common/util/AppLanguageManager.kt | 16 +++++++++++++--- locale/build.gradle.kts | 2 +- locale/src/YumeTxt.kt | 21 ++++++++++++--------- locale/src/ZhHansStrings.kt | 2 +- locale/src/ZhStrings.kt | 2 +- 6 files changed, 30 insertions(+), 17 deletions(-) diff --git a/.github/workflows/qodana_code_quality.yml b/.github/workflows/qodana_code_quality.yml index 0410bb93c..80d1c6bc1 100644 --- a/.github/workflows/qodana_code_quality.yml +++ b/.github/workflows/qodana_code_quality.yml @@ -38,8 +38,8 @@ jobs: run: | set -eu chmod +x gradlew - ./gradlew --no-daemon :locale:generateFYTxt - test -s locale/build/generated/fytxt/kotlin/tf/gal/yumebox/locale/fytxt.kt + ./gradlew --no-daemon :locale:kspDebugKotlin + test -s locale/build/generated/ksp/debug/kotlin/cafe/adriel/lyricist/Strings.kt - name: 'Qodana Scan' uses: JetBrains/qodana-action@4861e015da555e86a72b862892aba6c2b93e6891 # v2026.1 env: diff --git a/app/src/common/util/AppLanguageManager.kt b/app/src/common/util/AppLanguageManager.kt index 64f6a445e..b63177072 100644 --- a/app/src/common/util/AppLanguageManager.kt +++ b/app/src/common/util/AppLanguageManager.kt @@ -59,9 +59,19 @@ object AppLanguageManager { Locale.setDefault(locale) LocaleUtil.setCurrentLocale(locale) val lyricistTag = when (language) { - AppLanguage.System -> locale.toLanguageTag() - AppLanguage.Zh -> "zh-CN" - AppLanguage.ZhHant -> "zh-TW" + AppLanguage.System -> + if (locale.language.equals("zh", ignoreCase = true) && + (locale.script.equals("Hant", ignoreCase = true) || + locale.country.equals("TW", ignoreCase = true) || + locale.country.equals("HK", ignoreCase = true) || + locale.country.equals("MO", ignoreCase = true)) + ) { + "zh-tw" + } else { + locale.toLanguageTag().lowercase() + } + AppLanguage.Zh -> "zh-cn" + AppLanguage.ZhHant -> "zh-tw" AppLanguage.En -> "en" AppLanguage.Ja -> "ja" AppLanguage.Ru -> "ru" diff --git a/locale/build.gradle.kts b/locale/build.gradle.kts index b427f9dd1..7dcb91e13 100644 --- a/locale/build.gradle.kts +++ b/locale/build.gradle.kts @@ -36,6 +36,6 @@ dependencies { implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.compose.runtime) implementation(libs.androidx.compose.ui) - implementation(libs.lyricist) + api(libs.lyricist) ksp(libs.lyricist.processor) } diff --git a/locale/src/YumeTxt.kt b/locale/src/YumeTxt.kt index e3f52b0fb..01f80524e 100644 --- a/locale/src/YumeTxt.kt +++ b/locale/src/YumeTxt.kt @@ -12,12 +12,14 @@ public val LocalYumeStrings: ProvidableCompositionLocal = staticCompositionLocalOf { ZhHansStrings } public val yumeStrings: Map = mapOf( - "zh-CN" to ZhHansStrings, - "zh-Hans" to ZhHansStrings, + "zh-cn" to ZhHansStrings, + "zh-hans" to ZhHansStrings, + "zh-sg" to ZhHansStrings, "zh" to ZhHansStrings, - "zh-TW" to ZhStrings, - "zh-Hant" to ZhStrings, - "zh-HK" to ZhStrings, + "zh-tw" to ZhStrings, + "zh-hant" to ZhStrings, + "zh-hk" to ZhStrings, + "zh-mo" to ZhStrings, "en" to EnStrings, "ja" to JaStrings, "ru" to RuStrings, @@ -29,8 +31,8 @@ public val currentYumeStrings: YumeStrings @Composable public fun rememberYumeStrings( - defaultLanguageTag: String = "zh-CN", - currentLanguageTag: String = java.util.Locale.getDefault().toLanguageTag(), + defaultLanguageTag: String = "zh-cn", + currentLanguageTag: String = java.util.Locale.getDefault().toLanguageTag().lowercase(), ): Lyricist = rememberStrings(yumeStrings, defaultLanguageTag, currentLanguageTag) @@ -48,8 +50,9 @@ public object YumeLocaleManager { internal set public fun updateLocale(tag: String) { - val resolved = yumeStrings[tag] - ?: yumeStrings[tag.split("-")[0]] + val lower = tag.lowercase() + val resolved = yumeStrings[lower] + ?: yumeStrings[lower.split("-")[0]] ?: ZhHansStrings activeStrings = resolved } diff --git a/locale/src/ZhHansStrings.kt b/locale/src/ZhHansStrings.kt index ff6657cc4..5a2229b60 100644 --- a/locale/src/ZhHansStrings.kt +++ b/locale/src/ZhHansStrings.kt @@ -2,7 +2,7 @@ package com.github.yumeyucca.yumebox.core.locale import cafe.adriel.lyricist.LyricistStrings -@LyricistStrings(languageTag = "zh-CN", default = true) +@LyricistStrings(languageTag = "zh-cn", default = true) public val ZhHansStrings: YumeStrings = YumeStrings( About = ZhHansYumeStrings_About, AccessControl = ZhHansYumeStrings_AccessControl, diff --git a/locale/src/ZhStrings.kt b/locale/src/ZhStrings.kt index 58cf1ba0b..507d023e4 100644 --- a/locale/src/ZhStrings.kt +++ b/locale/src/ZhStrings.kt @@ -2,7 +2,7 @@ package com.github.yumeyucca.yumebox.core.locale import cafe.adriel.lyricist.LyricistStrings -@LyricistStrings(languageTag = "zh-TW") +@LyricistStrings(languageTag = "zh-tw") public val ZhStrings: YumeStrings = YumeStrings( About = ZhYumeStrings_About, AccessControl = ZhYumeStrings_AccessControl,