From 62093d09eb00f823dd90e25b1fa9c9849e692d1b Mon Sep 17 00:00:00 2001 From: eliotcougar Date: Thu, 10 Sep 2026 08:56:49 +0300 Subject: [PATCH] Use completed-action wording and plurals for update results (#6196) Extract the config and asset update-result resources from local/talkback-all-10 in all nine supported locales. Describe completed updates instead of an update command, and select singular or plural forms using the actual config or successful asset count. Route both subscription update entry points through the existing localized ViewModel context and use activity resources for asset results. Preserve update execution, counts, partial-failure summaries, error handling, and toast delivery; no accessibility announcement infrastructure is included. --- .../com/v2ray/ang/ui/base/BaseViewModel.kt | 7 +++++++ .../com/v2ray/ang/ui/main/MainViewModel.kt | 8 +++++++- .../ui/subscription/SubscriptionsViewModel.kt | 8 +++++++- .../ang/ui/userasset/UserAssetActivity.kt | 8 +++++++- V2rayNG/app/src/main/res/values-ar/strings.xml | 18 ++++++++++++++++-- V2rayNG/app/src/main/res/values-bn/strings.xml | 10 ++++++++-- .../src/main/res/values-bqi-rIR/strings.xml | 10 ++++++++-- V2rayNG/app/src/main/res/values-fa/strings.xml | 10 ++++++++-- V2rayNG/app/src/main/res/values-ru/strings.xml | 14 ++++++++++++-- V2rayNG/app/src/main/res/values-vi/strings.xml | 8 ++++++-- .../app/src/main/res/values-zh-rCN/strings.xml | 8 ++++++-- .../app/src/main/res/values-zh-rTW/strings.xml | 8 ++++++-- V2rayNG/app/src/main/res/values/strings.xml | 10 ++++++++-- 13 files changed, 106 insertions(+), 21 deletions(-) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseViewModel.kt index 254564ef..57f7699f 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseViewModel.kt @@ -96,6 +96,13 @@ abstract class BaseViewModel(application: Application) : AndroidViewModel(applic return localizedContext.getString(resId, *formatArgs) } + /** + * Get a localized quantity string from a plurals resource. + */ + fun getQuantityString(resId: Int, quantity: Int, vararg formatArgs: Any): String { + return localizedContext.resources.getQuantityString(resId, quantity, *formatArgs) + } + /** * Send finish activity event. */ diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt index f04e0d8b..db418753 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt @@ -464,7 +464,13 @@ class MainViewModel( toast(R.string.title_update_subscription_no_subscription) result.successCount > 0 && result.failureCount + result.skipCount == 0 -> - toast(dataSource.getString(R.string.title_update_config_count, result.configCount)) + toast( + getQuantityString( + R.plurals.title_update_config_count, + result.configCount, + result.configCount, + ) + ) else -> toast(dataSource.getString(R.string.title_update_subscription_result, result.configCount, result.successCount, result.failureCount, result.skipCount)) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubscriptionsViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubscriptionsViewModel.kt index a13db679..7ec573eb 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubscriptionsViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubscriptionsViewModel.kt @@ -110,7 +110,13 @@ class SubscriptionsViewModel(application: Application) : BaseViewModel(applicati toast(R.string.title_update_subscription_no_subscription) result.successCount > 0 && result.failureCount + result.skipCount == 0 -> - toast(getString(R.string.title_update_config_count, result.configCount)) + toast( + getQuantityString( + R.plurals.title_update_config_count, + result.configCount, + result.configCount, + ) + ) else -> toast(getString(R.string.title_update_subscription_result, result.configCount, result.successCount, result.failureCount, result.skipCount)) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt index 6b335b85..ef87df6b 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt @@ -222,7 +222,13 @@ class UserAssetActivity : HelperBaseComponentActivity() { viewModel.downloadGeoFiles(extDir, httpPort, proxyUsername, proxyPassword) } if (result.successCount > 0) { - toast(getString(R.string.title_update_asset_count, result.successCount)) + toast( + resources.getQuantityString( + R.plurals.title_update_asset_count, + result.successCount, + result.successCount, + ) + ) } else { toast(getString(R.string.toast_failure)) } diff --git a/V2rayNG/app/src/main/res/values-ar/strings.xml b/V2rayNG/app/src/main/res/values-ar/strings.xml index 0582cfd0..dfdb2fb9 100644 --- a/V2rayNG/app/src/main/res/values-ar/strings.xml +++ b/V2rayNG/app/src/main/res/values-ar/strings.xml @@ -351,8 +351,22 @@ حذف %d من التكوينات استيراد %d من التكوينات تصدير %d من التكوينات - تحديث %d من التكوينات - تم تحديث %d من ملفات الأصول + + لم يتم تحديث أي تكوينات + تم تحديث تكوين واحد + تم تحديث تكوينين + تم تحديث %1$d تكوينات + تم تحديث %1$d تكوينًا + تم تحديث %1$d تكوين + + + لم يتم تحديث أي ملفات أصول + تم تحديث ملف أصول واحد + تم تحديث ملفي أصول + تم تحديث %1$d ملفات أصول + تم تحديث %1$d ملف أصول + تم تحديث %1$d ملف أصول + تم تحديث %1$d إعدادات (%2$d ناجحة، %3$d فاشلة، %4$d متخطاة) لا توجد اشتراكات لم يُعثر على الخادم المحدد في المجموعة الحالية diff --git a/V2rayNG/app/src/main/res/values-bn/strings.xml b/V2rayNG/app/src/main/res/values-bn/strings.xml index b2dd61d4..85e13f7f 100644 --- a/V2rayNG/app/src/main/res/values-bn/strings.xml +++ b/V2rayNG/app/src/main/res/values-bn/strings.xml @@ -351,8 +351,14 @@ %dটি কনফিগারেশন মুছুন %dটি কনফিগারেশন আমদানি করুন %dটি কনফিগারেশন রপ্তানি করুন - %dটি কনফিগারেশন আপডেট করুন - %dটি অ্যাসেট ফাইল আপডেট হয়েছে + + %1$dটি কনফিগারেশন আপডেট হয়েছে + %1$dটি কনফিগারেশন আপডেট হয়েছে + + + %1$dটি অ্যাসেট ফাইল আপডেট হয়েছে + %1$dটি অ্যাসেট ফাইল আপডেট হয়েছে + %1$dটি কনফিগ আপডেট হয়েছে (%2$d সফল, %3$d ব্যর্থ, %4$d এড়ানো) কোনো সাবস্ক্রিপশন নেই বর্তমান গ্রুপে নির্বাচিত সার্ভারটি পাওয়া যায়নি 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 d1deb211..2e105368 100644 --- a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml +++ b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml @@ -351,8 +351,14 @@ پاک کردن %d کانفیگ و من ٱووردن %d کانفیگ و در کشیڌن %d کانفیگ - ورۊ کردن %d کانفیگ - %d فایل بونچک جغرافیایی ورۊ وابی + + %1$d کانفیگ ورۊ وابی + %1$d کانفیگ ورۊ وابی + + + %1$d فایل بونچک جوقرافیایی ورۊ وابی + %1$d فایل بونچک جوقرافیایی ورۊ وابی + %1$d کانفیگ ورۊ وابی (مووفق: %2$d، شکست خرده: %3$d، رڌ وابیڌه: %4$d) بؽ اشتراک سرور پسند وابیڌه من بونکۊ سکویی نجۊرست diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml index f5db2f9c..6a19ae11 100644 --- a/V2rayNG/app/src/main/res/values-fa/strings.xml +++ b/V2rayNG/app/src/main/res/values-fa/strings.xml @@ -351,8 +351,14 @@ حذف %d کانفیگ وارد کردن %d کانفیگ صادر کردن %d کانفیگ - آپدیت کردن %d کانفیگ - %d فایل منبع بروزرسانی شد + + %1$d کانفیگ به‌روزرسانی شد + %1$d کانفیگ به‌روزرسانی شد + + + %1$d فایل منبع به‌روزرسانی شد + %1$d فایل منبع به‌روزرسانی شد + بروزرسانی %1$d کانفیگ انجام شد (%2$d موفق، %3$d شکست خورده، %4$d نادیده گرفته شده) هیچ اشتراکی وجود ندارد سرور انتخاب‌شده در گروه فعلی پیدا نشد diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml index 09d506a4..89db311f 100644 --- a/V2rayNG/app/src/main/res/values-ru/strings.xml +++ b/V2rayNG/app/src/main/res/values-ru/strings.xml @@ -352,8 +352,18 @@ Удалено профилей: %d Импортировано профилей: %d Экспортировано профилей: %d - Обновлено профилей: %d - Обновлено файлов ресурсов: %d + + Обновлён %1$d профиль + Обновлено %1$d профиля + Обновлено %1$d профилей + Обновлено %1$d профиля + + + Обновлён %1$d файл ресурсов + Обновлено %1$d файла ресурсов + Обновлено %1$d файлов ресурсов + Обновлено %1$d файла ресурсов + Обновлено профилей: %1$d (успешно: %2$d, ошибки: %3$d, пропущено: %4$d) Нет подписок Выбранный профиль не найден в текущей группе diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml index 4e7f3d4f..afefd502 100644 --- a/V2rayNG/app/src/main/res/values-vi/strings.xml +++ b/V2rayNG/app/src/main/res/values-vi/strings.xml @@ -351,8 +351,12 @@ Xóa %d cấu hình Nhập %d cấu hình Xuất %d cấu hình - Cập nhật %d cấu hình - Đã cập nhật %d tệp tài nguyên + + Đã cập nhật %1$d cấu hình + + + Đã cập nhật %1$d tệp tài nguyên + Đã cập nhật %1$d cấu hình (%2$d thành công, %3$d thất bại, %4$d bỏ qua) Không có đăng ký Không tìm thấy máy chủ đã chọn trong nhóm hiện tại 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 3e375eff..a055ef59 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -351,8 +351,12 @@ 删除 %d 个配置 导入 %d 个配置 导出 %d 个配置 - 更新 %d 个配置 - 已更新 %d 个资源文件 + + 已更新 %1$d 个配置 + + + 已更新 %1$d 个资源文件 + 更新了 %1$d 个配置(%2$d 个成功,%3$d 个失败,%4$d 个跳过) 无订阅 当前分组中未找到选中的服务器 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 28d861f3..d816622d 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -351,8 +351,12 @@ 刪除 %d 個設定 匯入 %d 個設定 匯出 %d 個設定 - 更新 %d 個設定 - 已更新 %d 個資源檔案 + + 已更新 %1$d 個設定 + + + 已更新 %1$d 個資源檔案 + 更新了 %1$d 個設定(%2$d 個成功,%3$d 個失敗,%4$d 個跳過) 無訂閱 目前群組中找不到所選伺服器 diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index eb861092..66ffd8bd 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -368,8 +368,14 @@ Delete %d configs Import %d configs Export %d configs - Update %d configs - Updated %d asset files + + Updated %1$d config + Updated %1$d configs + + + Updated %1$d asset file + Updated %1$d asset files + Updated %1$d configs (%2$d success, %3$d failed, %4$d skipped) No subscriptions Selected server not found in current group