mirror of
https://github.com/KitsunePie/AppErrorsTracking.git
synced 2025-09-01 16:55:18 +08:00
Support i18n
This commit is contained in:
@@ -88,6 +88,16 @@ object FrameworkHooker : YukiBaseHooker() {
|
||||
}
|
||||
}
|
||||
|
||||
/** 语言区域改变广播接收器 */
|
||||
private val localeChangedReceiver by lazy {
|
||||
object : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context?, intent: Intent?) {
|
||||
/** 刷新模块 Resources 缓存 */
|
||||
refreshModuleAppResources()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册广播接收器
|
||||
* @param context 实例
|
||||
@@ -95,9 +105,18 @@ object FrameworkHooker : YukiBaseHooker() {
|
||||
private fun registerReceiver(context: Context) {
|
||||
if (isRegisterReceiver) return
|
||||
context.registerReceiver(userPresentReceiver, IntentFilter().apply { addAction(Intent.ACTION_USER_PRESENT) })
|
||||
context.registerReceiver(localeChangedReceiver, IntentFilter().apply { addAction(Intent.ACTION_LOCALE_CHANGED) })
|
||||
isRegisterReceiver = true
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 I18n 字符串
|
||||
* @param resId 模块资源 Id
|
||||
* @param objArrs 格式化数组
|
||||
* @return [String]
|
||||
*/
|
||||
private fun string(resId: Int, vararg objArrs: Any) = moduleAppResources.getString(resId, *objArrs)
|
||||
|
||||
/**
|
||||
* 创建对话框按钮
|
||||
* @param context 实例
|
||||
@@ -208,47 +227,47 @@ object FrameworkHooker : YukiBaseHooker() {
|
||||
android.R.style.Theme_Material_Dialog
|
||||
else android.R.style.Theme_Material_Light_Dialog
|
||||
).create().apply {
|
||||
setTitle("$appName ${if (isRepeating) "屡次停止运行" else "已停止运行"}")
|
||||
setTitle(string(if (isRepeating) R.string.aerr_repeated_title else R.string.aerr_title, appName))
|
||||
setView(LinearLayout(context).apply {
|
||||
orientation = LinearLayout.VERTICAL
|
||||
/** 应用信息按钮 */
|
||||
val appInfoButton =
|
||||
createButtonItem(context, R.drawable.ic_baseline_info, content = "应用信息") {
|
||||
createButtonItem(context, R.drawable.ic_baseline_info, string(R.string.app_info)) {
|
||||
cancel()
|
||||
context.openSelfSetting(packageName)
|
||||
}
|
||||
|
||||
/** 关闭应用按钮 */
|
||||
val closeAppButton =
|
||||
createButtonItem(context, R.drawable.ic_baseline_close, content = "关闭应用") { cancel() }
|
||||
createButtonItem(context, R.drawable.ic_baseline_close, string(R.string.close_app)) { cancel() }
|
||||
|
||||
/** 重新打开按钮 */
|
||||
val reOpenButton =
|
||||
createButtonItem(context, R.drawable.ic_baseline_refresh, content = "重新打开") {
|
||||
createButtonItem(context, R.drawable.ic_baseline_refresh, string(R.string.reopen_app)) {
|
||||
cancel()
|
||||
context.openApp(packageName)
|
||||
}
|
||||
|
||||
/** 错误详情按钮 */
|
||||
val errorDetailButton =
|
||||
createButtonItem(context, R.drawable.ic_baseline_bug_report, content = "错误详情") {
|
||||
createButtonItem(context, R.drawable.ic_baseline_bug_report, string(R.string.error_detail)) {
|
||||
// TODO 待开发
|
||||
}
|
||||
|
||||
/** 忽略按钮 - 直到解锁 */
|
||||
val ignoredUntilUnlockButton =
|
||||
createButtonItem(context, R.drawable.ic_baseline_eject, content = "忽略(直到设备重新解锁)") {
|
||||
createButtonItem(context, R.drawable.ic_baseline_eject, string(R.string.ignore_if_unlock)) {
|
||||
cancel()
|
||||
ignoredErrorsIfUnlockApps.add(packageName)
|
||||
context.toast(msg = "忽略“$appName”的错误直到设备重新解锁")
|
||||
context.toast(string(R.string.ignore_if_unlock_tip, appName))
|
||||
}
|
||||
|
||||
/** 忽略按钮 - 直到重启 */
|
||||
val ignoredUntilRestartButton =
|
||||
createButtonItem(context, R.drawable.ic_baseline_eject, content = "忽略(直到设备重新启动)") {
|
||||
createButtonItem(context, R.drawable.ic_baseline_eject, string(R.string.ignore_if_restart)) {
|
||||
cancel()
|
||||
ignoredErrorsIfRestartApps.add(packageName)
|
||||
context.toast(msg = "忽略“$appName”的错误直到设备重新启动")
|
||||
context.toast(string(R.string.ignore_if_restart_tip, appName))
|
||||
}
|
||||
/** 判断进程是否为 APP */
|
||||
if (isApp) {
|
||||
|
@@ -72,7 +72,7 @@ fun Context.openSelfSetting(packageName: String = this.packageName) = runCatchin
|
||||
action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
|
||||
data = Uri.fromParts("package", packageName, null)
|
||||
})
|
||||
}.onFailure { toast(msg = "无法打开 $packageName 的设置界面") }
|
||||
}.onFailure { toast(msg = "Cannot open '$packageName'") }
|
||||
|
||||
/**
|
||||
* 当前 APP 是否可被启动
|
||||
@@ -89,4 +89,4 @@ fun Context.openApp(packageName: String = this.packageName) = runCatching {
|
||||
startActivity(packageManager.getLaunchIntentForPackage(packageName)?.apply {
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
})
|
||||
}.onFailure { toast(msg = "无法启动 $packageName") }
|
||||
}.onFailure { toast(msg = "Cannot start '$packageName'") }
|
16
app/src/main/res/values-ja/strings.xml
Normal file
16
app/src/main/res/values-ja/strings.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">例外追跡</string>
|
||||
<string name="xposed_desc">ネイティブFCダイアログに機能を追加し、中国の国内カスタムROMがFCダイアログを削除する問題を修正して、Android開発者のエクスペリエンスを向上させます。</string>
|
||||
<string name="app_info">アプリ情報</string>
|
||||
<string name="reopen_app">再開する</string>
|
||||
<string name="error_detail">エラーの詳細</string>
|
||||
<string name="ignore_if_unlock">無視(ロックが解除されるまで)</string>
|
||||
<string name="ignore_if_restart">無視(システイムが再起動するまで)</string>
|
||||
<string name="close_app">アプリを閉じる</string>
|
||||
<string name="aerr_title">%1$s がエラー</string>
|
||||
<string name="aerr_repeated_title">%1$s が再びエラー</string>
|
||||
<string name="ignore_if_restart_tip">システイムが再起動するまで、「%1$s」のエラーを無視します</string>
|
||||
<string name="ignore_if_unlock_tip">ロックが解除されるまで、「%1$s」のエラーを無視します</string>
|
||||
<string name="back">戻る</string>
|
||||
</resources>
|
16
app/src/main/res/values-zh-rCN/strings.xml
Normal file
16
app/src/main/res/values-zh-rCN/strings.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">异常跟踪</string>
|
||||
<string name="xposed_desc">为原生 FC 对话框增加更多功能并修复国内定制 ROM 删除 FC 对话框的问题,给 Android 开发者带来更好的体验。\\n开发者:酷安 @星夜不荟</string>
|
||||
<string name="app_info">应用信息</string>
|
||||
<string name="reopen_app">重新打开</string>
|
||||
<string name="error_detail">错误详情</string>
|
||||
<string name="ignore_if_unlock">忽略(直到设备重新解锁)</string>
|
||||
<string name="ignore_if_restart">忽略(直到设备重新启动)</string>
|
||||
<string name="close_app">关闭应用</string>
|
||||
<string name="aerr_title">%1$s 已停止运行</string>
|
||||
<string name="aerr_repeated_title">%1$s 屡次停止运行</string>
|
||||
<string name="ignore_if_unlock_tip">忽略“%1$s”的错误直到设备重新解锁</string>
|
||||
<string name="ignore_if_restart_tip">忽略“%1$s”的错误直到设备重新启动</string>
|
||||
<string name="back">返回</string>
|
||||
</resources>
|
16
app/src/main/res/values-zh-rHK/strings.xml
Normal file
16
app/src/main/res/values-zh-rHK/strings.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">異常追綜</string>
|
||||
<string name="xposed_desc">為原生 FC 對話框增加更多功能並修復中國大陸定制 ROM 刪除 FC 對話框的問題,給 Android 開發者帶來更好的體驗。 \\n開發者:酷安 @星夜不薈</string>
|
||||
<string name="app_info">程式情報</string>
|
||||
<string name="reopen_app">重新開啟</string>
|
||||
<string name="error_detail">異常詳解</string>
|
||||
<string name="ignore_if_unlock">忽略(直到設備重新開屏)</string>
|
||||
<string name="ignore_if_restart">忽略(直到設備重新開機)</string>
|
||||
<string name="close_app">結束程式</string>
|
||||
<string name="aerr_title">%1$s 已停止運作</string>
|
||||
<string name="aerr_repeated_title">%1$s 屢次停止運作</string>
|
||||
<string name="ignore_if_unlock_tip">忽略“%1$s”的錯誤直到設備重新開屏</string>
|
||||
<string name="ignore_if_restart_tip">忽略“%1$s”的錯誤直到設備重新開機</string>
|
||||
<string name="back">回退</string>
|
||||
</resources>
|
16
app/src/main/res/values-zh-rMO/strings.xml
Normal file
16
app/src/main/res/values-zh-rMO/strings.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">異常跟踪</string>
|
||||
<string name="xposed_desc">為原生 FC 對話框增加更多功能並修復中國大陸定制 ROM 刪除 FC 對話框的問題,給 Android 開發者帶來更好的體驗。 \\n開發者:酷安 @星夜不薈</string>
|
||||
<string name="app_info">程式詳情</string>
|
||||
<string name="reopen_app">重新開啟</string>
|
||||
<string name="error_detail">異常詳解</string>
|
||||
<string name="ignore_if_unlock">忽略(直到設備重新開屏)</string>
|
||||
<string name="ignore_if_restart">忽略(直到設備重新開機)</string>
|
||||
<string name="close_app">結束程式</string>
|
||||
<string name="aerr_title">%1$s 已停止運作</string>
|
||||
<string name="aerr_repeated_title">%1$s 屢次停止運作</string>
|
||||
<string name="ignore_if_unlock_tip">忽略“%1$s”的錯誤直到設備重新開屏</string>
|
||||
<string name="ignore_if_restart_tip">忽略“%1$s”的錯誤直到設備重新開機</string>
|
||||
<string name="back">回退</string>
|
||||
</resources>
|
16
app/src/main/res/values-zh-rTW/strings.xml
Normal file
16
app/src/main/res/values-zh-rTW/strings.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">異常調查</string>
|
||||
<string name="xposed_desc">為原生 FC 對話框增加更多功能並修復中國大陸定制 ROM 刪除 FC 對話框的問題,給 Android 開發者帶來更好的體驗。 \\n開發者:酷安 @星夜不薈</string>
|
||||
<string name="app_info">程式情報</string>
|
||||
<string name="reopen_app">重新開啟</string>
|
||||
<string name="error_detail">異常詳解</string>
|
||||
<string name="ignore_if_unlock">忽略(直到設備重新開屏)</string>
|
||||
<string name="ignore_if_restart">忽略(直到設備重新開機)</string>
|
||||
<string name="close_app">結束程式</string>
|
||||
<string name="aerr_title">%1$s 已停止運作</string>
|
||||
<string name="aerr_repeated_title">%1$s 屢次停止運作</string>
|
||||
<string name="ignore_if_unlock_tip">忽略“%1$s”的錯誤直到設備重新開屏</string>
|
||||
<string name="ignore_if_restart_tip">忽略“%1$s”的錯誤直到設備重新開機</string>
|
||||
<string name="back">回退</string>
|
||||
</resources>
|
@@ -1,4 +1,15 @@
|
||||
<resources>
|
||||
<string name="app_name">异常跟踪</string>
|
||||
<string name="xposed_desc">为原生 FC 对话框增加更多功能并修复国内定制 ROM 删除 FC 对话框的问题,给 Android 开发者带来更好的体验。\n开发者:酷安 @星夜不荟</string>
|
||||
<string name="app_name">AppErrorsTracking</string>
|
||||
<string name="xposed_desc">Added more features to app\'s crash dialog, fixed custom rom deleted dialog, the best experience to Android developer.</string>
|
||||
<string name="app_info">App\'s Info</string>
|
||||
<string name="reopen_app">Reopen App</string>
|
||||
<string name="error_detail">Error Detail</string>
|
||||
<string name="ignore_if_unlock">Mute until device unlocks</string>
|
||||
<string name="ignore_if_restart">Mute until device restarts</string>
|
||||
<string name="close_app">Close App</string>
|
||||
<string name="aerr_title">%1$s has stopped</string>
|
||||
<string name="aerr_repeated_title">%1$s keeps stopping</string>
|
||||
<string name="ignore_if_unlock_tip">Ignore errors for \'%1$s\' until device is re-unlocked</string>
|
||||
<string name="ignore_if_restart_tip">Ignore errors for \'%1$s\' until device reboots</string>
|
||||
<string name="back">Back</string>
|
||||
</resources>
|
Reference in New Issue
Block a user