From 7dadb10623ab2222cd33e7637bf75ae95a1f7ea3 Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 28 May 2026 13:39:44 +0800 Subject: [PATCH 1/7] Add files via upload --- .../java/dev/sebaubuntu/athena/viewmodels/SettingsViewModel.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/dev/sebaubuntu/athena/viewmodels/SettingsViewModel.kt b/app/src/main/java/dev/sebaubuntu/athena/viewmodels/SettingsViewModel.kt index 64e386cc..2812c277 100644 --- a/app/src/main/java/dev/sebaubuntu/athena/viewmodels/SettingsViewModel.kt +++ b/app/src/main/java/dev/sebaubuntu/athena/viewmodels/SettingsViewModel.kt @@ -35,6 +35,7 @@ class SettingsViewModel( // General val theme = preferencesRepository.theme val dynamicColors = preferencesRepository.dynamicColors + val language = preferencesRepository.language // Export data private val _exportDataStatus = MutableSharedFlow() From f42d45423b59649bbb3e9b720a8bff029847a746 Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 28 May 2026 13:58:34 +0800 Subject: [PATCH 2/7] Add files via upload --- .../sebaubuntu/athena/AthenaApplication.kt | 48 ++++++ .../dev/sebaubuntu/athena/MainActivity.kt | 9 ++ .../repositories/PreferencesRepository.kt | 5 + .../athena/ui/screens/SettingsScreen.kt | 137 ++++++++++++++++++ 4 files changed, 199 insertions(+) diff --git a/app/src/main/java/dev/sebaubuntu/athena/AthenaApplication.kt b/app/src/main/java/dev/sebaubuntu/athena/AthenaApplication.kt index 6fe0882d..2d01d11c 100644 --- a/app/src/main/java/dev/sebaubuntu/athena/AthenaApplication.kt +++ b/app/src/main/java/dev/sebaubuntu/athena/AthenaApplication.kt @@ -6,11 +6,16 @@ package dev.sebaubuntu.athena import android.app.Application +import android.content.Context +import android.content.res.Configuration import com.google.android.material.color.DynamicColors +import dev.sebaubuntu.athena.models.Preference import dev.sebaubuntu.athena.repositories.PreferencesRepository import dev.sebaubuntu.athena.utils.ModulesManager import dev.sebaubuntu.athena.utils.PreferencesManager import kotlinx.coroutines.MainScope +import kotlinx.coroutines.runBlocking +import java.util.Locale class AthenaApplication : Application() { val coroutineScope = MainScope() @@ -26,4 +31,47 @@ class AthenaApplication : Application() { DynamicColors.applyToActivitiesIfAvailable(this) } + + override fun attachBaseContext(base: Context) { + val languageTag = try { + runBlocking { + preferencesManager.getValue( + Preference.Companion.primitivePreference("language", "system") + ) + } + } catch (e: Exception) { + "system" + } + + savedLanguageTag = languageTag + + super.attachBaseContext( + wrapContextWithLocale(base, languageTag) + ) + } + + companion object { + @Volatile + var savedLanguageTag: String = "system" + + fun wrapContextWithLocale(context: Context, languageTag: String): Context { + if (languageTag == "system") return context + + val config = Configuration(context.resources.configuration) + config.setLocale(localeFromTag(languageTag)) + return context.createConfigurationContext(config) + } + + private fun localeFromTag(tag: String): Locale { + return when (tag) { + "id" -> Locale("in", "ID") + "he" -> Locale("iw", "IL") + "zh-CN" -> Locale("zh", "CN") + "zh-TW" -> Locale("zh", "TW") + "pt-BR" -> Locale("pt", "BR") + "pt-PT" -> Locale("pt", "PT") + else -> Locale(tag) + } + } + } } diff --git a/app/src/main/java/dev/sebaubuntu/athena/MainActivity.kt b/app/src/main/java/dev/sebaubuntu/athena/MainActivity.kt index dd55de1c..79b7329c 100644 --- a/app/src/main/java/dev/sebaubuntu/athena/MainActivity.kt +++ b/app/src/main/java/dev/sebaubuntu/athena/MainActivity.kt @@ -5,6 +5,7 @@ package dev.sebaubuntu.athena +import android.content.Context import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent @@ -17,6 +18,14 @@ import dev.sebaubuntu.athena.utils.PermissionsManager class MainActivity : ComponentActivity() { private val permissionsManager = PermissionsManager(this) + override fun attachBaseContext(newBase: Context) { + super.attachBaseContext( + AthenaApplication.wrapContextWithLocale( + newBase, AthenaApplication.savedLanguageTag + ) + ) + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/dev/sebaubuntu/athena/repositories/PreferencesRepository.kt b/app/src/main/java/dev/sebaubuntu/athena/repositories/PreferencesRepository.kt index 6ab3fb04..98e77e0e 100644 --- a/app/src/main/java/dev/sebaubuntu/athena/repositories/PreferencesRepository.kt +++ b/app/src/main/java/dev/sebaubuntu/athena/repositories/PreferencesRepository.kt @@ -40,5 +40,10 @@ class PreferencesRepository( true, ).asPreferenceHolder() + val language = primitivePreference( + "language", + "system", + ).asPreferenceHolder() + private fun Preference.asPreferenceHolder() = PreferenceHolder(this) } diff --git a/app/src/main/java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt b/app/src/main/java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt index 35c1b257..e6a58b29 100644 --- a/app/src/main/java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt +++ b/app/src/main/java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt @@ -7,18 +7,27 @@ package dev.sebaubuntu.athena.ui.screens import android.content.Intent import android.os.Build +import androidx.activity.ComponentActivity import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.DrawableRes import androidx.annotation.StringRes +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.selection.selectable +import androidx.compose.foundation.selection.selectableGroup +import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialogDefaults import androidx.compose.material3.BasicAlertDialog +import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -26,24 +35,30 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.ListItem import androidx.compose.material3.ListItemDefaults import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.RadioButton import androidx.compose.material3.SnackbarResult import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.dp import androidx.core.net.toUri import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel +import dev.sebaubuntu.athena.AthenaApplication import dev.sebaubuntu.athena.R import dev.sebaubuntu.athena.core.models.Result import dev.sebaubuntu.athena.models.Theme @@ -54,6 +69,31 @@ import dev.sebaubuntu.athena.ui.composables.PreferenceCategoryCard import dev.sebaubuntu.athena.ui.composables.PreferenceListItem import dev.sebaubuntu.athena.ui.composables.SwitchPreferenceListItem import dev.sebaubuntu.athena.viewmodels.SettingsViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import java.util.Locale + +private val languageTags = listOf( + "system", "af", "ar", "ca", "cs", "da", "de", "el", "en", "eo", "es", + "fa", "fi", "fr", "hi", "hu", "id", "it", "he", "ja", "ko", "nl", "no", + "pl", "pt-BR", "pt-PT", "ro", "ru", "sr", "sv", "ta", "tr", "uk", "vi", + "zh-CN", "zh-TW" +) + +private fun languageDisplayName(tag: String): String { + if (tag == "system") return "System default" + val locale = when (tag) { + "id" -> Locale("in", "ID") + "he" -> Locale("iw", "IL") + "zh-CN" -> Locale("zh", "CN") + "zh-TW" -> Locale("zh", "TW") + "pt-BR" -> Locale("pt", "BR") + "pt-PT" -> Locale("pt", "PT") + else -> Locale(tag) + } + return locale.getDisplayName(locale) +} /** * App settings screen. @@ -84,6 +124,11 @@ fun SettingsScreen( PreferenceCategoryCard( titleStringResId = R.string.settings_general, ) { + LanguagePreferenceListItem( + preferenceHolder = settingsViewModel.language, + onPreferenceChange = settingsViewModel::setPreferenceValue, + ) + EnumPreferenceListItem( preferenceHolder = settingsViewModel.theme, onPreferenceChange = settingsViewModel::setPreferenceValue, @@ -122,6 +167,98 @@ fun SettingsScreen( } } +@Composable +private fun LanguagePreferenceListItem( + preferenceHolder: dev.sebaubuntu.athena.repositories.PreferencesRepository.PreferenceHolder, + onPreferenceChange: (dev.sebaubuntu.athena.repositories.PreferencesRepository.PreferenceHolder, String) -> Unit, +) { + val currentTag by preferenceHolder.collectAsStateWithLifecycle("system") + var dialogOpened by remember { mutableStateOf(false) } + val scope = rememberCoroutineScope() + val context = LocalContext.current + + if (dialogOpened) { + var selectedTag by remember { mutableStateOf(currentTag) } + + AlertDialog( + onDismissRequest = { dialogOpened = false }, + confirmButton = { + Button( + onClick = { + if (selectedTag != currentTag) { + scope.launch(Dispatchers.IO) { + preferenceHolder.setValue(selectedTag) + AthenaApplication.savedLanguageTag = selectedTag + withContext(Dispatchers.Main) { + (context as ComponentActivity).recreate() + } + } + } + dialogOpened = false + } + ) { + Text(text = stringResource(android.R.string.ok)) + } + }, + dismissButton = { + Button( + onClick = { dialogOpened = false } + ) { + Text(text = stringResource(android.R.string.cancel)) + } + }, + title = { + Text(text = "Language") + }, + text = { + Column( + modifier = Modifier + .fillMaxWidth() + .selectableGroup(), + ) { + languageTags.forEach { tag -> + Row( + modifier = Modifier + .fillMaxWidth() + .height(48.dp) + .selectable( + selected = (tag == selectedTag), + onClick = { selectedTag = tag }, + role = Role.RadioButton + ), + verticalAlignment = Alignment.CenterVertically, + ) { + RadioButton( + selected = tag == selectedTag, + onClick = null, + ) + Text( + text = languageDisplayName(tag), + modifier = Modifier.padding(start = 16.dp), + color = MaterialTheme.colorScheme.onSurface, + style = MaterialTheme.typography.bodyLarge, + ) + } + } + } + }, + ) + } + + ListItem( + headlineContent = { + Text(text = "Language") + }, + supportingContent = { + Text(text = languageDisplayName(currentTag)) + }, + modifier = Modifier.clickable { dialogOpened = true }, + colors = ListItemDefaults.colors( + containerColor = Color.Transparent, + ), + ) +} + @OptIn(ExperimentalMaterial3Api::class) @Composable private fun ExportDataCard( From f66d11aff79dad33f3d3cdf7017ef6cd25da86d6 Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 28 May 2026 14:38:00 +0800 Subject: [PATCH 3/7] Add files via upload From 60b7fc5a0dc91debc14168866b84c3cd310f0902 Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 28 May 2026 15:16:55 +0800 Subject: [PATCH 4/7] Add files via upload From a91aee3d7e7b0a932bc5c62d6f3ee346b60be277 Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 28 May 2026 15:33:08 +0800 Subject: [PATCH 5/7] Add files via upload --- .../athena/ui/screens/SettingsScreen.kt | 139 +++++++++++------- 1 file changed, 82 insertions(+), 57 deletions(-) diff --git a/app/src/main/java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt b/app/src/main/java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt index e6a58b29..02047e40 100644 --- a/app/src/main/java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt +++ b/app/src/main/java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt @@ -13,15 +13,18 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.DrawableRes import androidx.annotation.StringRes import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.selection.selectable import androidx.compose.foundation.selection.selectableGroup import androidx.compose.material3.AlertDialog @@ -39,6 +42,7 @@ import androidx.compose.material3.RadioButton import androidx.compose.material3.SnackbarResult import androidx.compose.material3.Surface import androidx.compose.material3.Text +import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -180,69 +184,90 @@ private fun LanguagePreferenceListItem( if (dialogOpened) { var selectedTag by remember { mutableStateOf(currentTag) } - AlertDialog( - onDismissRequest = { dialogOpened = false }, - confirmButton = { - Button( - onClick = { - if (selectedTag != currentTag) { - scope.launch(Dispatchers.IO) { - preferenceHolder.setValue(selectedTag) - AthenaApplication.savedLanguageTag = selectedTag - withContext(Dispatchers.Main) { - (context as ComponentActivity).recreate() - } + // 使用 BasicAlertDialog 替代 AlertDialog 以支持滚动 + BasicAlertDialog( + onDismissRequest = { dialogOpened = false } + ) { + Surface( + modifier = Modifier + .fillMaxWidth(0.9f) + .heightIn(max = 500.dp), + shape = MaterialTheme.shapes.large, + tonalElevation = AlertDialogDefaults.TonalElevation, + ) { + Column( + modifier = Modifier.fillMaxSize() + ) { + // 标题 + Text( + text = "Language", + style = MaterialTheme.typography.headlineSmall, + modifier = Modifier.padding(20.dp) + ) + + // 可滚动的语言列表 + LazyColumn( + modifier = Modifier.weight(1f), + ) { + items(languageTags) { tag -> + Row( + modifier = Modifier + .fillMaxWidth() + .height(48.dp) + .selectable( + selected = (tag == selectedTag), + onClick = { selectedTag = tag }, + role = Role.RadioButton + ) + .padding(horizontal = 20.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + RadioButton( + selected = tag == selectedTag, + onClick = null, + ) + Text( + text = languageDisplayName(tag), + modifier = Modifier.padding(start = 16.dp), + color = MaterialTheme.colorScheme.onSurface, + style = MaterialTheme.typography.bodyLarge, + ) } } - dialogOpened = false } - ) { - Text(text = stringResource(android.R.string.ok)) - } - }, - dismissButton = { - Button( - onClick = { dialogOpened = false } - ) { - Text(text = stringResource(android.R.string.cancel)) - } - }, - title = { - Text(text = "Language") - }, - text = { - Column( - modifier = Modifier - .fillMaxWidth() - .selectableGroup(), - ) { - languageTags.forEach { tag -> - Row( - modifier = Modifier - .fillMaxWidth() - .height(48.dp) - .selectable( - selected = (tag == selectedTag), - onClick = { selectedTag = tag }, - role = Role.RadioButton - ), - verticalAlignment = Alignment.CenterVertically, + + // 按钮区域 + Row( + modifier = Modifier + .fillMaxWidth() + .padding(8.dp), + horizontalArrangement = Arrangement.End + ) { + TextButton( + onClick = { dialogOpened = false } ) { - RadioButton( - selected = tag == selectedTag, - onClick = null, - ) - Text( - text = languageDisplayName(tag), - modifier = Modifier.padding(start = 16.dp), - color = MaterialTheme.colorScheme.onSurface, - style = MaterialTheme.typography.bodyLarge, - ) + Text(stringResource(android.R.string.cancel)) + } + TextButton( + onClick = { + if (selectedTag != currentTag) { + scope.launch(Dispatchers.IO) { + preferenceHolder.setValue(selectedTag) + AthenaApplication.savedLanguageTag = selectedTag + withContext(Dispatchers.Main) { + (context as ComponentActivity).recreate() + } + } + } + dialogOpened = false + } + ) { + Text(stringResource(android.R.string.ok)) } } } - }, - ) + } + } } ListItem( @@ -466,4 +491,4 @@ private fun AboutLinkIconButton( contentDescription = stringResource(nameStringResId), ) } -} +} \ No newline at end of file From 0e4185074359d1d46db90f58929009d15a18819e Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 28 May 2026 15:40:14 +0800 Subject: [PATCH 6/7] Add files via upload --- .../java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/src/main/java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt b/app/src/main/java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt index 02047e40..ca465675 100644 --- a/app/src/main/java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt +++ b/app/src/main/java/dev/sebaubuntu/athena/ui/screens/SettingsScreen.kt @@ -27,7 +27,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.selection.selectable import androidx.compose.foundation.selection.selectableGroup -import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialogDefaults import androidx.compose.material3.BasicAlertDialog import androidx.compose.material3.Button @@ -171,6 +170,7 @@ fun SettingsScreen( } } +@OptIn(ExperimentalMaterial3Api::class) @Composable private fun LanguagePreferenceListItem( preferenceHolder: dev.sebaubuntu.athena.repositories.PreferencesRepository.PreferenceHolder, @@ -184,7 +184,6 @@ private fun LanguagePreferenceListItem( if (dialogOpened) { var selectedTag by remember { mutableStateOf(currentTag) } - // 使用 BasicAlertDialog 替代 AlertDialog 以支持滚动 BasicAlertDialog( onDismissRequest = { dialogOpened = false } ) { @@ -198,14 +197,12 @@ private fun LanguagePreferenceListItem( Column( modifier = Modifier.fillMaxSize() ) { - // 标题 Text( text = "Language", style = MaterialTheme.typography.headlineSmall, modifier = Modifier.padding(20.dp) ) - // 可滚动的语言列表 LazyColumn( modifier = Modifier.weight(1f), ) { @@ -236,7 +233,6 @@ private fun LanguagePreferenceListItem( } } - // 按钮区域 Row( modifier = Modifier .fillMaxWidth() From 7870e7570f4b7a6d71378bafa6bf18380e136d5f Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 28 May 2026 17:29:25 +0800 Subject: [PATCH 7/7] Add files via upload --- app/src/main/res/values-zh-rCN/strings.xml | 66 +++++--- core/src/main/res/values-zh-rCN/strings.xml | 15 +- .../src/main/res/values-zh-rCN/strings.xml | 117 +++++++------- .../src/main/res/values-zh-rCN/strings.xml | 33 ++-- .../src/main/res/values-zh-rCN/strings.xml | 14 +- .../src/main/res/values-zh-rCN/strings.xml | 74 ++++----- .../src/main/res/values-zh-rCN/strings.xml | 68 ++++---- .../src/main/res/values-zh-rCN/strings.xml | 120 +++++++------- .../src/main/res/values-zh-rCN/strings.xml | 37 +++-- .../src/main/res/values-zh-rCN/strings.xml | 79 ++++++---- .../src/main/res/values-zh-rCN/strings.xml | 26 +-- .../src/main/res/values-zh-rCN/strings.xml | 100 ++++++------ .../src/main/res/values-zh-rCN/strings.xml | 61 +++++--- .../src/main/res/values-zh-rCN/strings.xml | 78 ++++----- .../src/main/res/values-zh-rCN/strings.xml | 104 ++++++------ .../src/main/res/values-zh-rCN/strings.xml | 39 ++--- .../src/main/res/values-zh-rCN/strings.xml | 19 +-- .../src/main/res/values-zh-rCN/strings.xml | 22 +-- .../src/main/res/values-zh-rCN/strings.xml | 19 ++- .../src/main/res/values-zh-rCN/strings.xml | 19 ++- .../src/main/res/values-zh-rCN/strings.xml | 148 +++++++++--------- .../src/main/res/values-zh-rCN/strings.xml | 4 +- .../src/main/res/values-zh-rCN/strings.xml | 49 +++--- .../src/main/res/values-zh-rCN/strings.xml | 4 +- .../src/main/res/values-zh-rCN/strings.xml | 23 +-- .../src/main/res/values-zh-rCN/strings.xml | 43 ++--- .../src/main/res/values-zh-rCN/strings.xml | 30 ++-- .../src/main/res/values-zh-rCN/strings.xml | 42 ++--- .../src/main/res/values-zh-rCN/strings.xml | 17 +- 29 files changed, 806 insertions(+), 664 deletions(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 752c1acd..05a57480 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -5,36 +5,54 @@ --> + Athena + - Go back + 返回 + - Permissions not granted: %1$s - Request permissions - Permissions denied: %1$s. Open the app settings to grant them + 未授予权限:%1$s + 请求权限 + 权限被拒绝:%1$s。请打开应用设置以授予权限 + - Settings - General - Theme - Dynamic colors - Enable dynamic colors - About - Developer - Application - Repository - Website + 设置 + 通用 + 主题 + 动态颜色 + 启用动态颜色 + 关于 + 开发者 + 应用 + 仓库 + 网站 + + GitHub + Mastodon + Twitter / 𝕏 + + SebaUbuntu + https://github.com/SebaUbuntu + https://fosstodon.org/@SebaUbuntu + https://x.com/SebaUbuntu + + https://sebaubuntu.dev/athena.html + https://github.com/SebaUbuntu/Athena + - System default - Light - Dark + 跟随系统 + 浅色 + 深色 + - Export data - Do you want to export data as a JSON file? The app will ask you for missing permissions if needed - Exporting data… - Not all permissions have been granted, cannot export data - Data exported, the file may contain personal or device\'s confidential data, don\'t share to anyone unless you know what you\'re doing - Open file - Error while exporting data: %s + 导出数据 + 是否要将数据导出为 JSON 文件?如有需要,应用会请求缺少的权限 + 正在导出数据… + 尚未授予所有权限,无法导出数据 + 数据已导出,文件中可能包含个人或设备的机密信息,除非你清楚自己在做什么,否则不要分享给任何人 + 打开文件 + 导出数据时出错:%s diff --git a/core/src/main/res/values-zh-rCN/strings.xml b/core/src/main/res/values-zh-rCN/strings.xml index a1d8e50f..eda55f5d 100644 --- a/core/src/main/res/values-zh-rCN/strings.xml +++ b/core/src/main/res/values-zh-rCN/strings.xml @@ -5,12 +5,13 @@ --> - Yes - No - Unknown - Unknown value %s - Unknown value %1$s (%2$d) - None + + + 未知 + 未知值 %s + 未知值 %1$s(%2$d) + + - General + 通用 diff --git a/module-audio/src/main/res/values-zh-rCN/strings.xml b/module-audio/src/main/res/values-zh-rCN/strings.xml index d6ff61e8..a57baecc 100644 --- a/module-audio/src/main/res/values-zh-rCN/strings.xml +++ b/module-audio/src/main/res/values-zh-rCN/strings.xml @@ -5,65 +5,74 @@ --> - Audio - Audio info - Current audio mode - Fixed volume - Call screening mode supported - Spatializer - Available - Enabled - Audio devices + 音频 + 音频信息 + 当前音频模式 + 固定音量 + 支持来电筛选模式 + 空间音效 + 可用 + 已启用 + 音频设备 + ID - Product name - Address - Type - Role - Channel counts - Channel masks - Channel index masks - Sample rates - Audio descriptors + 产品名称 + 地址 + 类型 + 角色 + 通道数 + 通道掩码 + 通道索引掩码 + 采样率 + 音频描述符 + - Sink/source - Sink - Source + 接收/源 + 接收 + + - Normal - Ringtone - In call - In communication - Call screening - Call redirect - Communication redirect - Unknown audio mode %d + 正常 + 响铃 + 通话中 + 通信中 + 来电筛选 + 呼叫转移 + 通信重定向 + 未知音频模式 %d + - Unknown device type %d - Unknown - Built-in earpiece - Built-in speaker - Wired headset - Wired headphones - Line analog - Line digital - USB device - USB accessory - Dock + 未知设备类型 %d + 未知 + 内置听筒 + 内置扬声器 + 有线耳机(带麦克风) + 有线耳机 + 模拟线路 + 数字线路 + Bluetooth SCO + Bluetooth A2DP + HDMI + HDMI ARC + USB 设备 + USB 配件 + 底座 FM - Built-in mic - FM tuner - TV tuner - Telephony - AUX line + 内置麦克风 + FM 调谐器 + 电视调谐器 + 电话 + AUX 线路 IP - Bus - USB headset - Hearing aid - Built-in speaker safe - Remote submix - Bluetooth LE headset - Bluetooth LE speaker - Bluetooth LE broadcast - Dock analog + 总线 + USB 耳机 + 助听器 + 内置扬声器(安全模式) + 远程子混音 + 蓝牙 LE 耳机 + 蓝牙 LE 扬声器 + HDMI eARC + 蓝牙 LE 广播 + 模拟底座 diff --git a/module-biometrics/src/main/res/values-zh-rCN/strings.xml b/module-biometrics/src/main/res/values-zh-rCN/strings.xml index 47f91283..b1ddafb3 100644 --- a/module-biometrics/src/main/res/values-zh-rCN/strings.xml +++ b/module-biometrics/src/main/res/values-zh-rCN/strings.xml @@ -5,21 +5,22 @@ --> - Biometrics - Biometrics info - Can authenticate with device credential - Can authenticate with weak biometric - Can authenticate with strong biometric - Device credential strings - Weak biometric strings - Strong biometric strings - Setting name - Button label - Prompt message + 生物识别 + 生物识别信息 + 可通过设备凭据进行身份验证 + 可通过弱生物识别进行身份验证 + 可通过强生物识别进行身份验证 + 设备凭据字符串 + 弱生物识别字符串 + 强生物识别字符串 + 设置名称 + 按钮标签 + 提示消息 + - Success - Hardware unavailable - No biometrics enrolled - No biometric hardware - Security update required + 成功 + 硬件不可用 + 未录入任何生物信息 + 无生物识别硬件 + 需要安全更新 diff --git a/module-bluetooth/src/main/res/values-zh-rCN/strings.xml b/module-bluetooth/src/main/res/values-zh-rCN/strings.xml index 79dc0434..47406d14 100644 --- a/module-bluetooth/src/main/res/values-zh-rCN/strings.xml +++ b/module-bluetooth/src/main/res/values-zh-rCN/strings.xml @@ -5,10 +5,12 @@ --> - Bluetooth capabilities - Adapter - Name - MAC address - Bonded devices - Supported + Bluetooth + 蓝牙功能 + 适配器 + 名称 + MAC 地址 + 已配对设备 + Bluetooth LE + 支持 diff --git a/module-build/src/main/res/values-zh-rCN/strings.xml b/module-build/src/main/res/values-zh-rCN/strings.xml index 426c1911..a9400093 100644 --- a/module-build/src/main/res/values-zh-rCN/strings.xml +++ b/module-build/src/main/res/values-zh-rCN/strings.xml @@ -5,40 +5,42 @@ --> - Build - Check current Android build info - Build information - Fingerprint - Build tags - Build type - Build date - Build host - Build user - Build ID - Build display ID - Build version - Build version codename - SDK version - Preview SDK version - Security patch level - Base OS - Incremental - Release or codename - Media performance class - Release or preview display - Name - Vendor - Version - Class version - Specification name - Specification vendor - Specification version - Security patch level - Kernel - Version - Complete version - Firmware - Bootloader version - Radio version - Fingerprinted partitions + 构建 + 查看当前 Android 构建信息 + 构建信息 + 指纹 + 构建标签 + 构建类型 + 构建日期 + 构建主机 + 构建用户 + 构建 ID + 构建显示 ID + 构建版本 + 构建版本代号 + SDK 版本 + 预览版 SDK 版本 + 安全补丁级别 + 基础操作系统 + 增量版本 + 发布版本或代号 + 媒体性能等级 + 发布版或预览版显示 + JVM + 名称 + 供应商 + 版本 + 类版本 + 规范名称 + 规范供应商 + 规范版本 + Vendor + 安全补丁级别 + 内核 + 版本 + 完整版本 + 固件 + 引导加载程序版本 + 基带版本 + 已记录指纹的分区 diff --git a/module-camera/src/main/res/values-zh-rCN/strings.xml b/module-camera/src/main/res/values-zh-rCN/strings.xml index 5a005c17..c20ccccc 100644 --- a/module-camera/src/main/res/values-zh-rCN/strings.xml +++ b/module-camera/src/main/res/values-zh-rCN/strings.xml @@ -5,39 +5,41 @@ --> - Camera - Camera info - Camera %s - Facing - Pixel array size (resolution) - Sensor physical size - Has flash unit - Available apertures - Available capabilities + 相机 + 相机信息 + 相机 %s + 朝向 + 像素阵列大小(分辨率) + 传感器物理尺寸 + 闪光灯 + 可用光圈 + 可用功能 + - Back - Front - External + 后置 + 前置 + 外置 + - Is backward compatible - Supports 3A manual controls - Supports manual post-processing - Supports RAW - Supports ZSL - Supports precise sensor settings reporting - Supports burst capture - Supports YUV reprocessing - Supports depth measurement - Supports HFR recording - Supports motion tracking - Is a logical camera - Is monochrome - Supports secure image captures - Only accessible to system camera apps - Supports offline reprocessing - Supports disabling pixel binning mode - Supports remosaic reprocessing - Supports 10-bit HLG output - Supports stream use cases - Supports color space profiles + 向后兼容 + 支持 3A 手动控制 + 支持手动后处理 + 支持 RAW + 支持 ZSL + 支持精确的传感器设置报告 + 支持连拍 + 支持 YUV 再处理 + 支持深度测量 + 支持 HFR 高帧率录制 + 支持动作追踪 + 逻辑多摄像头 + 黑白相机 + 支持安全图像捕获 + 仅系统相机应用可访问 + 支持离线再处理 + 支持禁用像素合并模式 + 支持重新马赛克再处理 + 支持 10 位 HLG 输出 + 支持流用例 + 支持色彩空间配置文件 diff --git a/module-cpu/src/main/res/values-zh-rCN/strings.xml b/module-cpu/src/main/res/values-zh-rCN/strings.xml index 9431e527..4d58905d 100644 --- a/module-cpu/src/main/res/values-zh-rCN/strings.xml +++ b/module-cpu/src/main/res/values-zh-rCN/strings.xml @@ -6,66 +6,70 @@ CPU - CPU info - Supported ABIs - Supported 64 bit ABIs - Supported 32 bit ABIs - Microarchitectures - Packages - Clusters - Cores - Processors - L1i caches - L1d caches - L2 caches - L3 caches - L4 caches - Microarchitecture %d - Package %d - Name - Cluster %s - Core %s - Processor %s + CPU 信息 + ABI + 支持的 ABI + 支持的 64 位 ABI + 支持的 32 位 ABI + 微架构 + 封装 + 集群 + 核心 + 处理器 + L1 指令缓存 + L1 数据缓存 + L2 缓存 + L3 缓存 + L4 缓存 + 微架构 %d + 封装 %d + 名称 + 集群 %s + 核心 %s + 处理器 %s SMT ID Linux ID APIC ID - Cache - Status - Is online - Current frequency - Minimum frequency - Maximum frequency - Scaling current frequency - Scaling minimum frequency - Scaling maximum frequency - L1i cache %d - L1d cache %d - L2 cache %d - L3 cache %d - L4 cache %d - Size - Associativity - Sets - Partitions - Line size - Flags + 缓存 + 状态 + 是否在线 + 当前频率 + 最低频率 + 最高频率 + 当前调节频率 + 最低调节频率 + 最高调节频率 + L1 指令缓存 %d + L1 数据缓存 %d + L2 缓存 %d + L3 缓存 %d + L4 缓存 %d + 大小 + 关联度 + 组数 + 分区数 + 行大小 + 标志 + - Frequency - Implementer - Variant - Architecture - Primary part number - Revision - Microarchitecture - Vendor - Processor ID - Processor start - Processor count - Core ID - Core start - Core count - Cluster ID - Cluster start - Cluster count - Package + CPUID + 频率 + Main ID Register + 实现商 + 变体 + 架构 + 主要部件号 + 修订版本 + 微架构 + 供应商 + 处理器 ID + 处理器起始 + 处理器数量 + 核心 ID + 核心起始 + 核心数量 + 集群 ID + 集群起始 + 集群数量 + 封装 diff --git a/module-device/src/main/res/values-zh-rCN/strings.xml b/module-device/src/main/res/values-zh-rCN/strings.xml index e0caf949..1c6ff73f 100644 --- a/module-device/src/main/res/values-zh-rCN/strings.xml +++ b/module-device/src/main/res/values-zh-rCN/strings.xml @@ -5,22 +5,25 @@ --> - Device - Check device info - Device - Brand - Model - Manufacturer - Product name - Hardware name - Board name - Hardware SKU + 设备 + 查看设备信息 + 设备 + 品牌 + 型号 + 制造商 + 产品名称 + 硬件名称 + 主板名称 + SKU + 硬件 SKU ODM SKU - Manufacturer - Model - Total memory - Advertised memory - Available memory - Low memory threshold - Currently on low memory + SoC + 制造商 + 型号 + RAM + 总内存 + 标称内存 + 可用内存 + 低内存阈值 + 当前处于低内存状态 diff --git a/module-display/src/main/res/values-zh-rCN/strings.xml b/module-display/src/main/res/values-zh-rCN/strings.xml index 8c80d20d..b6b2f223 100644 --- a/module-display/src/main/res/values-zh-rCN/strings.xml +++ b/module-display/src/main/res/values-zh-rCN/strings.xml @@ -5,35 +5,60 @@ --> - Display - Screen and GPU info - Display %d + 显示 + 屏幕和 GPU 信息 + 显示 %d ID - Name - Product name - Manufacturer PnP ID - Manufacturer product ID - Model year - Manufacture week - Manufacture year - Connection to sink type - Is valid - Is HDR - Is wide color gamut - Preferred wide color gamut color space - Is minimal post processing supported - Mode %d - Mode %d (active) + 名称 + 产品名称 + 制造商 PnP ID + 制造商产品 ID + 型号年份 + 生产周 + 生产年份 + 连接到接收器类型 + 是否有效 + 是否支持 HDR + 标志 + 支持受保护的缓冲区 + 安全 + 私有 + 演示 + 圆形 + 可在非安全锁屏界面显示 + 应显示系统装饰 + 可信 + 拥有自己的显示组 + 始终解锁 + 触控反馈已禁用 + 拥有自己的焦点 + 禁止抢夺顶部焦点 + 后置 + 随内容旋转 + 允许内容模式切换 + 缩放已禁用 + 广色域 + 首选广色域色彩空间 + 支持最小后处理 + 模式 %d + 模式 %d(活动) ID - Resolution - Alternative refresh rates - Supported HDR types - Host USI version + 分辨率 + %dx%d@%f + 可选刷新率 + 支持的 HDR 类型 + 主机 USI 版本 + - Unknown - Built-in - Direct - Transitive + 未知 + 内置 + 直接 + 间接 + - Invalid + 无效 + Dolby Vision + HDR10 + Hybrid Log-Gamma (HLG) + HDR10+ diff --git a/module-drm/src/main/res/values-zh-rCN/strings.xml b/module-drm/src/main/res/values-zh-rCN/strings.xml index d299556c..0d312780 100644 --- a/module-drm/src/main/res/values-zh-rCN/strings.xml +++ b/module-drm/src/main/res/values-zh-rCN/strings.xml @@ -5,16 +5,18 @@ --> - DRM info - Vendor - Version - Description - Algorithms - Device unique ID - Open session count - Max session count - Connected HDCP level - Max HDCP level - Security level - System ID + DRM + DRM 信息 + UUID + 供应商 + 版本 + 描述 + 算法 + 设备唯一 ID + 打开的会话数 + 最大会话数 + 已连接 HDCP 级别 + 最大 HDCP 级别 + 安全级别 + 系统 ID diff --git a/module-gnss/src/main/res/values-zh-rCN/strings.xml b/module-gnss/src/main/res/values-zh-rCN/strings.xml index 08ed9ad9..53d53cb9 100644 --- a/module-gnss/src/main/res/values-zh-rCN/strings.xml +++ b/module-gnss/src/main/res/values-zh-rCN/strings.xml @@ -5,52 +5,64 @@ --> - Global Navigation Satellite System info - Location enabled - Hardware model name - Year of hardware - Providers - GNSS capabilities - Antenna %d - Carrier frequency - Phase center offset - Phase center variation corrections - Signal gain corrections + GNSS + 全球导航卫星系统信息 + 位置已启用 + 硬件型号名称 + 硬件年份 + 提供者 + GNSS 功能 + 天线 %d + 载波频率 + 相位中心偏移 + 相位中心变化校正 + 信号增益校正 + - Supports measurements - Supports navigation messages - Supports antenna info - Has scheduling - Supports Mobile Station Based assistance - Supports Mobile Station Assisted assistance - Supports single shot locating - Requests periodic time signal injection from the platform - Supports geofencing - Supports low power mode - Supports satellite blocklist - Supports satellite PVT - Supports measurement corrections - Supports correlation vectors - Benefit from measurement corrections for driving use case - Supports accumulated delta range - Supports line-of-sight satellite identification measurement corrections - Supports per satellite excess-path-length measurement corrections - Supports reflecting plane measurement corrections - Supports measuring power totals - Supports measuring single-band tracking power - Supports measuring multi-band tracking power - Supports measuring single-band acquisition power - Supports measuring multi-band acquisition power - Supports measuring OEM defined mode power + 支持测量 + 支持导航消息 + 支持天线信息 + 支持调度 + 支持基于移动台的辅助 + 支持移动台辅助的辅助 + 支持单次定位 + 请求平台定期注入时间信号 + 支持地理围栏 + 支持低功耗模式 + 支持卫星黑名单 + 支持卫星 PVT + 支持测量校正 + 支持相关向量 + 受益于驾驶场景的测量校正 + 支持累积增量距离 + 支持视距卫星识别测量校正 + 支持每颗卫星的过量路径长度测量校正 + 支持反射面测量校正 + 支持测量总功率 + 支持测量单频跟踪功率 + 支持测量多频跟踪功率 + 支持测量单频捕获功率 + 支持测量多频捕获功率 + 支持测量 OEM 定义模式功率 + - Supported - Unsupported - Unknown + 支持 + 不支持 + 未知 + - Signal type %d - Constellation type - Carrier frequency (hz) - Code type + 信号类型 %d + 星座类型 + 载波频率(Hz) + 编码类型 + - Unknown + 未知 + GPS + SBAS + GLONASS + QZSS + BeiDou + Galileo + IRNSS diff --git a/module-gpu/src/main/res/values-zh-rCN/strings.xml b/module-gpu/src/main/res/values-zh-rCN/strings.xml index c558c91b..c3f1cd8a 100644 --- a/module-gpu/src/main/res/values-zh-rCN/strings.xml +++ b/module-gpu/src/main/res/values-zh-rCN/strings.xml @@ -6,32 +6,49 @@ GPU - GPU info + GPU 信息 + - Supported - Vulkan device %d - API version - Driver version - Vendor ID - Registered vendor ID - Device ID - Device type - Device name + Vulkan + 支持 + Vulkan 设备 %d + API 版本 + %s.%s Variant %s Patch %s + 驱动版本 + 供应商 ID + 注册供应商 ID + 设备 ID + 设备类型 + 设备名称 + - Other - Integrated GPU - Discrete GPU - Virtual GPU + 其他 + 集成 GPU + 独立 GPU + 虚拟 GPU CPU + + The Khronos Group, Inc. + Vivante + VeriSilicon + Kazan + Codeplay + Mesa + Portable Computing Language + Mobileye + - Vendor - Version - Extensions - Client API + EGL + 供应商 + 版本 + 扩展 + 客户端 API + - Renderer - Vendor - Version - Extensions + OpenGL + 渲染器 + 供应商 + 版本 + 扩展 diff --git a/module-health/src/main/res/values-zh-rCN/strings.xml b/module-health/src/main/res/values-zh-rCN/strings.xml index f68cabca..ed9bae08 100644 --- a/module-health/src/main/res/values-zh-rCN/strings.xml +++ b/module-health/src/main/res/values-zh-rCN/strings.xml @@ -5,47 +5,51 @@ --> - Health - Battery information - Battery - Present - Technology - Cycle count - Status - Plugged - Charging status - Health - Level - Scale - Battery low - Temperature + 电池健康 + 电池信息 + 电池 + 是否存在 + 技术类型 + 循环次数 + 状态 + 充电方式 + 充电状态 + 电池健康 + 电量 + 电量标度 + 电量低 + 温度 %.1f °C - Voltage + 电压 %d mV + - Unknown - Charging - Discharging - Not charging - Full + 未知 + 充电中 + 放电中 + 未充电 + 已满 + - None - AC charger - USB port - Wireless - Dock + 未接入 + 交流充电器 + USB 端口 + 无线充电 + 底座 + - Normal - Too cold - Too hot - Long life - Adaptive + 正常 + 过冷 + 过热 + 长寿命 + 自适应 + - Unknown - Good - Overheat - Dead - Over voltage - Unspecified failure - Cold + 未知 + 良好 + 过热 + 损坏 + 过压 + 未知故障 + 过冷 diff --git a/module-input/src/main/res/values-zh-rCN/strings.xml b/module-input/src/main/res/values-zh-rCN/strings.xml index a20b418d..32f4596b 100644 --- a/module-input/src/main/res/values-zh-rCN/strings.xml +++ b/module-input/src/main/res/values-zh-rCN/strings.xml @@ -5,59 +5,65 @@ --> - Input - Input devices information - Devices - Maximum obscuring opacity for touch - Is stylus pointer icon enabled + 输入 + 输入设备信息 + 设备 + 触控最大遮挡透明度 + 手写笔指针图标已启用 + - Input device %d + 输入设备 %d ID - Controller number - Vendor ID - Product ID - Descriptor - Is virtual - Is external - Name - Source classes - Sources - Keyboard type - KeyCharacterMap keyboard type - Motion ranges count - Has vibrator - Battery - Status - Capacity - Sensor %d - Is enabled - Has microphone + 控制器编号 + 供应商 ID + 产品 ID + 描述符 + 是否为虚拟设备 + 是否为外部设备 + 名称 + 源类别 + + 键盘类型 + 按键字符映射键盘类型 + 运动范围数量 + 有振动器 + 电池 + 状态 + 容量 + 传感器 %d + 已启用 + 有麦克风 + - None - Non alphabetic - Alphabetic + + 非字母 + 字母 + - Numeric - Predictive - Alpha - Full - Special function + 数字 + 预测 + 字母 + 全键盘 + 特殊功能 + - Button - Pointer - Trackball - Position - Joystick + 按钮 + 指针 + 轨迹球 + 位置 + 摇杆 + - Keyboard - D-pad - Gamepad - Touchscreen - Mouse - Stylus - Trackball - Touchpad - Touch navigation - Rotary encoder - Joystick + 键盘 + 方向键 + 游戏手柄 + 触摸屏 + 鼠标 + 手写笔 + 轨迹球 + 触摸板 + 触摸导航 + 旋转编码器 + 摇杆 + HDMI diff --git a/module-lights/src/main/res/values-zh-rCN/strings.xml b/module-lights/src/main/res/values-zh-rCN/strings.xml index 19f1998b..c98fae83 100644 --- a/module-lights/src/main/res/values-zh-rCN/strings.xml +++ b/module-lights/src/main/res/values-zh-rCN/strings.xml @@ -5,23 +5,26 @@ --> - Light %d - Name - Ordinal - Type - Has brightness control - Has RGB control - State + 灯 %d + 名称 + 序号 + 类型 + 支持亮度控制 + 支持 RGB 控制 + 状态 + - Backlight - Keyboard - Buttons - Battery - Notifications - Attention - Microphone - Camera - Input - Player ID - Keyboard backlight + 背光 + 键盘 + 按钮 + 电池 + 通知 + 提醒 + Bluetooth + Wi-Fi + 麦克风 + 相机 + 输入 + 播放器 ID + 键盘背光 diff --git a/module-media/src/main/res/values-zh-rCN/strings.xml b/module-media/src/main/res/values-zh-rCN/strings.xml index 6213b2fb..4c2768cf 100644 --- a/module-media/src/main/res/values-zh-rCN/strings.xml +++ b/module-media/src/main/res/values-zh-rCN/strings.xml @@ -5,14 +5,15 @@ --> - Media - Media codecs info + 媒体 + 媒体编解码器信息 + - Name - Canonical name - Is encoder - Is hardware accelerated - Is software only - Is vendor - Supported types + 名称 + 规范名称 + 是否为编码器 + 是否硬件加速 + 纯软件 + 是否为供应商提供 + 支持的类型 diff --git a/module-nfc/src/main/res/values-zh-rCN/strings.xml b/module-nfc/src/main/res/values-zh-rCN/strings.xml index 76bfcba7..20e1e8e8 100644 --- a/module-nfc/src/main/res/values-zh-rCN/strings.xml +++ b/module-nfc/src/main/res/values-zh-rCN/strings.xml @@ -5,14 +5,16 @@ --> - Enabled - Secure NFC - Supported - Enabled - Antenna info - Device dimensions - %1$dx%2$d mm - Is device foldable - Antenna %d - %1$dx%2$d mm + NFC + Near Field Communication + 已启用 + 安全 NFC + 支持 + 已启用 + 天线信息 + 设备尺寸 + %1$d×%2$d mm + 是否为折叠设备 + 天线 %d + %1$d×%2$d mm diff --git a/module-ril/src/main/res/values-zh-rCN/strings.xml b/module-ril/src/main/res/values-zh-rCN/strings.xml index e0ff0ebb..4641a316 100644 --- a/module-ril/src/main/res/values-zh-rCN/strings.xml +++ b/module-ril/src/main/res/values-zh-rCN/strings.xml @@ -5,12 +5,17 @@ --> - Radio Interface Layer info - Active modem count - Device software version - Is world phone - Manufacturer code - Phone type + RIL + 无线接口层信息 + 活跃调制解调器数量 + 设备软件版本 + 是否为全球通手机 + 制造商代码 + 电话类型 + - None + + GSM + CDMA + SIP diff --git a/module-security/src/main/res/values-zh-rCN/strings.xml b/module-security/src/main/res/values-zh-rCN/strings.xml index ac992449..3d31c332 100644 --- a/module-security/src/main/res/values-zh-rCN/strings.xml +++ b/module-security/src/main/res/values-zh-rCN/strings.xml @@ -5,13 +5,16 @@ --> - Security - Security patch level and CVEs information - Is device fully updated - Device security patch level - Published security patch level - Patched CVEs + 安全 + 安全补丁级别和 CVE 信息 + 设备是否完全更新 + 设备安全补丁级别 + 已发布的安全补丁级别 + 已修补的 CVE + - System - System modules + 系统 + 系统模块 + Vendor + Kernel diff --git a/module-sensors/src/main/res/values-zh-rCN/strings.xml b/module-sensors/src/main/res/values-zh-rCN/strings.xml index 70ec0305..32eef61c 100644 --- a/module-sensors/src/main/res/values-zh-rCN/strings.xml +++ b/module-sensors/src/main/res/values-zh-rCN/strings.xml @@ -5,81 +5,85 @@ --> - Sensors - Sensors info - Sensors - Is dynamic sensor discovery supported - Body sensors permission not granted, some sensors won\'t appear in the list + 传感器 + 传感器信息 + 传感器 + 支持动态传感器发现 + 未授予身体传感器权限,部分传感器不会显示在列表中 + - Name + 名称 ID - String type - Type - Vendor - Version - Is dynamic sensor - Is wakeup sensor - FIFO max event count - FIFO reserved event count - Minimum delay - Maximum delay - Maximum range - Power - Reporting mode - Resolution - Is additional info supported - Highest direct report rate level + 字符串类型 + 类型 + 供应商 + 版本 + 动态传感器 + 唤醒传感器 + FIFO 最大事件数 + FIFO 保留事件数 + 最小延迟 + 最大延迟 + 最大范围 + 功耗 + 报告模式 + 分辨率 + 支持附加信息 + 最高直接报告速率级别 + - Accelerometer - Magnetic field - Orientation - Gyroscope - Light - Pressure - Temperature - Proximity - Gravity - Linear acceleration - Rotation vector - Relative humidity - Ambient temperature - Magnetic field (uncalibrated) - Game rotation vector - Gyroscope (uncalibrated) - Significant motion - Step detector - Step counter - Geomagnetic rotation vector - Heart rate - Tilt detector - Wake gesture - Glance gesture - Pick-up gesture - Wrist tilt gesture - Device orientation - Pose 6DOF - Stationary detect - Motion detect - Heart beat - Dynamic sensor meta - Additional info - Low latency offbody detect - Accelerometer (uncalibrated) - Hinge angle - Head tracker - Accelerometer (limited axes) - Gyroscope (limited axes) - Accelerometer (limited axes, uncalibrated) - Gyroscope (limited axes, uncalibrated) - Heading + 加速度计 + 磁场 + 方向 + 陀螺仪 + 光线 + 气压 + 温度 + 距离 + 重力 + 线性加速度 + 旋转矢量 + 相对湿度 + 环境温度 + 磁场(未校准) + 游戏旋转矢量 + 陀螺仪(未校准) + 显著运动 + 计步检测 + 计步器 + 地磁旋转矢量 + 心率 + 倾斜检测 + 唤醒手势 + 概览手势 + 拿起手势 + 手腕倾斜手势 + 设备方向 + 6 自由度姿态 + 静止检测 + 运动检测 + 心跳 + 动态传感器元数据 + 附加信息 + 低延迟离身检测 + 加速度计(未校准) + 铰链角度 + 头部追踪 + 加速度计(有限轴) + 陀螺仪(有限轴) + 加速度计(有限轴,未校准) + 陀螺仪(有限轴,未校准) + 航向 + - Continuous - On change - One-shot - Special trigger + 连续 + 变化时 + 单次 + 特殊触发 + - Stop - Normal - Fast - Very fast + 停止 + 正常 + 快速 + 极快 diff --git a/module-services/src/main/res/values-zh-rCN/strings.xml b/module-services/src/main/res/values-zh-rCN/strings.xml index 7071c562..baaac96a 100644 --- a/module-services/src/main/res/values-zh-rCN/strings.xml +++ b/module-services/src/main/res/values-zh-rCN/strings.xml @@ -5,6 +5,6 @@ --> - Services - Android init services info + 服务 + Android init 服务信息 diff --git a/module-storage/src/main/res/values-zh-rCN/strings.xml b/module-storage/src/main/res/values-zh-rCN/strings.xml index 8d49d09b..7814d217 100644 --- a/module-storage/src/main/res/values-zh-rCN/strings.xml +++ b/module-storage/src/main/res/values-zh-rCN/strings.xml @@ -5,29 +5,30 @@ --> - Storage - Storage info - Total space - Available space - Used space - Internal storage - Is encrypted - Encryption type - External storage - Is emulated - Is removable - System partitions - Has updatable APEX - Uses system as root - Uses A/B - A/B OTA partitions - Uses dynamic partitions - Uses retrofitted dynamic partitions - Uses virtual A/B - Uses retrofitted virtual A/B - Uses compressed virtual A/B + 存储 + 存储信息 + 总空间 + 可用空间 + 已用空间 + 内部存储 + 是否加密 + 加密类型 + 外部存储 + 是否模拟 + 是否可移除 + 系统分区 + 有可更新 APEX + 使用系统作为根 + 使用 A/B + A/B OTA 分区 + 使用动态分区 + 使用改造的动态分区 + 使用虚拟 A/B + 使用改造的虚拟 A/B + 使用压缩虚拟 A/B + - None - Full Disk Encryption (FDE) - File-Based Encryption (FBE) + + 全盘加密(FDE) + 基于文件的加密(FBE) diff --git a/module-systemproperties/src/main/res/values-zh-rCN/strings.xml b/module-systemproperties/src/main/res/values-zh-rCN/strings.xml index 5737edf9..0f1b0dc0 100644 --- a/module-systemproperties/src/main/res/values-zh-rCN/strings.xml +++ b/module-systemproperties/src/main/res/values-zh-rCN/strings.xml @@ -5,6 +5,6 @@ --> - Props - Android property list + 属性 + Android 属性列表 diff --git a/module-thermal/src/main/res/values-zh-rCN/strings.xml b/module-thermal/src/main/res/values-zh-rCN/strings.xml index 47e57e14..1179684e 100644 --- a/module-thermal/src/main/res/values-zh-rCN/strings.xml +++ b/module-thermal/src/main/res/values-zh-rCN/strings.xml @@ -5,16 +5,17 @@ --> - Thermal - Device thermal info - Thermal mitigation - Unsupported on this device + 散热 + 设备散热信息 + 热缓解 + 此设备不支持 + - None - Light - Moderate - Severe - Critical - Emergency - Shutdown + + 轻度 + 中度 + 严重 + 临界 + 紧急 + 关机 diff --git a/module-treble/src/main/res/values-zh-rCN/strings.xml b/module-treble/src/main/res/values-zh-rCN/strings.xml index 7e956c35..f40b8ef4 100644 --- a/module-treble/src/main/res/values-zh-rCN/strings.xml +++ b/module-treble/src/main/res/values-zh-rCN/strings.xml @@ -5,24 +5,31 @@ --> - Project Treble info - Treble enabled - VNDK version - Interfaces - Name - Type - Transport - Server process ID - Address - Arch - Current threads - Max threads - Released - In device manifest - In device compatibility matrix - In framework manifest - In framework compatibility matrix - Clients process IDs + Treble + Project Treble 信息 + Treble 已启用 + VNDK 版本 + 接口 + 名称 + 类型 + 传输方式 + 服务器进程 ID + 地址 + 架构 + 当前线程数 + 最大线程数 + 已发布 + 在设备清单中 + 在设备兼容性矩阵中 + 在框架清单中 + 在框架兼容性矩阵中 + 客户端进程 ID + + AIDL + HIDL + + HWBinder + 直通 diff --git a/module-user/src/main/res/values-zh-rCN/strings.xml b/module-user/src/main/res/values-zh-rCN/strings.xml index 03c1c251..156de948 100644 --- a/module-user/src/main/res/values-zh-rCN/strings.xml +++ b/module-user/src/main/res/values-zh-rCN/strings.xml @@ -5,19 +5,19 @@ --> - User - Check current user info - Current user - User ID - Is admin user - Is demo user - Is managed profile user - Is profile - Is system user - Is user a goat - Is user foreground - Is user unlocked - User serial number - Quiet mode enabled - User creation time + 用户 + 查看当前用户信息 + 当前用户 + 用户 ID + 是否为管理员用户 + 是否为演示用户 + 是否为托管配置文件用户 + 是否为配置文件 + 是否为系统用户 + 用户是否为羊 + 用户是否在前台 + 用户是否已解锁 + 用户序列号 + 已启用安静模式 + 用户创建时间 diff --git a/module-uwb/src/main/res/values-zh-rCN/strings.xml b/module-uwb/src/main/res/values-zh-rCN/strings.xml index f06f2f67..62d1c8f7 100644 --- a/module-uwb/src/main/res/values-zh-rCN/strings.xml +++ b/module-uwb/src/main/res/values-zh-rCN/strings.xml @@ -6,25 +6,25 @@ UWB - Ultra-wideband communication - Supported - Enabled - Enable UWB to check its capabilities - Ranging capabilities - Is distance ranging supported - Is azimuthal angle of arrival supported - Is elevation angle of arrival supported - Minimum ranging interval - Supported channels - Supported notification configs - Supported config IDs - Supported slot durations - Supported ranging update rates - Is ranging interval reconfiguration supported - Can ranging be started when the app is in background - Local address - Address - Complex channel - Channel - Preamble index + 超宽带通信 + 支持 + 已启用 + 启用 UWB 以查看其功能 + 测距功能 + 支持距离测距 + 支持到达方位角 + 支持到达仰角 + 最小测距间隔 + 支持的通道 + 支持的通知配置 + 支持的配置 ID + 支持的时隙长度 + 支持的测距更新率 + 支持测距间隔重新配置 + 可在应用后台时进行测距 + 本地地址 + 地址 + 复杂通道 + 通道 + 前导码索引 diff --git a/module-wifi/src/main/res/values-zh-rCN/strings.xml b/module-wifi/src/main/res/values-zh-rCN/strings.xml index 15723f12..aea8ea6a 100644 --- a/module-wifi/src/main/res/values-zh-rCN/strings.xml +++ b/module-wifi/src/main/res/values-zh-rCN/strings.xml @@ -5,10 +5,17 @@ --> - Wi-Fi capabilities - Enabled - Supported standards - Supported bands + Wi-Fi + Wi-Fi 功能 + 已启用 + 支持的标准 + 支持的频段 + - 802.11a/b/g (legacy) + 802.11a/b/g(旧版) + 802.11n + 802.11ac + 802.11ax + 802.11ad + 802.11be