diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt
index aa82941393..052cebe664 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt
@@ -159,7 +159,7 @@ fun AppPickerScreen(
IconButton(onClick = { showMenu = true }) {
Icon(
painterResource(R.drawable.ic_more_vert_24dp),
- contentDescription = null
+ contentDescription = stringResource(R.string.acc_more)
)
}
DropdownMenu(
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/AccessibilityModifiers.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/AccessibilityModifiers.kt
new file mode 100644
index 0000000000..2d0c4d96f0
--- /dev/null
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/AccessibilityModifiers.kt
@@ -0,0 +1,9 @@
+package com.v2ray.ang.ui.compose
+
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.semantics.semantics
+import androidx.compose.ui.semantics.traversalIndex
+
+internal fun Modifier.accessibilityTraversalIndex(index: Float): Modifier = semantics {
+ traversalIndex = index
+}
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Components.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Components.kt
index 86027f1c57..2b5204ffef 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Components.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Components.kt
@@ -85,7 +85,10 @@ fun AppTopBar(
placeholder = searchPlaceholder
)
} else {
- Text(text = title)
+ Text(
+ text = title,
+ modifier = Modifier.accessibilityTraversalIndex(-1f)
+ )
}
},
navigationIcon = {
@@ -151,7 +154,10 @@ private fun SearchInputField(
)
if (query.isNotEmpty()) {
IconButton(onClick = { onQueryChange("") }) {
- Icon(painterResource(android.R.drawable.ic_menu_close_clear_cancel), "Clear")
+ Icon(
+ painter = painterResource(android.R.drawable.ic_menu_close_clear_cancel),
+ contentDescription = stringResource(R.string.acc_clear_search)
+ )
}
}
}
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainBottomBar.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainBottomBar.kt
index f7c16ea76a..bfc4ead66e 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainBottomBar.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainBottomBar.kt
@@ -21,6 +21,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
+import androidx.compose.ui.semantics.onClick
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
@@ -42,6 +43,7 @@ fun MainBottomBar(
onAction: (MainAction) -> Unit
) {
Box(modifier = Modifier.fillMaxWidth()) {
+ val serviceActionLabel = stringResource(if (isRunning) R.string.acc_disconnect else R.string.acc_connect)
Column(
modifier = Modifier
.fillMaxWidth()
@@ -73,7 +75,8 @@ fun MainBottomBar(
.align(Alignment.TopEnd)
.padding(end = 24.dp)
.offset(y = (-28).dp)
- .navigationBarsPadding(),
+ .navigationBarsPadding()
+ .semantics { onClick(label = serviceActionLabel, action = null) },
containerColor = if (isRunning) colorFabActive
else if (isDarkTheme) colorFabInactiveDark
else colorFabInactiveLight
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainDrawer.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainDrawer.kt
index 1bd2fadc6b..e8a371ca40 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainDrawer.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainDrawer.kt
@@ -28,6 +28,8 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.semantics.hideFromAccessibility
+import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import com.v2ray.ang.R
import com.v2ray.ang.ui.compose.AppDivider
@@ -81,6 +83,8 @@ fun MainDrawerContent(drawerState: DrawerState, onNavigate: (MainDestination) ->
modifier = Modifier
.fillMaxWidth()
.height(180.dp)
+ // The decorative Surface must not become an empty accessibility stop.
+ .semantics { hideFromAccessibility() }
) {
Column(
modifier = Modifier
@@ -102,6 +106,7 @@ fun MainDrawerContent(drawerState: DrawerState, onNavigate: (MainDestination) ->
)
Text(
text = stringResource(R.string.app_name),
+ modifier = Modifier.semantics { hideFromAccessibility() },
style = MaterialTheme.typography.titleLarge,
color = MaterialTheme.colorScheme.onSurface
)
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainTopBar.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainTopBar.kt
index cc3b4f8467..aba1ea4bc9 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainTopBar.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainTopBar.kt
@@ -22,6 +22,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.semantics.onClick
+import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import com.v2ray.ang.R
import com.v2ray.ang.ui.compose.AppTopBar
@@ -62,8 +64,12 @@ fun MainTopBar(
Icon(painterResource(R.drawable.ic_arrow_back_24dp), contentDescription = stringResource(R.string.acc_back))
}
} else {
- IconButton(onClick = onMenuClick) {
- Icon(painterResource(R.drawable.ic_menu_24dp), contentDescription = stringResource(R.string.acc_open_menu))
+ val menuLabel = stringResource(R.string.acc_open_menu)
+ IconButton(
+ onClick = onMenuClick,
+ modifier = Modifier.semantics { onClick(label = menuLabel, action = null) },
+ ) {
+ Icon(painterResource(R.drawable.ic_menu_24dp), contentDescription = menuLabel)
}
}
},
diff --git a/V2rayNG/app/src/main/res/values-ar/strings.xml b/V2rayNG/app/src/main/res/values-ar/strings.xml
index 378b71ae35..4c3369d4a8 100644
--- a/V2rayNG/app/src/main/res/values-ar/strings.xml
+++ b/V2rayNG/app/src/main/res/values-ar/strings.xml
@@ -512,13 +512,16 @@
إضافة مصدر موارد
تنزيل ملفات الموارد
رمز QR
- نسخ السجل
+ نسخ السجل إلى الحافظة
مسح السجل
إضافة قاعدة توجيه
بدء الخدمة
إيقاف الخدمة
+ اتصال
+ قطع الاتصال
رجوع
بحث
+ مسح البحث
إضافة تكوين
المزيد من الخيارات
Selected
diff --git a/V2rayNG/app/src/main/res/values-bn/strings.xml b/V2rayNG/app/src/main/res/values-bn/strings.xml
index 78effa02ea..4c6a7d8b49 100644
--- a/V2rayNG/app/src/main/res/values-bn/strings.xml
+++ b/V2rayNG/app/src/main/res/values-bn/strings.xml
@@ -512,13 +512,16 @@
অ্যাসেট উৎস যোগ করুন
অ্যাসেট ফাইল ডাউনলোড করুন
QR কোড
- লগ কপি করুন
+ ক্লিপবোর্ডে লগ কপি করুন
লগ মুছুন
রাউটিং নিয়ম যোগ করুন
সার্ভিস শুরু করুন
সার্ভিস বন্ধ করুন
+ সংযোগ করুন
+ সংযোগ বিচ্ছিন্ন করুন
ফিরে যান
অনুসন্ধান করুন
+ অনুসন্ধান মুছুন
কনফিগারেশন যোগ করুন
আরও বিকল্প
Selected
diff --git a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml
index f85a9418ff..956726cc30 100644
--- a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml
+++ b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml
@@ -512,13 +512,16 @@
ٱووردن بونچک فایلا جغرافیایی
دانلود فایلا بونچک جغرافیایی
کود QR
- لف گیری گوزارش
+ لف گیری گوزارش من ویرگا
روفتن گوزارش
ٱووردن قانووݩ
ره وستن سرویس
واڌاشتن سرویس
+ منپیز کردن
+ واڌاشتن منپیز
برگشت
پیتینیڌن
+ روفتن پیتینیڌن
ٱووردن کانفیگ
امکووݩا بؽتر
Selected
diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml
index 116846f34c..c2b4a68908 100644
--- a/V2rayNG/app/src/main/res/values-fa/strings.xml
+++ b/V2rayNG/app/src/main/res/values-fa/strings.xml
@@ -512,13 +512,16 @@
افزودن منبع فایلهای جغرافیایی
دانلود فایلهای منبع
کد QR
- کپی گزارش
+ کپی گزارش در کلیپبورد
پاک کردن گزارش
افزودن قانون مسیریابی
شروع سرویس
توقف سرویس
+ اتصال
+ قطع اتصال
بازگشت
جستجو
+ پاک کردن جستجو
افزودن کانفیگ
گزینههای بیشتر
انتخاب شده
diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml
index ee93da422d..8bbaa42161 100644
--- a/V2rayNG/app/src/main/res/values-ru/strings.xml
+++ b/V2rayNG/app/src/main/res/values-ru/strings.xml
@@ -512,13 +512,16 @@
Добавить источник ресурсов
Загрузить файлы ресурсов
QR-код
- Копировать журнал
+ Копировать журнал в буфер обмена
Очистить журнал
Добавить правило маршрутизации
Запустить службу
Остановить службу
+ Подключиться
+ Отключиться
Назад
Поиск
+ Очистить поиск
Добавить профиль
Дополнительные параметры
Selected
diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml
index 4e912e424c..5d27d63957 100644
--- a/V2rayNG/app/src/main/res/values-vi/strings.xml
+++ b/V2rayNG/app/src/main/res/values-vi/strings.xml
@@ -512,13 +512,16 @@
Thêm nguồn tệp tài nguyên
Tải xuống tệp tài nguyên
Mã QR
- Sao chép nhật ký
+ Sao chép nhật ký vào bộ nhớ tạm
Xóa nhật ký
Thêm quy tắc định tuyến
Khởi động dịch vụ
Dừng dịch vụ
+ Kết nối
+ Ngắt kết nối
Quay lại
Tìm kiếm
+ Xóa tìm kiếm
Thêm cấu hình
Tùy chọn khác
Selected
diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
index 0ceb0b8820..d8ea08b27b 100644
--- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
+++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
@@ -512,13 +512,16 @@
添加资源来源
下载资源文件
二维码
- 复制日志
+ 将日志复制到剪贴板
清除日志
添加路由规则
启动服务
停止服务
+ 连接
+ 断开连接
返回
搜索
+ 清除搜索
添加配置
更多选项
Selected
diff --git a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml
index cb7bae5511..e6f6ccea9e 100644
--- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml
+++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml
@@ -512,13 +512,16 @@
新增資源來源
下載資源檔案
QR Code
- 複製日誌
+ 將日誌複製到剪貼簿
清除日誌
新增路由規則
啟動服務
停止服務
+ 連線
+ 中斷連線
返回
搜尋
+ 清除搜尋
新增設定
更多選項
Selected
diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml
index b96ce5f2e6..bc3e1d6630 100644
--- a/V2rayNG/app/src/main/res/values/strings.xml
+++ b/V2rayNG/app/src/main/res/values/strings.xml
@@ -512,13 +512,16 @@
Add asset source
Download asset files
QR code
- Copy log
+ Copy log to clipboard
Clear log
Add routing rule
Start service
Stop service
+ Connect
+ Disconnect
Back
Search
+ Clear search
Add configuration
More options
Selected