summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-03-28 17:25:41 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-03-28 17:25:41 +0000
commite4be63d1cc3eca1c97b02fc513f05bb2c45a9628 (patch)
treeb32c0e467aed8b978247ea03ea6beda4817d7f6e
parent11c394285fc63dfd975f0716608c6f417142ad2c (diff)
parente696eace6cbd7d8b146370b7a408f90803222c31 (diff)
downloadPermission-android13-mainline-wifi-release.tar.gz
Snap for 9834661 from e696eace6cbd7d8b146370b7a408f90803222c31 to mainline-wifi-releaseaml_wif_331810010android13-mainline-wifi-release
Change-Id: I2ec5a256613a7af81e027167fb82e4b4ce0a8d13
-rw-r--r--PermissionController/OWNERS4
-rw-r--r--PermissionController/res/values-af/strings.xml4
-rw-r--r--PermissionController/res/values-am/strings.xml4
-rw-r--r--PermissionController/res/values-ar/strings.xml4
-rw-r--r--PermissionController/res/values-as-car/strings.xml21
-rw-r--r--PermissionController/res/values-as/strings.xml4
-rw-r--r--PermissionController/res/values-az/strings.xml4
-rw-r--r--PermissionController/res/values-b+sr+Latn/strings.xml4
-rw-r--r--PermissionController/res/values-be/strings.xml4
-rw-r--r--PermissionController/res/values-bg/strings.xml4
-rw-r--r--PermissionController/res/values-bn/strings.xml4
-rw-r--r--PermissionController/res/values-bs-car/strings.xml2
-rw-r--r--PermissionController/res/values-bs/strings.xml4
-rw-r--r--PermissionController/res/values-ca/strings.xml6
-rw-r--r--PermissionController/res/values-cs-car/strings.xml21
-rw-r--r--PermissionController/res/values-cs/strings.xml4
-rw-r--r--PermissionController/res/values-da/strings.xml4
-rw-r--r--PermissionController/res/values-de-car/strings.xml2
-rw-r--r--PermissionController/res/values-de/strings.xml4
-rw-r--r--PermissionController/res/values-el-car/strings.xml21
-rw-r--r--PermissionController/res/values-el/strings.xml4
-rw-r--r--PermissionController/res/values-en-rAU/strings.xml4
-rw-r--r--PermissionController/res/values-en-rCA/strings.xml4
-rw-r--r--PermissionController/res/values-en-rGB/strings.xml4
-rw-r--r--PermissionController/res/values-en-rIN/strings.xml4
-rw-r--r--PermissionController/res/values-en-rXC/strings.xml4
-rw-r--r--PermissionController/res/values-es-rUS-car/strings.xml21
-rw-r--r--PermissionController/res/values-es-rUS/strings.xml4
-rw-r--r--PermissionController/res/values-es/strings.xml6
-rw-r--r--PermissionController/res/values-et/strings.xml4
-rw-r--r--PermissionController/res/values-eu/strings.xml4
-rw-r--r--PermissionController/res/values-fa/strings.xml4
-rw-r--r--PermissionController/res/values-fi/strings.xml4
-rw-r--r--PermissionController/res/values-fr-car/strings.xml21
-rw-r--r--PermissionController/res/values-fr-rCA-car/strings.xml21
-rw-r--r--PermissionController/res/values-fr-rCA/strings.xml4
-rw-r--r--PermissionController/res/values-fr-v33/strings.xml2
-rw-r--r--PermissionController/res/values-fr/strings.xml4
-rw-r--r--PermissionController/res/values-gl-car/strings.xml21
-rw-r--r--PermissionController/res/values-gl/strings.xml4
-rw-r--r--PermissionController/res/values-gu/strings.xml8
-rw-r--r--PermissionController/res/values-hi/strings.xml4
-rw-r--r--PermissionController/res/values-hr/strings.xml4
-rw-r--r--PermissionController/res/values-hu/strings.xml4
-rw-r--r--PermissionController/res/values-hy-car/strings.xml21
-rw-r--r--PermissionController/res/values-hy/strings.xml4
-rw-r--r--PermissionController/res/values-in/strings.xml6
-rw-r--r--PermissionController/res/values-is/strings.xml4
-rw-r--r--PermissionController/res/values-it/strings.xml4
-rw-r--r--PermissionController/res/values-iw/strings.xml4
-rw-r--r--PermissionController/res/values-ja/strings.xml4
-rw-r--r--PermissionController/res/values-ka-car/strings.xml21
-rw-r--r--PermissionController/res/values-ka/strings.xml4
-rw-r--r--PermissionController/res/values-kk-car/strings.xml21
-rw-r--r--PermissionController/res/values-kk/strings.xml4
-rw-r--r--PermissionController/res/values-km-car/strings.xml21
-rw-r--r--PermissionController/res/values-km/strings.xml4
-rw-r--r--PermissionController/res/values-kn/strings.xml4
-rw-r--r--PermissionController/res/values-ko/strings.xml6
-rw-r--r--PermissionController/res/values-ky/strings.xml4
-rw-r--r--PermissionController/res/values-lo/strings.xml4
-rw-r--r--PermissionController/res/values-lt/strings.xml4
-rw-r--r--PermissionController/res/values-lv/strings.xml4
-rw-r--r--PermissionController/res/values-mk-car/strings.xml21
-rw-r--r--PermissionController/res/values-mk/strings.xml4
-rw-r--r--PermissionController/res/values-ml/strings.xml4
-rw-r--r--PermissionController/res/values-mn/strings.xml6
-rw-r--r--PermissionController/res/values-mr/strings.xml4
-rw-r--r--PermissionController/res/values-ms/strings.xml4
-rw-r--r--PermissionController/res/values-my-car/strings.xml21
-rw-r--r--PermissionController/res/values-my/strings.xml6
-rw-r--r--PermissionController/res/values-nb/strings.xml4
-rw-r--r--PermissionController/res/values-ne/strings.xml8
-rw-r--r--PermissionController/res/values-nl-car/strings.xml21
-rw-r--r--PermissionController/res/values-nl/strings.xml4
-rw-r--r--PermissionController/res/values-or/strings.xml4
-rw-r--r--PermissionController/res/values-pa/strings.xml4
-rw-r--r--PermissionController/res/values-pl-car/strings.xml21
-rw-r--r--PermissionController/res/values-pl/strings.xml4
-rw-r--r--PermissionController/res/values-pt-car/strings.xml21
-rw-r--r--PermissionController/res/values-pt-rBR-car/strings.xml21
-rw-r--r--PermissionController/res/values-pt-rBR-v33/strings.xml2
-rw-r--r--PermissionController/res/values-pt-rBR/strings.xml4
-rw-r--r--PermissionController/res/values-pt-rPT/strings.xml4
-rw-r--r--PermissionController/res/values-pt-v33/strings.xml2
-rw-r--r--PermissionController/res/values-pt/strings.xml4
-rw-r--r--PermissionController/res/values-ro-car/strings.xml21
-rw-r--r--PermissionController/res/values-ro/strings.xml4
-rw-r--r--PermissionController/res/values-ru-car/strings.xml21
-rw-r--r--PermissionController/res/values-ru/strings.xml4
-rw-r--r--PermissionController/res/values-si-car/strings.xml21
-rw-r--r--PermissionController/res/values-si/strings.xml4
-rw-r--r--PermissionController/res/values-sk/strings.xml4
-rw-r--r--PermissionController/res/values-sl-car/strings.xml21
-rw-r--r--PermissionController/res/values-sl/strings.xml4
-rw-r--r--PermissionController/res/values-sq-car/strings.xml21
-rw-r--r--PermissionController/res/values-sq/strings.xml4
-rw-r--r--PermissionController/res/values-sr/strings.xml4
-rw-r--r--PermissionController/res/values-sv/strings.xml4
-rw-r--r--PermissionController/res/values-sw-car/strings.xml21
-rw-r--r--PermissionController/res/values-sw/strings.xml4
-rw-r--r--PermissionController/res/values-ta/strings.xml4
-rw-r--r--PermissionController/res/values-te/strings.xml4
-rw-r--r--PermissionController/res/values-th/strings.xml4
-rw-r--r--PermissionController/res/values-tl/strings.xml4
-rw-r--r--PermissionController/res/values-tr-car/strings.xml21
-rw-r--r--PermissionController/res/values-tr/strings.xml6
-rw-r--r--PermissionController/res/values-uk-car/strings.xml21
-rw-r--r--PermissionController/res/values-uk/strings.xml4
-rw-r--r--PermissionController/res/values-ur/strings.xml4
-rw-r--r--PermissionController/res/values-uz/strings.xml4
-rw-r--r--PermissionController/res/values-vi/strings.xml4
-rw-r--r--PermissionController/res/values-zh-rCN-car/strings.xml21
-rw-r--r--PermissionController/res/values-zh-rCN-v33/strings.xml2
-rw-r--r--PermissionController/res/values-zh-rCN/strings.xml10
-rw-r--r--PermissionController/res/values-zh-rHK/strings.xml6
-rw-r--r--PermissionController/res/values-zh-rTW-car/strings.xml21
-rw-r--r--PermissionController/res/values-zh-rTW/strings.xml4
-rw-r--r--PermissionController/res/values-zu-car/strings.xml21
-rw-r--r--PermissionController/res/values-zu/strings.xml4
-rw-r--r--PermissionController/res/values/strings.xml8
-rw-r--r--PermissionController/res/xml/unused_app_categories.xml6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt14
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionGroup.java7
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java10
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/UnusedAppsFragment.kt69
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/UnusedAppsViewModel.kt167
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt4
-rw-r--r--PermissionController/src/com/android/permissioncontroller/privacysources/AccessibilitySourceService.kt6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusAnimationSequencer.kt168
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusPreference.java170
-rw-r--r--PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetycenter/ui/SafetyStatusAnimationSequencerTest.kt359
-rw-r--r--SafetyCenter/Resources/res/values-ky/strings.xml2
-rw-r--r--SafetyCenter/Resources/res/values-mr/strings.xml2
-rw-r--r--SafetyCenter/Resources/res/values-th/strings.xml2
-rw-r--r--SafetyCenter/Resources/shared_res/values-pt-rBR/strings.xml2
-rw-r--r--SafetyCenter/Resources/shared_res/values-pt/strings.xml2
137 files changed, 1587 insertions, 385 deletions
diff --git a/PermissionController/OWNERS b/PermissionController/OWNERS
index 73b78cd83..5cd46d618 100644
--- a/PermissionController/OWNERS
+++ b/PermissionController/OWNERS
@@ -4,8 +4,8 @@ include platform/frameworks/base:/core/java/android/permission/OWNERS
stenning@google.com
# For television related changes
-rgl@google.com
-sergeynv@google.com
+aabdagic@google.com
+robhor@google.com
# For incident report related changes
joeo@google.com
diff --git a/PermissionController/res/values-af/strings.xml b/PermissionController/res/values-af/strings.xml
index 9f4b10a4b..39eac9a7c 100644
--- a/PermissionController/res/values-af/strings.xml
+++ b/PermissionController/res/values-af/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> en <xliff:g id="NUMBER">%2$s</xliff:g> ander toestemmings verwyder"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Ongebruikte programme"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"As \'n program vir \'n paar maande nie gebruik word nie:\n\n• Word toestemmings verwyder om jou privaatheid te beskerm\n• Word kennisgewings gestop om batterykrag te bespaar\n• Word tydelike lêers verwyder om spasie beskikbaar te maak\n\nMaak die program oop om weer toestemmings en kennisgewings toe te laat."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"As ’n program ’n paar maande lank nie gebruik is nie:\n\n• Word toestemmings verwyder om jou data te beskerm\n• Word tydelike lêers verwyder om spasie beskikbaar te maak\n\nMaak die program oop om weer toestemmings te gee."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Meer as <xliff:g id="NUMBER">%s</xliff:g> maande gelede laas oopgemaak"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"As ’n app ’n maand lank nie gebruik is nie:\n\n• Toestemmings word verwyder om jou data te beskerm\n• Tydelike lêers word verwyder om spasie beskikbaar te maak\n\nMaak die app oop om weer toestemmings te gee."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Meer as # maande gelede laas oopgemaak}other{Meer as # maande gelede laas oopgemaak}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Program is <xliff:g id="DATE">%s</xliff:g> laas oopgemaak"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"<xliff:g id="DATE">%s</xliff:g> laas oopgemaak"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"As jy toelaat dat alle lêers bestuur word, kan hierdie program enige lêers in gedeelde bergingspasie op hierdie toestel en gekoppelde bergingtoestelle kry, wysig en uitvee. Die program kan toegang tot lêers kry sonder om jou te vra."</string>
diff --git a/PermissionController/res/values-am/strings.xml b/PermissionController/res/values-am/strings.xml
index abe78d1a8..514f824c3 100644
--- a/PermissionController/res/values-am/strings.xml
+++ b/PermissionController/res/values-am/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> እና <xliff:g id="NUMBER">%2$s</xliff:g> ሌሎች ፈቃዶች ተወግደዋል"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"ስራ ላይ ያልዋሉ መተግበሪያዎች"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"አንድ መተግበሪያ ለጥቂት ወራት ስራ ላይ ካልዋለ፦\n\n• ውሂብዎን ለመጠበቅ ፈቃዶች ይወገዳሉ\n• ባትሪን ለመቆጠብ ማሳወቂያዎች ይቆማሉ\n• ባዶ ቦታ ለማስለቀቅ ጊዜያዊ ፋይሎች ይወገዳሉ\n\nፈቃዶችን እና ማሳወቂያዎችን እንደገና ለመፍቀድ መተግበሪያውን ይክፈቱት።"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"አንድ መተግበሪያ ለጥቂት ወራት ስራ ላይ ካልዋለ፦\n\n• ውሂብዎን ለመጠበቅ ሲባል ፈቃዶች ይወገዳሉ\n• ቦታ ለማስለቀቅ ጊዜያዊ ፋይሎች ይወገዳሉ \n\nፈቃዶችን እንደገና ለመፍቀድ መተግበሪያውን ይክፈቱ።"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"መጨረሻ የተከፈተው ከ<xliff:g id="NUMBER">%s</xliff:g> ወሮች በላይ በፊት ነበር"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"መተግበሪያ ለአንድ ወር ጥቅም ላይ ካልዋለ፦\n\n• ውሂብዎን ለመጠበቅ ፈቃዶች ይወገዳሉ\n• ጊዜያዊ ፋይሎች ቦታ ለማስለቀቅ ይወገዳሉ\n\nፈቃዶችን ዳግም ለመፍቀድ መተግበሪያውን ይክፈቱ።"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{መጨረሻ የተከፈተው ከ# ወር በፊት}one{መጨረሻ የተከፈተው ከ# ወር በፊት}other{መጨረሻ የተከፈተው ከ# ወራት በፊት}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"መተግበሪያ ለመጨረሻ ጊዜ በ<xliff:g id="DATE">%s</xliff:g> ላይ ተከፍቷል"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"መጨረሻ የተከፈተው <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"ሁሉንም ፋይሎች ማስተዳደርን ከፈቀዱ፣ ይህ መተግበሪያ በዚህ መሣሪያ ላይ ወይም በተገናኙ ማከማቻ መሣሪያዎች ላይ ማናቸውንም ፋይሎች መድረስ፣ ማሻሻል እና መሰረዝ ይችላል። እርስዎን ሳይጠይቅ ይህ መተግበሪያ ፋይሎችን መድረስ ይችል ይሆናል።"</string>
diff --git a/PermissionController/res/values-ar/strings.xml b/PermissionController/res/values-ar/strings.xml
index 6a8f6aa9b..96bc7ebac 100644
--- a/PermissionController/res/values-ar/strings.xml
+++ b/PermissionController/res/values-ar/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"تمت إزالة إذن \"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\" وعدد <xliff:g id="NUMBER">%2$s</xliff:g> من الأذونات الأخرى."</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"التطبيقات غير المستخدمة"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"في حال عدم استخدام التطبيق لبضعة أشهر:\n\n• تتم إزالة الأذونات لحماية بياناتك.\n• يتم إيقاف الإشعارات لتوفير شحن البطارية.\n• تتم إزالة الملفات المؤقتة لتوفير مساحة.\n\nلمنح الأذونات والسماح للتطبيقات مرة أخرى، افتح التطبيق."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"في حال عدم استخدام تطبيق لبضعة أشهر:\n\n• تتم إزالة الأذونات لحماية بياناتك.\n• تتم إزالة الملفات المؤقَّتة لإخلاء بعض المساحة.\n\nللسماح بالأذونات مرة أخرى، ما عليك غير فتح التطبيق."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"تم فتح هذه التطبيقات آخر مرة قبل أكثر من <xliff:g id="NUMBER">%s</xliff:g> شهر"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"في حال عدم استخدام تطبيق لمدة شهر:\n\n• تتم إزالة الأذونات لحماية بياناتك.\n• تتم إزالة الملفات المؤقتة لإخلاء بعض المساحة.\n\nللسماح بالأذونات مرة أخرى، افتَح التطبيق."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{التطبيقات التي تم فتحها آخر مرة قبل أكثر من شهر واحد}zero{التطبيقات التي تم فتحها آخر مرة قبل أكثر من # شهر}two{التطبيقات التي تم فتحها آخر مرة قبل أكثر من شهرَين}few{التطبيقات التي تم فتحها آخر مرة قبل أكثر من # شهور}many{التطبيقات التي تم فتحها آخر مرة قبل أكثر من # شهرًا}other{التطبيقات التي تم فتحها آخر مرة قبل أكثر من # شهر}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"آخر مرة تم فتح التطبيق فيها: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"آخر مرة تم فتحه: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"في حال السماح لهذا التطبيق بإدارة كل الملفات، سيتمكن من الوصول إلى أي ملفات وتعديلها وحذفها من مساحة التخزين العادية على هذا الجهاز أو أجهزة التخزين المتصلة. يمكن أن يصل التطبيق إلى الملفات بدون طلب موافقتك."</string>
diff --git a/PermissionController/res/values-as-car/strings.xml b/PermissionController/res/values-as-car/strings.xml
new file mode 100644
index 000000000..1fb516b78
--- /dev/null
+++ b/PermissionController/res/values-as-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"কোনো এপ্‌ কেইমাহমান ব্যৱহাৰ নকৰাকৈ থাকিলে:\n\n• আপোনাৰ ডেটা সুৰক্ষিত কৰিবলৈ অনুমতিসমূহ আঁতৰোৱা হয়\n• ঠাই খালী কৰিবলৈ অস্থায়ী ফাইলসমূহ আঁতৰোৱা হয়"</string>
+</resources>
diff --git a/PermissionController/res/values-as/strings.xml b/PermissionController/res/values-as/strings.xml
index 2c01ce1a8..5c8e48806 100644
--- a/PermissionController/res/values-as/strings.xml
+++ b/PermissionController/res/values-as/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>ৰ আৰু <xliff:g id="NUMBER">%2$s</xliff:g> টা অন্য অনুমতি আঁতৰোৱা হ\'ল"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"অব্যৱহৃত এপ্‌"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"কোনো এপ্‌ কেইমাহমানৰ বাবে ব্যৱহাৰ নকৰাকৈ থাকিলে:\n\n• আপোনাৰ ডেটা সুৰক্ষিত কৰিবলৈ অনুমতিসমূহ আঁতৰোৱা হয়\n• বেটাৰী ৰাহি কৰিবলৈ জাননী বন্ধ কৰা হয়\n• ঠাই খালী কৰিবলৈ অস্থায়ী ফাইল আঁতৰোৱা হয়\n\nঅনুমতি আৰু জাননীত পুনৰ অনুমতি দিবলৈ, এপ্‌টো খোলক।"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"কোনো এপ্‌ কেইমাহমানৰ বাবে ব্যৱহাৰ নকৰাকৈ থাকিলে:\n\n• আপোনাৰ ডেটা সুৰক্ষিত কৰিবলৈ অনুমতিসমূহ আঁতৰোৱা হয়\n• ঠাই খালী কৰিবলৈ অস্থায়ী ফাইলসমূহ আঁতৰোৱা হয়\n\nপুনৰ অনুমতি দিবলৈ এপ্‌টো খোলক।"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"<xliff:g id="NUMBER">%s</xliff:g> মাহ পূর্বে অন্তিমবাৰ খোলা হৈছিল"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"কোনো এপ্‌ এমাহৰ বাবে ব্যৱহাৰ নকৰাকৈ থাকিলে:\n\n• আপোনাৰ ডেটা সুৰক্ষিত কৰিবলৈ অনুমতিসমূহ আঁতৰোৱা হয়\n• ঠাই খালী কৰিবলৈ অস্থায়ী ফাইল আঁতৰোৱা হয়\n\nপুনৰ অনুমতি দিবলৈ এপ্‌টো খোলক।"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{অন্তিমবাৰ # মাহতকৈও আগতে খোলা হৈছিল}one{অন্তিমবাৰ # মাহতকৈও আগতে খোলা হৈছিল}other{অন্তিমবাৰ # মাহতকৈও আগতে খোলা হৈছিল}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"এপ্‌টো অন্তিমবাৰ <xliff:g id="DATE">%s</xliff:g>ত খোলা হৈছিল"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"অন্তিমবাৰ <xliff:g id="DATE">%s</xliff:g>ত খোলা হৈছিল"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"আপুনি যদি আটাইবোৰ ফাইল পৰিচালনাৰ অনুমতি দিয়ে, এই এপ্‌টোৱে এই ডিভাইচটোৰ যৌথ ষ্ট\'ৰেজত থকা যিকোনো ফাইল অথবা সংযুক্ত ষ্ট\'ৰেজ ডিভাইচসমূহ এক্সেছ কৰিব, সংশোধন কৰিব আৰু মচিব পাৰে। এপ্‌টোৱে আপোনাক নোসোধাকৈয়ে ফাইলসমূহ এক্সেছ কৰিব পাৰে।"</string>
diff --git a/PermissionController/res/values-az/strings.xml b/PermissionController/res/values-az/strings.xml
index 8baa09979..9014b8483 100644
--- a/PermissionController/res/values-az/strings.xml
+++ b/PermissionController/res/values-az/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> və digər <xliff:g id="NUMBER">%2$s</xliff:g> icazə silindi"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"İstifadə olunmayan tətbiqlər"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Tətbiq bir neçə ay istifadə edilmirsə:\n\n• Datanızı qorumaq üçün icazələr silinir\n• Enerjiyə qənaət üçün bildirişlər dayandırılır\n• Yer boşaltmaq üçün müvəqqəti fayllar silinir\n\nİcazələrə və bildirişlərə yenidən icazə vermək üçün tətbiqi açın."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Tətbiq bir neçə ay istifadə edilmirsə:\n\n• Datanızı qorumaq üçün icazələr silinir\n• Yer boşaltmaq üçün müvəqqəti fayllar silinir\n\nYenidən icazə vermək üçün tətbiqi açın."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Sonuncu dəfə ən azı <xliff:g id="NUMBER">%s</xliff:g> ay əvvəl açılıb"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Tətbiq bir ay istifadə edilmirsə:\n\n• Datanızı qorumaq üçün icazələr silinir\n• Yer boşaltmaq üçün müvəqqəti fayllar silinir\n\nYenidən icazə vermək üçün tətbiqi açın."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Sonuncu dəfə ən azı # ay əvvəl açılıb}other{Sonuncu dəfə ən azı # ay əvvəl açılıb}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Tətbiq sonuncu dəfə <xliff:g id="DATE">%s</xliff:g> tarixində açılıb"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Sonuncu dəfə <xliff:g id="DATE">%s</xliff:g> tarixində açılıb"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Bununla, tətbiq bu və ya qoşulmuş cihazlarda ümumi yaddaşdakı bütün fayllara daxil ola, dəyişiklik edə və ya onları silə bilər. Fayllara sizdən xəbərsiz girə bilər."</string>
diff --git a/PermissionController/res/values-b+sr+Latn/strings.xml b/PermissionController/res/values-b+sr+Latn/strings.xml
index 32a2295f6..a1797e954 100644
--- a/PermissionController/res/values-b+sr+Latn/strings.xml
+++ b/PermissionController/res/values-b+sr+Latn/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Uklonjeno: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> i još <xliff:g id="NUMBER">%2$s</xliff:g> dozvole"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Aplikacije koje se ne koriste"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Ako ne koristite aplikaciju nekoliko meseci:\n\n• dozvole se uklanjaju da bi se zaštitili podaci\n• obaveštenja se zaustavljaju da bi se štedela baterija\n• privremeni fajlovi se uklanjaju da bi se oslobodio prostor\n\nDa biste ponovo omogućili dozvole i obaveštenja, otvorite aplikaciju."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Ako ne koristite aplikaciju nekoliko meseci:\n\n• dozvole se uklanjaju da bi se zaštitili podaci\n• privremeni fajlovi se uklanjaju da bi se oslobodio prostor\n\nDa biste ponovo omogućili dozvole, otvorite aplikaciju."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Poslednji put otvoreno pre više od <xliff:g id="NUMBER">%s</xliff:g> mes."</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Ako ne koristite aplikaciju mesec dana:\n\n• dozvole se uklanjaju da bi se zaštitili podaci\n• privremeni fajlovi se uklanjaju da bi se oslobodio prostor\n\nDa biste ponovo omogućili dozvole, otvorite aplikaciju."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Poslednji put otvoreno pre više od # meseca}one{Poslednji put otvoreno pre više od # meseca}few{Poslednji put otvoreno pre više od # meseca}other{Poslednji put otvoreno pre više od # meseci}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikacija je poslednji put otvorena: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Poslednji put otvoreno: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Ako omogućite upravljanje svim datotekama, ova aplikacija može da pristupa svim datotekama u zajedničkom memorijskom prostoru na ovom uređaju ili povezanim uređajima za skladištenje i da menja i briše te datoteke. Aplikacija može da pristupa datotekama bez pitanja."</string>
diff --git a/PermissionController/res/values-be/strings.xml b/PermissionController/res/values-be/strings.xml
index a45533fd6..ebd75ecd9 100644
--- a/PermissionController/res/values-be/strings.xml
+++ b/PermissionController/res/values-be/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"\"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\" і іншыя дазволы (<xliff:g id="NUMBER">%2$s</xliff:g> шт.) выдалены"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Праграмы, якія не выкарыстоўваюцца"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Калі праграма не выкарыстоўвалася некалькі месяцаў:\n\n• у мэтах абароны вашых даных выдаляюцца дазволы;\n• дзеля эканоміі зараду акумулятара спыняюцца апавяшчэнні;\n• для вызвалення месца выдаляюцца часовыя файлы.\n\nКаб зноў уключыць дазволы і апавяшчэнні, адкрыйце праграму."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Калі праграма не выкарыстоўвалася некалькі месяцаў:\n\n• у мэтах абароны вашых даных выдаляюцца дазволы;\n• для вызвалення месца выдаляюцца часовыя файлы.\n\nКаб зноў даць дазволы, адкрыйце праграму."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Адкрывалася ў апошні раз больш за <xliff:g id="NUMBER">%s</xliff:g> мес. таму"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Калі праграма не выкарыстоўвалася на працягу месяца:\n\n• у мэтах абароны вашых даных выдаляюцца дазволы;\n• для вызвалення месца выдаляюцца часовыя файлы.\n\nКаб зноў даць дазволы, адкрыйце праграму."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Апошні раз адкрываліся больш чым # месяц таму}one{Апошні раз адкрываліся больш чым # месяц таму}few{Апошні раз адкрываліся больш чым # месяцы таму}many{Апошні раз адкрываліся больш чым # месяцаў таму}other{Апошні раз адкрываліся больш чым # месяца таму}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Праграма адкрывалася ў апошні раз <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Адкрывалася ў апошні раз <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Калі вы дазволіце кіраванне ўсімі файламі, гэта праграма зможа атрымліваць доступ да ўсіх файлаў у агульным сховішчы на гэтай прыладзе ці ў сховішчах падключаных прылад, а таксама змяняць і выдаляць гэтыя файлы. Праграма зможа атрымліваць доступ да файлаў без вашага ведама."</string>
diff --git a/PermissionController/res/values-bg/strings.xml b/PermissionController/res/values-bg/strings.xml
index 0275e3353..6f1a42416 100644
--- a/PermissionController/res/values-bg/strings.xml
+++ b/PermissionController/res/values-bg/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Разрешението за <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> и още <xliff:g id="NUMBER">%2$s</xliff:g> са премахнати"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Неизползвани приложения"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Ако дадено приложение не бъде използвано няколко месеца:\n\n• разрешенията ще бъдат премахнати с цел защита на данните ви;\n• известията ще бъдат спрени с цел икономия на батерията;\n• временните файлове ще бъдат премахнати, за да се освободи място.\n\nЗа да предоставите отново разрешенията и да позволите известията, отворете приложението."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Ако дадено приложение не бъде използвано няколко месеца:\n\n• разрешенията ще бъдат премахнати с цел защита на данните ви;\n• временните файлове ще бъдат премахнати, за да се освободи място.\n\nЗа да предоставите отново разрешенията, отворете приложението."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Последно отваряне преди повече от <xliff:g id="NUMBER">%s</xliff:g> месеца"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Ако дадено приложение не бъде използвано в продължение на месец:\n\n• разрешенията ще бъдат премахнати с цел защита на данните ви;\n• временните файлове ще бъдат премахнати, за да се освободи място.\n\nЗа да предоставите отново разрешенията, отворете приложението."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Последно отваряне преди повече от # месец}other{Последно отваряне преди повече от # месеца}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Приложението е отворено за последно на <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Последно отваряне на <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Ако разрешите управлението на всички файлове, това приложение може да осъществява достъп до, да променя и изтрива всички файлове в стандартното хранилище на устройството или в свързаните хранилища. Приложението може да осъществява достъп до файловете, без да ви пита."</string>
diff --git a/PermissionController/res/values-bn/strings.xml b/PermissionController/res/values-bn/strings.xml
index 356e84d92..584e2e5b1 100644
--- a/PermissionController/res/values-bn/strings.xml
+++ b/PermissionController/res/values-bn/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> এবং অন্য <xliff:g id="NUMBER">%2$s</xliff:g>টি অনুমতি সরিয়ে দেওয়া হয়েছে"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"ব্যবহার করা হয়নি এমন অ্যাপ"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"কোনও অ্যাপ বেশ কয়েকমাস ধরে ব্যবহার করা না হলে:\n\n• আপনার ডেটা সুরক্ষিত রাখতে অনুমতি সরিয়ে নেওয়া হয়\n• ব্যাটারির চার্জ সাশ্রয় করতে বিজ্ঞপ্তি বন্ধ রাখা হয়\n• স্পেস খালি করতে অস্থায়ী ফাইল সরিয়ে নেওয়া হয়\n\nঅনুমতি এবং বিজ্ঞপ্তিগুলিতে আবার অনুমতি দেওয়ার জন্য অ্যাপ খুলুন।"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"কোনও অ্যাপ বেশ কয়েকমাস ধরে ব্যবহার করা না হলে:\n\n• আপনার ডেটা সুরক্ষিত রাখতে অনুমতি সরিয়ে নেওয়া হয়\n• স্পেস খালি করতে অস্থায়ী ফাইল সরিয়ে নেওয়া হয়\n\nআবার অনুমতি দিতে, অ্যাপ খুলুন।"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"<xliff:g id="NUMBER">%s</xliff:g> মাসেরও বেশি সময় আগে শেষ খোলা হয়েছিল"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"এক মাস কোনও অ্যাপ ব্যবহার করা না হলে:\n\n• আপনার ডেটা সুরক্ষিত রাখতে অনুমতি সরিয়ে নেওয়া হয়\n• স্পেস খালি করতে অস্থায়ী ফাইল সরিয়ে দেওয়া হয়\n\nআবার অনুমতি দিতে, অ্যাপ খুলুন।"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{# মাসেরও বেশি সময় আগে শেষবার খোলা হয়েছে}one{# মাসেরও বেশি সময় আগে শেষবার খোলা হয়েছে}other{# মাসেরও বেশি সময় আগে শেষবার খোলা হয়েছে}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"অ্যাপ শেষ <xliff:g id="DATE">%s</xliff:g> তারিখে খোলা হয়েছে"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"শেষ <xliff:g id="DATE">%s</xliff:g> তারিখে খোলা হয়েছে"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"এই অ্যাপকে সমস্ত ফাইল ম্যানেজ করার অনুমতি দিলে, অ্যাপটি এই ডিভাইসের বা এর সঙ্গে কানেক্ট করা অন্য কোনও স্টোরেজ ডিভাইসের কমন স্টোরেজের যেকোনও ফাইল অ্যাক্সেস ও পরিবর্তন করতে বা মুছে ফেলতে পারবে। অ্যাপটি আপনাকে না জানিয়েই ফাইল অ্যাক্সেস করতে পারে।"</string>
diff --git a/PermissionController/res/values-bs-car/strings.xml b/PermissionController/res/values-bs-car/strings.xml
index d22822341..f7f2ee7f0 100644
--- a/PermissionController/res/values-bs-car/strings.xml
+++ b/PermissionController/res/values-bs-car/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="unused_apps_page_summary" msgid="7505839764289846511">"Ako se aplikacija ne koristi nekoliko mjeseci:\n\n• Dopuštenja se uklanjaju radi zaštite vaših podataka\n• Privremene datoteke uklanjaju se radi oslobađanja prostora"</string>
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Ako se aplikacija ne koristi nekoliko mjeseci:\n\n• odobrenja se uklanjaju radi zaštite vaših podataka\n• privremeni fajlovi se uklanjaju radi oslobađanja prostora"</string>
</resources>
diff --git a/PermissionController/res/values-bs/strings.xml b/PermissionController/res/values-bs/strings.xml
index 97a5e4395..c9e2da42a 100644
--- a/PermissionController/res/values-bs/strings.xml
+++ b/PermissionController/res/values-bs/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Uklonjeno je odobrenje <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> i njih još <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Nekorištene aplikacije"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Ako se aplikacija ne koristi nekoliko mjeseci:\n\n• odobrenja će se ukloniti radi zaštite vaših podataka\n• obavještenja će se zaustaviti radi uštede baterije\n• privremeni fajlovi će se ukloniti radi oslobađanja prostora\n\nDa ponovo dozvolite odobrenja i obavještenja, otvorite aplikaciju."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Ako se aplikacija ne koristi nekoliko mjeseci:\n\n• odobrenja će se ukloniti radi zaštite vaših podataka\n• privremeni fajlovi će se ukloniti radi oslobađanja prostora\n\nOtvorite aplikaciju da ponovo dozvolite odobrenja."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Posljednji put otvoreno prije više od <xliff:g id="NUMBER">%s</xliff:g> mj."</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Ako se aplikacija ne koristi jedan mjesec:\n\n• odobrenja se uklanjaju radi zaštite vaših podataka\n• privremeni fajlovi se uklanjaju radi oslobađanja prostora\n\nDa ponovo dozvolite odobrenja, otvorite aplikaciju."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Zadnji put otvoreno prije više od # mjesec}one{Zadnji put otvoreno prije više od # mjesec}few{Zadnji put otvoreno prije više od # mjeseca}other{Zadnji put otvoreno prije više od # mjeseci}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikacija je posljednji put otvorena na dan <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Posljednji put otvoreno na dan <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Ako dozvolite upravljanje svim fajlovima, ova aplikacija može pristupati, mijenjati i brisati sve fajlove u zajedničkoj pohrani na ovom uređaju ili na povezanim uređajima za pohranu. Aplikacija može pristupati fajlovima bez prethodnog pitanja."</string>
diff --git a/PermissionController/res/values-ca/strings.xml b/PermissionController/res/values-ca/strings.xml
index 44ebe945e..a954c78a0 100644
--- a/PermissionController/res/values-ca/strings.xml
+++ b/PermissionController/res/values-ca/strings.xml
@@ -202,7 +202,7 @@
<string name="unused_apps_category_title" msgid="2988455616845243901">"Configuració d\'apps no utilitzades"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Suprimeix els permisos si no s\'utilitza l\'aplicació"</string>
<string name="unused_apps_label" msgid="2595428768404901064">"Suprimeix els permisos i allibera espai"</string>
- <string name="unused_apps_label_v2" msgid="7058776770056517980">"Posa en pausa activitat a app si no s\'usa"</string>
+ <string name="unused_apps_label_v2" msgid="7058776770056517980">"Activitat a l\'app en pausa si no s\'usa"</string>
<string name="unused_apps_summary" msgid="8839466950318403115">"Suprimeix els permisos i els fitxers temporals, i atura les notificacions"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Per protegir les teves dades, els permisos d\'aquesta aplicació se suprimiran si no la utilitzes durant uns mesos."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Si l\'aplicació no s\'utilitza durant uns mesos, se suprimiran els permisos següents per protegir les teves dades: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"El permís <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> i <xliff:g id="NUMBER">%2$s</xliff:g> permisos més s\'han suprimit"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Aplicacions no utilitzades"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Si una aplicació no s\'utilitza durant uns mesos:\n\n• Se suprimeixen els permisos per protegir les teves dades.\n• S\'aturen les notificacions per estalviar bateria.\n• Se suprimeixen els fitxers temporals per alliberar espai.\n\nPer tornar a permetre els permisos i les notificacions, obre l\'aplicació."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Si una aplicació no s\'utilitza durant uns mesos:\n\n• Se suprimeixen els permisos per protegir les teves dades.\n• Se suprimeixen els fitxers temporals per alliberar espai.\n\nPer tornar a concedir els permisos, obre l\'aplicació."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Obertes per darrera vegada fa més de <xliff:g id="NUMBER">%s</xliff:g> mesos"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Si una aplicació no s\'utilitza durant un mes:\n\n• Se suprimeixen els permisos per protegir les teves dades.\n• Se suprimeixen els fitxers temporals per alliberar espai.\n\nPer tornar a concedir els permisos, obre l\'aplicació."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Obertes per darrera vegada fa més d’# mes}many{Obertes per darrera vegada fa més de # mesos}other{Obertes per darrera vegada fa més de # mesos}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplicació oberta per darrera vegada el dia <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Oberta per darrera vegada el dia <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Si permets la gestió de tots els fitxers, aquesta aplicació podrà accedir als fitxers, així com modificar-los i suprimir-los, que es trobin a l\'emmagatzematge comú d\'aquest dispositiu o als dispositius d\'emmagatzematge connectats. L\'aplicació podrà accedir als fitxers sense demanar-te permís."</string>
diff --git a/PermissionController/res/values-cs-car/strings.xml b/PermissionController/res/values-cs-car/strings.xml
new file mode 100644
index 000000000..4e0e19611
--- /dev/null
+++ b/PermissionController/res/values-cs-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Když aplikaci několik měsíců nepoužíváte:\n\n• Oprávnění jsou odstraněna kvůli ochraně dat\n• Dočasné soubory jsou odstraněny kvůli uvolnění místa"</string>
+</resources>
diff --git a/PermissionController/res/values-cs/strings.xml b/PermissionController/res/values-cs/strings.xml
index 6aaa53581..a6f4b037b 100644
--- a/PermissionController/res/values-cs/strings.xml
+++ b/PermissionController/res/values-cs/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Bylo odebráno oprávnění <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> a další oprávnění (<xliff:g id="NUMBER">%2$s</xliff:g>)"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Nepoužívané aplikace"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Když aplikaci několik měsíců nepoužíváte:\n\n• Oprávnění jsou odstraněna kvůli ochraně dat\n• Oznámení se přestanou zobrazovat kvůli úspoře baterie\n• Dočasné soubory jsou odstraněny kvůli uvolnění místa\n\nPokud chcete oprávnění a oznámení znovu povolit, otevřete aplikaci."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Když aplikaci několik měsíců nepoužíváte:\n\n• Oprávnění jsou odstraněna kvůli ochraně dat\n• Dočasné soubory jsou odstraněny kvůli uvolnění místa\n\nPokud chcete oprávnění znovu povolit, otevřete aplikaci."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Naposledy otevřeno před více než <xliff:g id="NUMBER">%s</xliff:g> měsíci"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Když nějakou aplikaci měsíc nepoužíváte:\n\n• Kvůli ochraně dat se odstraní oprávnění.\n• Kvůli uvolnění místa se odstraní dočasné soubory.\n\nPokud chcete oprávnění znovu povolit, otevřete aplikaci."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Aplikace nainstalované před více než # měsícem}few{Naposledy otevřeno před více než # měsíci}many{Naposledy otevřeno před více než # měsíce}other{Naposledy otevřeno před více než # měsíci}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikace byla naposledy otevřena <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Naposledy otevřeno <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Pokud povolíte správu všech souborů, tato aplikace může číst, upravovat a mazat všechny soubory ve společném úložišti na tomto zařízení i na připojených úložných zařízeních. Aplikace se může dostat k souborům, aniž by se vás zeptala."</string>
diff --git a/PermissionController/res/values-da/strings.xml b/PermissionController/res/values-da/strings.xml
index d3b03d93f..eded4dd5f 100644
--- a/PermissionController/res/values-da/strings.xml
+++ b/PermissionController/res/values-da/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> og <xliff:g id="NUMBER">%2$s</xliff:g> andre tilladelser blev fjernet"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Apps, du ikke bruger"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Hvis en app ikke bruges i et par måneder, sker følgende:\n\n• Tilladelser fjernes for at beskytte dine data\n• Notifikationer stoppes for at spare på batteriet\n• Midlertidige filer fjernes for at frigøre plads\n\nHvis du vil aktivere tilladelser og notifikationer igen, skal du åbne appen."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Hvis en app ikke bruges i et par måneder, sker følgende:\n\n• Tilladelser fjernes for at beskytte dine data\n• Midlertidige filer fjernes for at frigøre plads\n\nHvis du vil aktivere tilladelserne igen, skal du åbne appen."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Sidst åbnet for mere end <xliff:g id="NUMBER">%s</xliff:g> måneder siden"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Hvis en app ikke bruges i en måned, sker følgende:\n\n• Tilladelser fjernes for at beskytte dine data\n• Midlertidige filer fjernes for at frigøre plads\n\nHvis du vil aktivere tilladelserne igen, skal du åbne appen."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Sidst åbnet for mere end # måned siden}one{Sidst åbnet for mere end # måned siden}other{Sidst åbnet for mere end # måneder siden}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Appen blev sidst åbnet <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Sidst åbnet <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Hvis du tillader administration af alle filer, får denne app adgang og tilladelse til at ændre og slette alle filer på enhedens almindelige lagerplads og tilsluttede lagerenheder. Appen kan få adgang til filer uden at spørge dig først."</string>
diff --git a/PermissionController/res/values-de-car/strings.xml b/PermissionController/res/values-de-car/strings.xml
index 6f93442cf..c1f9ba7e2 100644
--- a/PermissionController/res/values-de-car/strings.xml
+++ b/PermissionController/res/values-de-car/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="unused_apps_page_summary" msgid="7505839764289846511">"Wenn du eine App mehrere Monate nicht verwendest, geschieht Folgendes:\n\n• Zum Schutz deiner Daten werden die Berechtigungen entfernt\n• Temporäre Dateien werden gelöscht, um Speicherplatz freizugeben"</string>
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Wenn du eine App mehrere Monate nicht verwendest, geschieht Folgendes:\n\n• Die Berechtigungen der App werden entfernt, um deine Daten zu schützen\n• Temporäre Dateien werden gelöscht, um Speicherplatz freizugeben"</string>
</resources>
diff --git a/PermissionController/res/values-de/strings.xml b/PermissionController/res/values-de/strings.xml
index 498ef4471..97a3b3eb3 100644
--- a/PermissionController/res/values-de/strings.xml
+++ b/PermissionController/res/values-de/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Berechtigungen für <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> und <xliff:g id="NUMBER">%2$s</xliff:g> weitere entfernt"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Nicht verwendete Apps"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Wenn du eine App seit einigen Monaten nicht mehr verwendet hast, geschieht Folgendes:\n\n• Zum Schutz deiner Daten werden die Berechtigungen entfernt.\n• Benachrichtigungen werden gestoppt, um den Akku zu schonen.\n• Temporäre Dateien werden gelöscht, um Speicherplatz freizugeben.\n\nÖffne die App, um Berechtigungen und Benachrichtigungen wieder zu aktivieren."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Wenn du eine App seit einigen Monaten nicht mehr verwendet hast, geschieht Folgendes:\n\n• Zum Schutz deiner Daten werden die Berechtigungen entfernt\n• Temporäre Dateien werden gelöscht, um Speicherplatz freizugeben\n\nWenn du Berechtigungen wieder aktivieren möchtest, öffne die App."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Zuletzt geöffnet vor mehr als <xliff:g id="NUMBER">%s</xliff:g> Monaten"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Wenn du eine App seit einem Monat nicht mehr verwendet hast, geschieht Folgendes:\n\n• Zum Schutz deiner Daten werden die Berechtigungen entfernt\n• Temporäre Dateien werden gelöscht, um Speicherplatz freizugeben\n\nWenn du die Berechtigungen wieder erteilen möchtest, öffne die App."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Zuletzt vor mehr als # Monat geöffnet}other{Zuletzt vor mehr als # Monaten geöffnet}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App wurde zuletzt geöffnet am <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Zuletzt geöffnet am <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Wenn du die Verwaltung aller Dateien erlaubst, kann diese App auf sämtliche Dateien im gemeinsamen Speicher sowie auf angeschlossenen Speichergeräten zugreifen und sie ändern und löschen. Die App greift dann möglicherweise auf Dateien zu, ohne dass du vorher gefragt wirst."</string>
diff --git a/PermissionController/res/values-el-car/strings.xml b/PermissionController/res/values-el-car/strings.xml
new file mode 100644
index 000000000..605dfdf64
--- /dev/null
+++ b/PermissionController/res/values-el-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Εάν μια εφαρμογή δεν χρησιμοποιηθεί για μερικούς μήνες:\n\n• Οι άδειες καταργούνται για την προστασία των δεδομένων σας\n• Τα προσωρινά αρχεία καταργούνται για την απελευθέρωση χώρου"</string>
+</resources>
diff --git a/PermissionController/res/values-el/strings.xml b/PermissionController/res/values-el/strings.xml
index cda3a8ca6..448e49cf0 100644
--- a/PermissionController/res/values-el/strings.xml
+++ b/PermissionController/res/values-el/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Καταργήθηκε η άδεια <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> και <xliff:g id="NUMBER">%2$s</xliff:g> ακόμη άδειες"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Εφαρμογές που δεν χρησιμοποιούνται"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Εάν μια εφαρμογή δεν χρησιμοποιηθεί για λίγους μήνες:\n\n• Οι άδειες καταργούνται για την προστασία των δεδομένων σας\n• Οι ειδοποιήσεις διακόπτονται για την εξοικονόμηση μπαταρίας\n• Τα προσωρινά αρχεία καταργούνται για την απελευθέρωση χώρου\n\nΓια να επιτρέψετε ξανά τις άδειες και τις ειδοποιήσεις, ανοίξτε την εφαρμογή."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Εάν μια εφαρμογή δεν χρησιμοποιηθεί για λίγους μήνες:\n\n• Οι άδειες καταργούνται για την προστασία των δεδομένων σας\n• Τα προσωρινά αρχεία καταργούνται για την απελευθέρωση χώρου\n\nΓια να επιτρέψετε ξανά τις άδειες, ανοίξτε την εφαρμογή."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Τελευταίο άνοιγμα πάνω από <xliff:g id="NUMBER">%s</xliff:g> μήνες πριν"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Εάν μια εφαρμογή δεν χρησιμοποιηθεί για έναν μήνα:\n\n• Οι άδειες καταργούνται για την προστασία των δεδομένων σας\n• Τα προσωρινά αρχεία καταργούνται για την απελευθέρωση χώρου\n\nΓια να επιτρέψετε ξανά τις άδειες, ανοίξτε την εφαρμογή."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Τελευταίο άνοιγμα πάνω από # μήνα πριν}other{Τελευταίο άνοιγμα πάνω από # μήνες πριν}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Τελευταίο άνοιγμα εφαρμογής <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Τελευταίο άνοιγμα <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Εάν επιτρέψετε τη διαχείριση όλων των αρχείων, αυτή η εφαρμογή θα μπορεί να αποκτήσει πρόσβαση, να τροποποιήσει και να διαγράψει τυχόν αρχεία στον κοινό αποθηκευτικό χώρο αυτής της συσκευής ή συνδεδεμένων συσκευών αποθηκευτικού χώρου. Η εφαρμογή θα μπορεί να αποκτήσει πρόσβαση σε αρχεία χωρίς να σας ρωτήσει."</string>
diff --git a/PermissionController/res/values-en-rAU/strings.xml b/PermissionController/res/values-en-rAU/strings.xml
index 77ddf5f41..7f679196b 100644
--- a/PermissionController/res/values-en-rAU/strings.xml
+++ b/PermissionController/res/values-en-rAU/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> and <xliff:g id="NUMBER">%2$s</xliff:g> other permissions removed"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Unused apps"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"If an app is unused for a few months:\n\n• Permissions are removed to protect your data\n• Notifications are stopped to save battery\n• Temporary files are removed to free up space\n\nTo allow permissions and notifications again, open the app."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"If an app is unused for a few months:\n\n• Permissions are removed to protect your data\n• Temporary files are removed to free up space\n\nTo allow permissions again, open the app."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Last opened more than <xliff:g id="NUMBER">%s</xliff:g> months ago"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"If an app is unused for a month:\n\n• Permissions are removed to protect your data\n• Temporary files are removed to free up space\n\nTo allow permissions again, open the app."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Last opened more than # month ago}other{Last opened more than # months ago}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App last opened on <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Last opened <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"If you allow management of all files, this app can access, modify and delete any files in common storage on this device or connected storage devices. The app may access files without asking you."</string>
diff --git a/PermissionController/res/values-en-rCA/strings.xml b/PermissionController/res/values-en-rCA/strings.xml
index eb723454e..3110610f6 100644
--- a/PermissionController/res/values-en-rCA/strings.xml
+++ b/PermissionController/res/values-en-rCA/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> and <xliff:g id="NUMBER">%2$s</xliff:g> other permissions removed"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Unused apps"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"If an app is unused for a few months:\n\n• Permissions are removed to protect your data\n• Notifications are stopped to save battery\n• Temporary files are removed to free up space\n\nTo allow permissions and notifications again, open the app."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"If an app is unused for a few months:\n\n• Permissions are removed to protect your data\n• Temporary files are removed to free up space\n\nTo allow permissions again, open the app."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Last opened more than <xliff:g id="NUMBER">%s</xliff:g> months ago"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"If an app is unused for a month:\n\n• Permissions are removed to protect your data\n• Temporary files are removed to free up space\n\nTo allow permissions again, open the app."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Last opened more than # month ago}other{Last opened more than # months ago}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App last opened on <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Last opened <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"If you allow management of all files, this app can access, modify, and delete any files in common storage on this device or connected storage devices. The app may access files without asking you."</string>
diff --git a/PermissionController/res/values-en-rGB/strings.xml b/PermissionController/res/values-en-rGB/strings.xml
index ebd914609..f4843be1b 100644
--- a/PermissionController/res/values-en-rGB/strings.xml
+++ b/PermissionController/res/values-en-rGB/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> and <xliff:g id="NUMBER">%2$s</xliff:g> other permissions removed"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Unused apps"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"If an app is unused for a few months:\n\n• Permissions are removed to protect your data\n• Notifications are stopped to save battery\n• Temporary files are removed to free up space\n\nTo allow permissions and notifications again, open the app."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"If an app is unused for a few months:\n\n• Permissions are removed to protect your data\n• Temporary files are removed to free up space\n\nTo allow permissions again, open the app."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Last opened more than <xliff:g id="NUMBER">%s</xliff:g> months ago"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"If an app is unused for a month:\n\n• Permissions are removed to protect your data\n• Temporary files are removed to free up space\n\nTo allow permissions again, open the app."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Last opened more than # month ago}other{Last opened more than # months ago}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App last opened on <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Last opened <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"If you allow management of all files, this app can access, modify and delete any files in common storage on this device or connected storage devices. The app may access files without asking you."</string>
diff --git a/PermissionController/res/values-en-rIN/strings.xml b/PermissionController/res/values-en-rIN/strings.xml
index ebd914609..f4843be1b 100644
--- a/PermissionController/res/values-en-rIN/strings.xml
+++ b/PermissionController/res/values-en-rIN/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> and <xliff:g id="NUMBER">%2$s</xliff:g> other permissions removed"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Unused apps"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"If an app is unused for a few months:\n\n• Permissions are removed to protect your data\n• Notifications are stopped to save battery\n• Temporary files are removed to free up space\n\nTo allow permissions and notifications again, open the app."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"If an app is unused for a few months:\n\n• Permissions are removed to protect your data\n• Temporary files are removed to free up space\n\nTo allow permissions again, open the app."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Last opened more than <xliff:g id="NUMBER">%s</xliff:g> months ago"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"If an app is unused for a month:\n\n• Permissions are removed to protect your data\n• Temporary files are removed to free up space\n\nTo allow permissions again, open the app."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Last opened more than # month ago}other{Last opened more than # months ago}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App last opened on <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Last opened <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"If you allow management of all files, this app can access, modify and delete any files in common storage on this device or connected storage devices. The app may access files without asking you."</string>
diff --git a/PermissionController/res/values-en-rXC/strings.xml b/PermissionController/res/values-en-rXC/strings.xml
index b78542f94..57988bfbe 100644
--- a/PermissionController/res/values-en-rXC/strings.xml
+++ b/PermissionController/res/values-en-rXC/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‏‎‎‎‏‏‏‎‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‎‏‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ and ‎‏‎‎‏‏‎<xliff:g id="NUMBER">%2$s</xliff:g>‎‏‎‎‏‏‏‎ other permissions removed‎‏‎‎‏‎"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‎‏‎‎‎‎‎‎‏‏‏‎‎‏‏‏‏‏‎‎‏‎‎‎‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‏‏‎Unused apps‎‏‎‎‏‎"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‎‏‏‎‎‎‏‎‎‏‏‏‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎‏‏‎‏‏‎If an app is unused for a few months:‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎• Permissions are removed to protect your data‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎• Notifications are stopped to save battery‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎• Temporary files are removed to free up space‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎To allow permissions and notifications again, open the app.‎‏‎‎‏‎"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‏‏‎‏‏‏‏‏‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‎‏‎‎‏‏‏‎‎‎‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎‏‏‏‎If an app is unused for a few months:‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎• Permissions are removed to protect your data‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎• Temporary files are removed to free up space‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎To allow permissions again, open the app.‎‏‎‎‏‎"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‎‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‎‎‎‎‎‎‎‎‎‎‏‏‎‎‎‏‎‎‎‏‏‎Last opened more than ‎‏‎‎‏‏‎<xliff:g id="NUMBER">%s</xliff:g>‎‏‎‎‏‏‏‎ months ago‎‏‎‎‏‎"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‏‎‏‏‎‏‏‎‎‎‏‏‏‏‎‎‏‏‎‎‏‏‎‏‏‎‎‎‎‏‎‎‏‏‎‏‎‎‎‎‏‎‎‏‎‎‎‎‎‎‎‏‎‎‎If an app is unused for a month:‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎• Permissions are removed to protect your data‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎• Temporary files are removed to free up space‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎To allow permissions again, open the app.‎‏‎‎‏‎"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‎‏‏‏‎‏‎‎‏‏‎‏‏‎‎‏‏‎‎‏‎‎‎‏‎‏‎‏‎‏‎‎‎‏‏‏‎‏‏‏‎‏‏‏‏‏‎‎‎‎‎‎Last opened more than # month ago‎‏‎‎‏‎}other{‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‎‏‏‏‎‏‎‎‏‏‎‏‏‎‎‏‏‎‎‏‎‎‎‏‎‏‎‏‎‏‎‎‎‏‏‏‎‏‏‏‎‏‏‏‏‏‎‎‎‎‎‎Last opened more than # months ago‎‏‎‎‏‎}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‏‎‎‎‎‎‏‎‎‎‏‏‎‎‏‎‏‎‏‎‎‎‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‎‎App last opened on ‎‏‎‎‏‏‎<xliff:g id="DATE">%s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‏‎‎‎‎‎‎‎‎‎‎‏‎‏‏‎‏‎‏‏‏‏‎‎‎‏‎‏‏‎‎‎‏‎‎‏‏‎‏‎‎‏‎‎‎‏‏‏‏‎‎‏‎Last opened ‎‏‎‎‏‏‎<xliff:g id="DATE">%s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‎‏‎‏‎‏‏‏‎‎‏‎‎‏‎‎‏‏‎‎‏‎‎‏‎‏‎‎‎‎‏‏‏‏‎‎‎If you allow management of all files, this app can access, modify, and delete any files in common storage on this device or connected storage devices. The app may access files without asking you.‎‏‎‎‏‎"</string>
diff --git a/PermissionController/res/values-es-rUS-car/strings.xml b/PermissionController/res/values-es-rUS-car/strings.xml
new file mode 100644
index 000000000..8fc6d79e5
--- /dev/null
+++ b/PermissionController/res/values-es-rUS-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Si no usas una app durante algunos meses, ocurre lo siguiente:\n\n• Se quitan los permisos para proteger tus datos.\n• Se quitan los archivos temporales para liberar espacio."</string>
+</resources>
diff --git a/PermissionController/res/values-es-rUS/strings.xml b/PermissionController/res/values-es-rUS/strings.xml
index ead99b5eb..43016858b 100644
--- a/PermissionController/res/values-es-rUS/strings.xml
+++ b/PermissionController/res/values-es-rUS/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Se quitaron <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> y <xliff:g id="NUMBER">%2$s</xliff:g> otros permisos"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Apps que no usas"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Si una app permanece en desuso algunos meses, ocurre lo siguiente:\n\n• Se quitan los permisos para proteger tus datos.\n• Se detienen las notificaciones para ahorrar batería.\n• Se quitan los archivos temporales para liberar espacio.\n\nPara volver a habilitar los permisos y las notificaciones, abre la app."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Si no usas una app durante algunos meses, ocurre lo siguiente:\n\n• Se quitan los permisos para proteger tus datos.\n• Se quitan los archivos temporales para liberar espacio.\n\nPara volver a habilitar los permisos, abre la app."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Se abrió por última vez hace más de <xliff:g id="NUMBER">%s</xliff:g> meses"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Si no usas una app durante un mes, ocurre lo siguiente:\n\n• Se quitan los permisos para proteger tus datos.\n• Se quitan los archivos temporales para liberar espacio.\n\nPara volver a habilitar los permisos, abre la app."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Se abrió por última vez hace más de # mes}many{Se abrió por última vez hace más de # de meses}other{Se abrió por última vez hace más de # meses}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App abierta por última vez el <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Abierta por última vez el <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Si permites que se administren todos los archivos, esta app podrá consultar, modificar y borrar los archivos que haya en el almacenamiento común de este dispositivo o en los dispositivos de almacenamiento conectados. Podrá acceder a los archivos sin consultarte."</string>
diff --git a/PermissionController/res/values-es/strings.xml b/PermissionController/res/values-es/strings.xml
index 3c2e199cb..e168bce2d 100644
--- a/PermissionController/res/values-es/strings.xml
+++ b/PermissionController/res/values-es/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Permisos <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> y <xliff:g id="NUMBER">%2$s</xliff:g> más quitados"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Aplicaciones no usadas"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Si una aplicación lleva varios meses sin usarse:\n\n• Se le quitan los permisos para proteger tus datos\n• Se detienen sus notificaciones para ahorrar batería\n• Se eliminan sus archivos temporales para liberar espacio\n\nSi quieres volver a dar permisos a la aplicación y activar de nuevo sus notificaciones, ábrela."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Si una aplicación lleva varios meses sin usarse:\n\n• Se le quitan los permisos para proteger tus datos\n• Se eliminan sus archivos temporales para liberar espacio\n\nSi quieres volver a dar permisos a la aplicación, ábrela."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Abiertas por última vez hace más de <xliff:g id="NUMBER">%s</xliff:g> meses"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Si una aplicación lleva un mes sin usarse:\n\n• Se le quitan los permisos para proteger tus datos\n• Se eliminan sus archivos temporales para liberar espacio\n\nSi quieres volver a dar permisos a la aplicación, ábrela."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Abiertas por última vez hace más de # mes}many{Abiertas por última vez hace más de # meses}other{Abiertas por última vez hace más de # meses}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"La aplicación se abrió por última vez el <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Se abrió por última vez el <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Si permites la gestión de todos los archivos, esta aplicación podrá consultar, modificar y eliminar cualquier archivo que haya en el almacenamiento común de este dispositivo o en los dispositivos de almacenamiento conectados. Es posible que acceda a archivos sin preguntarte."</string>
@@ -427,7 +427,7 @@
<string name="car_default_app_selected" msgid="5416420830430644174">"Seleccionada"</string>
<string name="car_default_app_selected_with_info" msgid="1932204186080593500">"Seleccionada: <xliff:g id="ADDITIONAL_INFO">%1$s</xliff:g>"</string>
<string name="special_app_access_search_keyword" msgid="8032347212290774210">"aplicaciones con accesos especiales"</string>
- <string name="special_app_access" msgid="5019319067120213797">"Aplicaciones con accesos especiales"</string>
+ <string name="special_app_access" msgid="5019319067120213797">"aplicaciones con accesos especiales"</string>
<string name="no_special_app_access" msgid="6950277571805106247">"Sin acceso especial de apps"</string>
<string name="special_app_access_no_apps" msgid="4102911722787886970">"No hay aplicaciones"</string>
<string name="home_missing_work_profile_support" msgid="1756855847669387977">"No admite perfiles de trabajo"</string>
diff --git a/PermissionController/res/values-et/strings.xml b/PermissionController/res/values-et/strings.xml
index e46ce49ca..217eb7ed0 100644
--- a/PermissionController/res/values-et/strings.xml
+++ b/PermissionController/res/values-et/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ja veel <xliff:g id="NUMBER">%2$s</xliff:g> luba eemaldati"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Kasutamata rakendused"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Kui rakendust mõne kuu vältel ei kasutata, toimub järgmine.\n\n• Load eemaldatakse, et teie andmeid kaitsta.\n• Märguanded peatatakse, et akut säästa.\n• Ajutised failid eemaldatakse, et ruumi vabastada.\n\nKui soovite uuesti lubasid anda ja märguandeid lubada, avage rakendus."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Kui rakendust mõne kuu vältel ei kasutata, toimub järgmine.\n\n• Load eemaldatakse, et teie andmeid kaitsta.\n• Ajutised failid eemaldatakse, et ruumi vabastada.\n\nKui soovite uuesti lubasid anda, avage rakendus."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Viimati avatud rohkem kui <xliff:g id="NUMBER">%s</xliff:g> kuud tagasi"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Kui rakendust kuu vältel ei kasutata, toimub järgmine.\n\n• Load eemaldatakse, et teie andmeid kaitsta.\n• Ajutised failid eemaldatakse, et ruumi vabastada.\n\nKui soovite uuesti lubasid anda, avage rakendus."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Viimati avatud rohkem kui # kuu tagasi}other{Viimati avatud rohkem kui # kuud tagasi}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Rakendus avati viimati <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Viimati avatud <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Kui lubate kõikide failide haldamise, pääseb see rakendus selle seadme või ühendatud salvestusseadme ühises salvestusruumis juurde mis tahes failidele ning saab neid muuta ja kustutada. Rakendus võib failidele juurde pääseda teilt luba küsimata."</string>
diff --git a/PermissionController/res/values-eu/strings.xml b/PermissionController/res/values-eu/strings.xml
index 1f55a01ab..a6b751861 100644
--- a/PermissionController/res/values-eu/strings.xml
+++ b/PermissionController/res/values-eu/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> eta beste <xliff:g id="NUMBER">%2$s</xliff:g> baimen kendu dira"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Erabiltzen ez diren aplikazioak"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Aplikazio bat zenbait hilabetez erabili ez bada:\n\n• Baimenak kendu egingo dira zure datuak babesteko.\n• Jakinarazpenak gelditu egingo dira bateria aurrezteko.\n• Aldi baterako fitxategiak kendu egingo dira tokia egiteko.\n\nBaimenak eta jakinarazpenak berreskuratu nahi badituzu, ireki aplikazioa."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Aplikazio bat zenbait hilabetez erabili ez bada:\n\n• Baimenak kenduko zaizkio zure datuak babesteko. \n• Aldi baterako fitxategiak kenduko dira tokia egiteko.\n\nBaimenak berreskuratu nahi badituzu, ireki aplikazioa."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Azken irekitze-data: duela <xliff:g id="NUMBER">%s</xliff:g> hilabete baino gehiago"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Aplikazio bat hilabetez erabili ez bada:\n\n• Baimenak kenduko zaizkio zure datuak babesteko. \n• Aldi baterako fitxategiak kenduko dira tokia egiteko.\n\nBaimenak berriro eman nahi badituzu, ireki aplikazioa."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Azken irekitze-data: duela # hilabete baino gehiago}other{Azken irekitze-data: duela # hilabete baino gehiago}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikazioaren azken irekitze-data: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Azken irekitze-data: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Fitxategi guztiak kudeatzeko baimena ematen badiozu, gailu honen memorian eta hari konektatutako biltegiratze-gailuetan dauden fitxategi guztiak atzitu, editatu eta ezabatu ahal izango ditu aplikazioak. Baimenik eskatu gabe atzitu ahalko ditu fitxategiak aplikazioak."</string>
diff --git a/PermissionController/res/values-fa/strings.xml b/PermissionController/res/values-fa/strings.xml
index c0a896418..d95c516d5 100644
--- a/PermissionController/res/values-fa/strings.xml
+++ b/PermissionController/res/values-fa/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"اجازه <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> و <xliff:g id="NUMBER">%2$s</xliff:g> اجازه دیگر برداشته شده است"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"برنامه‌های استفاده‌نشده"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"اگر چند ماه از برنامه‌ای استفاده نشود:\n\n• اجازه‌ها برای محافظت از داده‌های شما حذف می‌شوند\n• اعلان‌ها برای صرفه‌جویی در مصرف باتری متوقف می‌شوند\n• فایل‌های موقت برای آزادسازی فضا حذف می‌شوند\n\nبرای اینکه اجازه‌ها و اعلان‌ها دوباره مجاز شود، برنامه را باز کنید."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"اگر چند ماه از برنامه‌ای استفاده نشود:\n\n• اجازه‌ها برای محافظت از داده‌های شما برداشته می‌شوند\n• فایل‌های موقت برای آزادسازی فضا برداشته می‌شوند\n\nبرای موافقت کردن دوباره با اجازه‌ها، برنامه را باز کنید."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"آخرین باری که باز شده: بیش‌از <xliff:g id="NUMBER">%s</xliff:g> ماه قبل"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"اگر برنامه‌ای برای یک ماه استفاده نشود:\n\n• اجازه‌ها برای محافظت از داده‌های شما برداشته می‌شود\n• فایل‌های موقت برای آزادسازی فضا حذف می‌شود\n\nبرای موافقت مجدد با اجازه‌ها، برنامه را باز کنید."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{آخرین بار بیشتر از # ماه قبل باز شده است}one{آخرین بار بیشتر از # ماه قبل باز شده است}other{آخرین بار بیشتر از # ماه قبل باز شده است}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"آخرین باری که برنامه باز شده: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"آخرین باری که باز شده: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"اگر مدیریت همه فایل‌ها را مجاز کنید، این برنامه می‌تواند به همه فایل‌های موجود در فضای ذخیره‌سازی استاندارد این دستگاه یا دستگاه‌های ذخیره‌سازی متصل دسترسی داشته باشد، آن‌ها را تغییر دهد، و حذف کند. این برنامه ممکن است بدون سؤال کردن از شما به فایل‌ها دسترسی پیدا کند."</string>
diff --git a/PermissionController/res/values-fi/strings.xml b/PermissionController/res/values-fi/strings.xml
index 9dc1d12df..5723a0fca 100644
--- a/PermissionController/res/values-fi/strings.xml
+++ b/PermissionController/res/values-fi/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ja <xliff:g id="NUMBER">%2$s</xliff:g> muuta käyttöoikeutta poistettiin"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Käyttämättömät sovellukset"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Jos sovellusta ei käytetä muutamaan kuukauteen:\n\n• Luvat poistetaan datasi suojaamiseksi\n• Ilmoitukset lopetetaan akun säästämiseksi\n• Väliaikaiset tiedostot poistetaan tilan vapauttamiseksi\n\nJos haluat sallia luvat ja ilmoitukset uudelleen, avaa sovellus."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Jos sovellusta ei käytetä muutamaan kuukauteen:\n\n• Luvat poistetaan datasi suojaamiseksi\n• Väliaikaiset tiedostot poistetaan tilan vapauttamiseksi\n\nJos haluat sallia luvat uudelleen, avaa sovellus."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Avattu viimeksi <xliff:g id="NUMBER">%s</xliff:g> kuukautta sitten"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Jos sovellusta ei käytetä kuukauteen:\n\n• Luvat poistetaan datasi suojaamiseksi\n• Väliaikaiset tiedostot poistetaan tilan vapauttamiseksi\n\nJos haluat sallia luvat uudelleen, avaa sovellus."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Avattu viimeksi yli # kuukautta sitten}other{Avattu viimeksi yli # kuukautta sitten}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Sovellus avattiin viimeksi <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Avattu viimeksi <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Jos sallit kaikkien tiedostojen ylläpidon, tämä sovellus voi nähdä, muokata ja poistaa kaikkia tiedostoja tämän laitteen yleisessä tallennustilassa ja yhdistetyillä tallennuslaitteilla. Sovelluksella on pääsy tiedostoihin ilman erillistä lupaasi."</string>
diff --git a/PermissionController/res/values-fr-car/strings.xml b/PermissionController/res/values-fr-car/strings.xml
new file mode 100644
index 000000000..9afb4df4b
--- /dev/null
+++ b/PermissionController/res/values-fr-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Si vous n\'utilisez pas une appli pendant quelques mois :\n\n• les autorisations sont supprimées pour protéger vos données ;\n• les fichiers temporaires sont supprimés pour libérer de l\'espace."</string>
+</resources>
diff --git a/PermissionController/res/values-fr-rCA-car/strings.xml b/PermissionController/res/values-fr-rCA-car/strings.xml
new file mode 100644
index 000000000..02b0a45be
--- /dev/null
+++ b/PermissionController/res/values-fr-rCA-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Si une application n\'est pas utilisée pendant quelques mois :\n\n• Les autorisations sont retirées pour protéger vos données.\n• Les fichiers temporaires sont retirés pour libérer de l\'espace de stockage."</string>
+</resources>
diff --git a/PermissionController/res/values-fr-rCA/strings.xml b/PermissionController/res/values-fr-rCA/strings.xml
index 76e412a1f..fa8681250 100644
--- a/PermissionController/res/values-fr-rCA/strings.xml
+++ b/PermissionController/res/values-fr-rCA/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"L\'autorisation <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> et <xliff:g id="NUMBER">%2$s</xliff:g> autres ont été supprimées"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Applications non utilisées"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Si une application n\'est pas utilisée pendant quelques mois :\n\n• Les autorisations sont retirées pour protéger vos données.\n• Les notifications sont arrêtées pour économiser la pile.\n• Les fichiers temporaires sont retirés pour libérer de l\'espace de stockage.\n\nPour permettre d\'accéder de nouveau aux autorisations et aux notifications, ouvrez l\'application."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Si une application n\'est pas utilisée pendant quelques mois :\n\n• Les autorisations sont retirées pour protéger vos données.\n• Les fichiers temporaires sont retirés pour libérer de l\'espace de stockage.\n\nPour réactiver les autorisations, ouvrez l\'application."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Dernière ouverture : il y a plus de <xliff:g id="NUMBER">%s</xliff:g> mois"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Si une application n\'est pas utilisée pendant un mois :\n\n• Les autorisations sont retirées pour protéger vos données.\n• Les fichiers temporaires sont retirés pour libérer de l\'espace de stockage.\n\nPour réactiver les autorisations, ouvrez l\'application."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Dernière ouverture : il y a plus de # mois}one{Dernière ouverture : il y a plus de # mois}many{Dernière ouverture : il y a plus de # de mois}other{Dernière ouverture : il y a plus de # mois}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Dernière ouverture de l\'application le <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Dernière ouverture : <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Si vous autorisez la gestion de tous les fichiers, cette application pourra accéder à tous les fichiers enregistrés dans l\'espace de stockage partagé sur cet appareil ou sur des appareils de stockage connectés, les modifier et les supprimer. L\'application pourra accéder à des fichiers sans vous demander la permission."</string>
diff --git a/PermissionController/res/values-fr-v33/strings.xml b/PermissionController/res/values-fr-v33/strings.xml
index cd97e2b07..40b3442a5 100644
--- a/PermissionController/res/values-fr-v33/strings.xml
+++ b/PermissionController/res/values-fr-v33/strings.xml
@@ -40,7 +40,7 @@
<string name="safety_center_qs_privacy_control" msgid="1160682635058529673">"Contacteur. <xliff:g id="PRIVACY_CONTROL_TITLE">%1$s</xliff:g>. <xliff:g id="PRIVACY_CONTROL_STATUS">%2$s</xliff:g>"</string>
<string name="safety_center_qs_toggle_action" msgid="5920465736488119255">"Activer/Désactiver"</string>
<string name="safety_center_qs_open_action" msgid="2760200829912423728">"Ouvrir"</string>
- <string name="safety_center_review_settings_button" msgid="938981137942443930">"Vérifier les paramètres"</string>
+ <string name="safety_center_review_settings_button" msgid="938981137942443930">"Vérifier les para­mètres"</string>
<string name="safety_center_gear_label" msgid="5175877094379694098">"Paramètres"</string>
<string name="safety_center_info_label" msgid="8993181584061825412">"Informations"</string>
</resources>
diff --git a/PermissionController/res/values-fr/strings.xml b/PermissionController/res/values-fr/strings.xml
index 2f01f9786..418d235b4 100644
--- a/PermissionController/res/values-fr/strings.xml
+++ b/PermissionController/res/values-fr/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"L\'autorisation \"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\" et <xliff:g id="NUMBER">%2$s</xliff:g> autres ont été révoquées"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Applis inutilisées"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Si vous n\'utilisez pas une appli pendant quelques mois :\n\n• Les autorisations sont supprimées pour protéger vos données.\n• Les notifications sont désactivées pour économiser la batterie.\n• Les fichiers temporaires sont supprimés pour libérer de l\'espace.\n\nPour réactiver les autorisations et les notifications, ouvrez l\'application."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Si vous n\'utilisez pas une appli pendant quelques mois :\n\n• les autorisations sont supprimées pour protéger vos données ;\n• les fichiers temporaires sont supprimés pour libérer de l\'espace.\n\nPour réactiver les autorisations, ouvrez l\'appli."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Ouvertes pour la dernière fois il y a plus de <xliff:g id="NUMBER">%s</xliff:g> mois"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Si vous n\'utilisez pas une appli pendant un mois :\n\n• Les autorisations sont supprimées pour protéger vos données\n• Les fichiers temporaires sont supprimés pour libérer de l\'espace\n\nPour réactiver les autorisations, ouvrez l\'appli."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Ouvertes pour la dernière fois il y a plus de # mois}one{Ouvertes pour la dernière fois il y a plus de # mois}many{Ouvertes pour la dernière fois il y a plus de # mois}other{Ouvertes pour la dernière fois il y a plus de # mois}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Dernière ouverture de l\'application le <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Dernière ouverture : <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Si vous l\'autorisez à gérer tous les fichiers, cette application pourra y accéder, les modifier et les supprimer, sur cet appareil et sur les périphériques de stockage connectés. L\'application pourra accéder aux fichiers sans vous le demander."</string>
diff --git a/PermissionController/res/values-gl-car/strings.xml b/PermissionController/res/values-gl-car/strings.xml
new file mode 100644
index 000000000..f4fd66c14
--- /dev/null
+++ b/PermissionController/res/values-gl-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Se non se usa unha aplicación durante uns meses:\n\n• Quítanselle os permisos para protexer os teus datos\n• Quítanse os ficheiros temporais para liberar espazo"</string>
+</resources>
diff --git a/PermissionController/res/values-gl/strings.xml b/PermissionController/res/values-gl/strings.xml
index 5692c2710..8ed8df7a3 100644
--- a/PermissionController/res/values-gl/strings.xml
+++ b/PermissionController/res/values-gl/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Quitáronse os permisos (<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> e <xliff:g id="NUMBER">%2$s</xliff:g> máis)"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Aplicacións que non se usan"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Se durante uns meses non se usa unha aplicación:\n\n• Quítanselle os permisos para protexer os teus datos.\n• Detéñense as notificacións para aforrar batería.\n• Quítanse os ficheiros temporais para liberar espazo.\n\nSe queres dar permisos e recibir notificacións de novo, abre a aplicación."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Se durante uns meses non se usa unha aplicación:\n\n• Quítanselle os permisos para protexer os teus datos.\n• Quítanse os ficheiros temporais para liberar espazo.\n\nSe queres conceder permisos de novo, abre a aplicación."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Última vez que se abriu: hai máis de <xliff:g id="NUMBER">%s</xliff:g> meses"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Se durante un mes non se usa unha aplicación:\n\n• Quítanselle os permisos para protexer os teus datos.\n• Quítanse os ficheiros temporais para liberar espazo.\n\nSe queres conceder permisos de novo, abre a aplicación."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Abriuse por última vez hai máis de # mes}other{Abriuse por última vez hai máis de # meses}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"A aplicación abriuse por última vez o <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Abriuse por última vez o <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Se permites a xestión de todos os ficheiros, esta aplicación pode acceder aos ficheiros de almacenamento común, así como modificalos e eliminalos, neste dispositivo ou nos dispositivos de almacenamento conectados. A aplicación pode acceder aos ficheiros sen pedirche permiso."</string>
diff --git a/PermissionController/res/values-gu/strings.xml b/PermissionController/res/values-gu/strings.xml
index 76fd4affc..ceb9a8f26 100644
--- a/PermissionController/res/values-gu/strings.xml
+++ b/PermissionController/res/values-gu/strings.xml
@@ -192,8 +192,8 @@
<string name="app_permission_button_deny" msgid="6016454069832050300">"મંજૂરી આપશો નહીં"</string>
<string name="precise_image_description" msgid="6349638632303619872">"ચોક્કસ સ્થાન"</string>
<string name="approximate_image_description" msgid="938803699637069884">"અંદાજિત સ્થાન"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ચોક્કસ સ્થાનનો ઉપયોગ કરો"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"જ્યારે ચોક્કસ સ્થાન બંધ હોય, ત્યારે ઍપ તમારા અંદાજિત સ્થાનને ઍક્સેસ કરી શકે છે"</string>
+ <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ચોક્કસ લોકેશનનો ઉપયોગ કરો"</string>
+ <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"જ્યારે ચોક્કસ લોકેશન બંધ હોય, ત્યારે ઍપ તમારા અંદાજિત લોકેશનને ઍક્સેસ કરી શકે છે"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g>ની પરવાનગી"</string>
<string name="app_permission_header" msgid="2951363137032603806">"આ ઍપ માટે <xliff:g id="PERM">%1$s</xliff:g>નો ઍક્સેસ"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"<xliff:g id="APP">%1$s</xliff:g>ની બધી પરવાનગીઓ જુઓ"</string>
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> અને અન્ય <xliff:g id="NUMBER">%2$s</xliff:g> પરવાનગીઓ કાઢી નાખવામાં આવી"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"બિનવપરાયેલી ઍપ"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"જો થોડા મહિના માટે કોઈ ઍપનો ઉપયોગ કરવામાં ન આવે, તો:\n\n• તમારો ડેટા સુરક્ષિત રાખવા માટે પરવાનગીઓ કાઢી લેવામાં આવે છે\n• બૅટરીની બચત કરવા માટે, નોટિફિકેશન બંધ કરવામાં આવે છે\n• સ્પેસ ખાલી કરવા માટે, હંગામી ફાઇલો કાઢી નાખવામાં આવે છે\n\nપરવાનગીઓ અને નોટિફિકેશનની મંજૂરી ફરીથી આપવા માટે, ઍપ ખોલો."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"જો થોડા મહિના માટે કોઈ ઍપનો ઉપયોગ કરવામાં ન આવે, તો:\n\n• તમારો ડેટા સુરક્ષિત રાખવા માટે પરવાનગીઓ કાઢી લેવામાં આવે છે\n• સ્પેસ ખાલી કરવા માટે, હંગામી ફાઇલો કાઢી નાખવામાં આવે છે\n\nપરવાનગીઓની મંજૂરી ફરીથી આપવા માટે, ઍપ ખોલો."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"છેલ્લે <xliff:g id="NUMBER">%s</xliff:g> મહિના કરતાં પર વધારે સમય અગાઉ ખોલી હતી"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"જો એકાદ મહિના માટે કોઈ ઍપનો ઉપયોગ કરવામાં ન આવે, તો:\n\n• તમારો ડેટા સુરક્ષિત રાખવા માટે પરવાનગીઓ કાઢી લેવામાં આવે છે\n• સ્પેસ ખાલી કરવા માટે, હંગામી ફાઇલો કાઢી નાખવામાં આવે છે\n\nપરવાનગીઓની મંજૂરી ફરીથી આપવા માટે, ઍપ ખોલો."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{છેલ્લે # મહિનાથી વધુ સમય પહેલાં ખોલેલી}one{છેલ્લે # મહિનાથી વધુ સમય પહેલાં ખોલેલી}other{છેલ્લે # મહિનાથી વધુ સમય પહેલાં ખોલેલી}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ઍપ છેલ્લે <xliff:g id="DATE">%s</xliff:g>ના રોજ ખોલી"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"છેલ્લે <xliff:g id="DATE">%s</xliff:g>ના રોજ ખોલી"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"તમે બધી ફાઇલો મેનેજ કરવાની મંજૂરી આપશો, તો આ ઍપ, આ ડિવાઇસના સામાન્ય સ્ટોરેજમાં અથવા કનેક્ટ કરેલા સ્ટોરેજ ડિવાઇસમાં રહેલી કોઈપણ ફાઇલને ઍક્સેસ કરી શકશે, તેમાં ફેરફાર કરી શકશે અથવા તેને ડિલીટ કરી શકશે. ઍપ તમને પૂછ્યા વિના ફાઇલો ઍક્સેસ કરે તેમ બની શકે છે."</string>
diff --git a/PermissionController/res/values-hi/strings.xml b/PermissionController/res/values-hi/strings.xml
index 40b8e6cb4..b51729254 100644
--- a/PermissionController/res/values-hi/strings.xml
+++ b/PermissionController/res/values-hi/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> और <xliff:g id="NUMBER">%2$s</xliff:g> अन्य अनुमतियां हटाई गईं"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"इस्तेमाल नहीं किए गए ऐप्लिकेशन"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"अगर आप कुछ महीनों तक किसी ऐप्लिकेशन का इस्तेमाल नहीं करते हैं, तो:\n\n• आपके डेटा की सुरक्षा के लिए, उस ऐप्लिकेशन को दी गई अनुमतियां हटा दी जाती हैं\n• बैटरी बचाने के लिए, सूचनाएं बंद कर दी जाती हैं\n• स्टोरेज खाली करने के लिए, डिवाइस पर कुछ समय तक रहने वाली फ़ाइलें हटा दी जाती हैं\n\nदोबारा अनुमतियां देने और सूचनाएं फिर से पाने के लिए, ऐप्लिकेशन खोलें."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"अगर कुछ महीनों से किसी ऐप्लिकेशन को इस्तेमाल न किया गया हो, तो:\n\n• आपके डेटा को सुरक्षित रखने के लिए, उस ऐप्लिकेशन को दी गई अनुमतियां हटा दी जाती हैं\n• मेमोरी खाली करने के लिए, डिवाइस पर कुछ समय के लिए सेव की गई फ़ाइलें हटा दी जाती हैं\n\nफिर से अनुमतियां देने के लिए, ऐप्लिकेशन खोलें."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"पिछली बार इसे <xliff:g id="NUMBER">%s</xliff:g> महीने पहले खोला गया था"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"अगर एक महीने से किसी ऐप्लिकेशन को इस्तेमाल न किया गया हो, तो:\n\n• आपके डेटा को सुरक्षित रखने के लिए, उस ऐप्लिकेशन को दी गई अनुमतियां हटा दी जाती हैं\n• मेमोरी खाली करने के लिए, डिवाइस पर कुछ समय के लिए सेव की गई फ़ाइलें हटा दी जाती हैं\n\nअनुमतियां फिर से देने के लिए, ऐप्लिकेशन खोलें."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{पिछली बार इसे # महीने पहले खोला गया था}one{पिछली बार इसे # महीने पहले खोला गया था}other{पिछली बार इसे # महीने पहले खोला गया था}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ऐप्लिकेशन पिछली बार <xliff:g id="DATE">%s</xliff:g> को खोला गया था"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"पिछली बार <xliff:g id="DATE">%s</xliff:g> को खोला गया था"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"अगर आप इस ऐप्लिकेशन को सभी फ़ाइलों को मैनेज करने की अनुमति देते हैं, तो यह ऐप्लिकेशन इस डिवाइस या इससे जुड़े दूसरे डिवाइस के स्टोरेज में मौजूद किसी भी फ़ाइल को ऐक्सेस कर सकता है, उनमें बदलाव कर सकता है, और उन्हें मिटा भी सकता है. यह ऐप्लिकेशन आपसे पूछे बिना फ़ाइलें ऐक्सेस कर सकता है."</string>
diff --git a/PermissionController/res/values-hr/strings.xml b/PermissionController/res/values-hr/strings.xml
index 2b2b1dea0..9f90ed18f 100644
--- a/PermissionController/res/values-hr/strings.xml
+++ b/PermissionController/res/values-hr/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Uklonjeno je dopuštenje <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> i njih još <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Nekorištene aplikacije"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Ako se aplikacija ne koristi nekoliko mjeseci:\n\n• Dopuštenja se uklanjaju radi zaštite vaših podataka.\n• Obavijesti se zaustavljaju radi štednje baterije.\n• Privremene se datoteke uklanjaju radi oslobađanja prostora.\n\nDa biste ponovo odobrili dopuštenja i obavijesti, otvorite aplikaciju."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Ako se aplikacija ne koristi nekoliko mjeseci:\n\n• Dopuštenja se uklanjaju radi zaštite vaših podataka.\n• Privremene datoteke uklanjaju se radi oslobađanja prostora.\n\nDa biste ponovo odobrili dopuštenja, otvorite aplikaciju."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Posljednji put otvoreno prije više od <xliff:g id="NUMBER">%s</xliff:g> mj."</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Ako se aplikacija ne koristi mjesec dana:\n\n• Dopuštenja se uklanjaju radi zaštite vaših podataka.\n• Privremene datoteke uklanjaju se radi oslobađanja prostora.\n\nDa biste ponovo odobrili dopuštenja, otvorite aplikaciju."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Posljednji put otvoreno prije više od # mjeseca}one{Posljednji put otvoreno prije više od # mjeseca}few{Posljednji put otvoreno prije više od # mjeseca}other{Posljednji put otvoreno prije više od # mjeseci}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikacija je posljednji put otvorena <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Posljednje otvaranje <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Ako dopustite upravljanje svim datotekama, ova će aplikacija moći pristupati datotekama u zajedničkoj pohrani na ovom uređaju ili povezanim uređajima za pohranu te ih mijenjati i brisati. Aplikacija će moći pristupati datotekama bez vašeg dopuštenja."</string>
diff --git a/PermissionController/res/values-hu/strings.xml b/PermissionController/res/values-hu/strings.xml
index 9b45a8143..b56d12a1b 100644
--- a/PermissionController/res/values-hu/strings.xml
+++ b/PermissionController/res/values-hu/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"A(z) <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> és <xliff:g id="NUMBER">%2$s</xliff:g> másik engedély visszavonva"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Nem használt alkalmazások"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Ha az adott alkalmazást nem használja néhány hónapig:\n\n• Az engedélyeket az adatok védelme érdekében eltávolítjuk.\n• Az akkumulátor kímélése érdekében az értesítéseket leállítjuk.\n• Tárhely felszabadítása érdekében az ideiglenes fájlokat eltávolítjuk.\n\nAz engedélyek és az értesítések újbóli bekapcsolásához nyissa meg az alkalmazást."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Ha nem használja néhány hónapig az adott alkalmazást:\n\n• Az adatok védelme érdekében eltávolítjuk az engedélyeket.\n• Tárhely felszabadítása érdekében eltávolítjuk az ideiglenes fájlokat.\n\nAz engedélyek újbóli megadásához nyissa meg az alkalmazást."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Utoljára több mint <xliff:g id="NUMBER">%s</xliff:g> hónapja nyitotta meg"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Ha nem használja egy hónapig az adott alkalmazást:\n\n• Az adatok védelme érdekében eltávolítjuk az engedélyeket.\n• Tárhely felszabadítása érdekében eltávolítjuk az ideiglenes fájlokat.\n\nAz engedélyek újbóli megadásához nyissa meg az alkalmazást."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Utoljára több mint # hónapja nyitotta meg}other{Utoljára több mint # hónapja nyitotta meg}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Az alkalmazás legutóbbi megnyitása: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Legutóbb megnyitva ekkor: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Ha engedélyezi az összes fájl kezelését, ez az alkalmazás hozzáférhet az eszköz tárhelyén és a csatlakoztatott tárolóeszközökön található fájlokhoz, valamint módosíthatja és törölheti őket. Az alkalmazás anélkül férhet hozzá a fájlokhoz, hogy Önt megkérdezné róla."</string>
diff --git a/PermissionController/res/values-hy-car/strings.xml b/PermissionController/res/values-hy-car/strings.xml
new file mode 100644
index 000000000..f708977a2
--- /dev/null
+++ b/PermissionController/res/values-hy-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Եթե դուք մի քանի ամիս չեք օգտագործում հավելվածը.\n\n• Թույլտվությունները հեռացվում են՝ ձեր տվյալները պաշտպանելու համար\n• Ժամանակավոր ֆայլերը հեռացվում են՝ տարածք ազատելու համար"</string>
+</resources>
diff --git a/PermissionController/res/values-hy/strings.xml b/PermissionController/res/values-hy/strings.xml
index 54a0899d0..cade8176f 100644
--- a/PermissionController/res/values-hy/strings.xml
+++ b/PermissionController/res/values-hy/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>ն օգտագործելու թույլտվությունն ու ևս <xliff:g id="NUMBER">%2$s</xliff:g> թույլտվություն հեռացվել են"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Չօգտագործվող հավելվածներ"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Եթե դուք մի քանի ամիս չեք օգտագործում հավելվածը.\n\n• թույլտվությունները հեռացվում են՝ ձեր տվյալները պաշտպանելու համար,\n• ծանուցումներն անջատվում են՝ մարտկոցի լիցքը խնայելու համար,\n• ժամանակավոր ֆայլերը հեռացվում են՝ տարածք ազատելու համար։\n\nԲացեք հավելվածը, որպեսզի նորից տրամադրեք թույլտվությունները և միացնեք ծանուցումները։"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Եթե դուք մի քանի ամիս չեք օգտագործում հավելվածը.\n\n• թույլտվությունները հեռացվում են՝ ձեր տվյալները պաշտպանելու համար,\n• ժամանակավոր ֆայլերը հեռացվում են՝ տարածք ազատելու համար։\n\nԲացեք հավելվածը, որպեսզի նորից տրամադրեք թույլտվությունները։"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Վերջին անգամ բացվել է ավելի քան <xliff:g id="NUMBER">%s</xliff:g> ամիս առաջ"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Եթե դուք մեկ ամիս չեք օգտագործում հավելվածը.\n\n• թույլտվությունները հեռացվում են՝ ձեր տվյալները պաշտպանելու համար,\n• ժամանակավոր ֆայլերը հեռացվում են՝ տարածք ազատելու համար։\n\nԲացեք հավելվածը, որպեսզի նորից տրամադրեք թույլտվությունները։"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Վերջին անգամ բացվել է ավելի քան # ամիս առաջ}one{Վերջին անգամ բացվել է ավելի քան # ամիս առաջ}other{Վերջին անգամ բացվել է ավելի քան # ամիս առաջ}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Հավելվածը վերջին անգամ բացվել է՝ <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Վերջին անգամ բացվել է՝ <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Եթե թույլատրեք ձեր բոլոր ֆայլերի կառավարումը, այս հավելվածը կկարողանա օգտագործել, փոփոխել և ջնջել այս սարքի ընդհանուր հիշողությունում պահված կամ միացված կրիչների ֆայլերը։ Հավելվածը կկարողանա օգտագործել ֆայլերը՝ առանց ձեզ հարցնելու։"</string>
diff --git a/PermissionController/res/values-in/strings.xml b/PermissionController/res/values-in/strings.xml
index 11cd4dfe7..363bacdfd 100644
--- a/PermissionController/res/values-in/strings.xml
+++ b/PermissionController/res/values-in/strings.xml
@@ -203,7 +203,7 @@
<string name="auto_revoke_label" msgid="5068393642936571656">"Hapus izin jika aplikasi tidak digunakan"</string>
<string name="unused_apps_label" msgid="2595428768404901064">"Hapus izin &amp; kosongkan ruang penyimpanan"</string>
<string name="unused_apps_label_v2" msgid="7058776770056517980">"Jeda aktivitas aplikasi jika tak dipakai"</string>
- <string name="unused_apps_summary" msgid="8839466950318403115">"Menghapus izin dan file sementara, serta menghentikan notifikasi"</string>
+ <string name="unused_apps_summary" msgid="8839466950318403115">"Hapus izin dan file sementara, serta hentikan notifikasi"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Untuk melindungi data Anda, izin aplikasi ini akan dihapus jika aplikasi tidak digunakan dalam beberapa bulan."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Untuk melindungi data Anda, izin dari aplikasi yang tidak digunakan dalam beberapa bulan akan dihapus: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Untuk melindungi data Anda, izin dari aplikasi yang tidak digunakan dalam beberapa bulan telah dihapus."</string>
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> dan <xliff:g id="NUMBER">%2$s</xliff:g> izin lainnya dihapus"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Aplikasi yang tidak digunakan"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Jika aplikasi tidak digunakan selama beberapa bulan:\n\n• Izin akan dihapus untuk melindungi data Anda\n• Notifikasi akan dihentikan untuk menghemat daya baterai\n• File sementara akan dihapus untuk mengosongkan ruang penyimpanan\n\nUntuk kembali memberikan izin dan mengaktifkan notifikasi, buka aplikasi."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Jika aplikasi tidak digunakan selama beberapa bulan:\n\n• Izin akan dihapus untuk melindungi data Anda\n• File sementara akan dihapus untuk mengosongkan ruang penyimpanan\n\nUntuk kembali memberikan izin, buka aplikasi."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Terakhir dibuka lebih dari <xliff:g id="NUMBER">%s</xliff:g> bulan lalu"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Jika aplikasi tidak digunakan selama satu bulan:\n\n• Izin akan dihapus untuk melindungi data Anda\n• File sementara akan dihapus untuk mengosongkan ruang penyimpanan\n\nUntuk kembali memberikan izin, buka aplikasi."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Terakhir dibuka lebih dari # bulan lalu}other{Terakhir dibuka lebih dari # bulan lalu}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikasi terakhir dibuka pada <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Terakhir dibuka <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Jika Anda mengizinkan pengelolaan semua file, aplikasi ini dapat mengakses, mengubah, dan menghapus file di penyimpanan umum pada perangkat ini atau perangkat penyimpanan yang terhubung. Aplikasi dapat mengakses file tanpa bertanya kepada Anda."</string>
diff --git a/PermissionController/res/values-is/strings.xml b/PermissionController/res/values-is/strings.xml
index ea631a8ce..ce25533c8 100644
--- a/PermissionController/res/values-is/strings.xml
+++ b/PermissionController/res/values-is/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> og <xliff:g id="NUMBER">%2$s</xliff:g> heimildir í viðbót voru fjarlægðar"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Ónotuð forrit"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Ef forrit er ekki notað í nokkra mánuði:\n\n• Heimildir eru fjarlægðar til að vernda gögnin þín\n• Slökkt er á tilkynningum til að spara rafhlöðu\n• Tímabundnar skrár eru fjarlægðar til að losa um pláss\n\nOpnaðu forritið til að leyfa heimildir og tilkynningar að nýju."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Ef forrit er ekki notað í nokkra mánuði:\n\n• Heimildir eru fjarlægðar til að vernda gögnin þín\n• Tímabundnar skrár eru fjarlægðar til að losa um pláss\n\nOpnaðu forritið til að leyfa heimildir og tilkynningar að nýju."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Síðast opnað fyrir meira en <xliff:g id="NUMBER">%s</xliff:g> mánuðum"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Ef forrit er ekki notað í mánuð:\n\n• Heimildir eru fjarlægðar til að vernda gögnin þín\n• Tímabundnar skrár eru fjarlægðar til að losa um pláss\n\nOpnaðu forritið til að leyfa heimildir og tilkynningar að nýju."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Síðast opnað fyrir meira en # mánuði}one{Síðast opnað fyrir meira en # mánuði}other{Síðast opnað fyrir meira en # mánuðum}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Forrit síðast opnað <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Síðast opnað <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Ef þú leyfir stjórnun allra skráa getur þetta forrit opnað, breytt og eytt öllum skrám í sameiginlegri geymslu í þessu tæki eða tengdum geymslutækjum. Þetta forrit getur opnað skrár án þess að spyrja þig."</string>
diff --git a/PermissionController/res/values-it/strings.xml b/PermissionController/res/values-it/strings.xml
index f3770d82d..f07f9accb 100644
--- a/PermissionController/res/values-it/strings.xml
+++ b/PermissionController/res/values-it/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> e altre <xliff:g id="NUMBER">%2$s</xliff:g> autorizzazioni rimosse"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"App inutilizzate"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Se un\'app non viene usata per alcuni mesi:\n\n• Vengono rimosse le autorizzazioni per proteggere i tuoi dati\n• Vengono interrotte le notifiche per risparmiare batteria\n• Vengono rimossi i file temporanei per liberare spazio\n\nApri l\'app per consentire di nuovo autorizzazioni e notifiche."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Se un\'app non viene usata per alcuni mesi:\n\n• vengono rimosse le autorizzazioni per proteggere i tuoi dati;\n• vengono rimossi i file temporanei per liberare spazio.\n\nApri l\'app per consentire di nuovo le autorizzazioni."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Aperte l\'ultima volta più di <xliff:g id="NUMBER">%s</xliff:g> mesi fa"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Se un\'app non viene usata per un mese:\n\n• Vengono rimosse le autorizzazioni per proteggere i tuoi dati\n• Vengono rimossi i file temporanei per liberare spazio\n\nApri l\'app per consentire di nuovo le autorizzazioni."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Aperte l\'ultima volta più di # mese fa}many{Aperte l\'ultima volta più di # mesi fa}other{Aperte l\'ultima volta più di # mesi fa}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Ultimo utilizzo dell\'app: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Ultimo utilizzo: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Se consenti la gestione di tutti i file, questa app potrà accedere, modificare ed eliminare tutti i file salvati in spazi di archiviazione comuni su questo dispositivo o su qualsiasi dispositivo di archiviazione connesso. L\'app potrà accedere ai file senza informarti."</string>
diff --git a/PermissionController/res/values-iw/strings.xml b/PermissionController/res/values-iw/strings.xml
index 24f03be0a..85afd36fd 100644
--- a/PermissionController/res/values-iw/strings.xml
+++ b/PermissionController/res/values-iw/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ו-<xliff:g id="NUMBER">%2$s</xliff:g> הרשאות נוספות הוסרו"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"אפליקציות שמזמן לא השתמשת בהן"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"אם האפליקציה לא נמצאת בשימוש במשך מספר חודשים:\n\n• ההרשאות יבוטלו כדי להגן על הנתונים שלך\n• ההתראות יושבתו כדי לחסוך בצריכת הסוללה\n• הקבצים הזמניים יוסרו כדי לפנות מקום אחסון\n\nכדי לאשר שוב את מתן ההרשאות והפעלת ההתראות, צריך לפתוח את האפליקציה."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"אם האפליקציה לא בשימוש במשך מספר חודשים:\n\n• ההרשאות יבוטלו כדי להגן על הנתונים שלך\n• הקבצים הזמניים יוסרו כדי לפנות שטח אחסון\n\nכדי להעניק הרשאות שוב, צריך לפתוח את האפליקציה."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"נפתחו לאחרונה לפני יותר מ-<xliff:g id="NUMBER">%s</xliff:g> חודשים"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"אם האפליקציה לא בשימוש במשך חודש:\n\n• ההרשאות יבוטלו כדי להגן על הנתונים שלך\n• הקבצים הזמניים יוסרו כדי לפנות נפח אחסון\n\nכדי להעניק הרשאות שוב, צריך לפתוח את האפליקציה."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{נפתחו לאחרונה לפני יותר מחודש (#)}one{נפתחו לאחרונה לפני יותר מ-# חודשים}two{נפתחו לאחרונה לפני יותר מחודשיים (#)}other{נפתחו לאחרונה לפני יותר מ-# חודשים}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"האפליקציה נפתחה לאחרונה בתאריך <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"נפתחה לאחרונה: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"‏אם מאשרים ניהול של כל הקבצים, האפליקציה הזו תוכל לגשת לקבצים באחסון משותף (Common storage) במכשיר הזה או בהתקני אחסון מחוברים, ולשנות או למחוק אותם. האפליקציה תוכל לגשת לקבצים בלי לבקש ממך אישור."</string>
diff --git a/PermissionController/res/values-ja/strings.xml b/PermissionController/res/values-ja/strings.xml
index 200e704fd..301dda8f0 100644
--- a/PermissionController/res/values-ja/strings.xml
+++ b/PermissionController/res/values-ja/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>、他 <xliff:g id="NUMBER">%2$s</xliff:g> 件の権限が削除されました"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"使用されていないアプリ"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"数か月使用されていないアプリがある場合:\n\n• データを保護するため、権限が削除されます\n• バッテリーを節約するため、通知が停止されます\n• 空き容量を増やすため、一時ファイルが削除されます\n\n権限と通知をもう一度許可する場合は、アプリを開いてください。"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"数か月使用されていないアプリがある場合:\n\n• データを保護するため、権限が削除されます\n• 空き容量を増やすため、一時ファイルが削除されます\n\n権限をもう一度付与する場合は、アプリを開いてください。"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"最後に開いたのが <xliff:g id="NUMBER">%s</xliff:g> か月以上前"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"1 か月使用されていないアプリがある場合:\n\n• データを保護するため、権限が削除されます\n• 空き容量を増やすため、一時ファイルが削除されます\n\n権限をもう一度付与するには、アプリを開いてください。"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{最後に開いたのが # か月以上前}other{最後に開いたのが # か月以上前}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"アプリ最終使用日: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"最終使用日: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"すべてのファイルの管理を許可すると、このアプリは、デバイスまたは接続されているストレージ デバイスの共通ストレージ内で、すべてのファイルを参照、変更、削除できます。また、確認を求めずにファイルにアクセスすることもあります。"</string>
diff --git a/PermissionController/res/values-ka-car/strings.xml b/PermissionController/res/values-ka-car/strings.xml
new file mode 100644
index 000000000..767838aa1
--- /dev/null
+++ b/PermissionController/res/values-ka-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"თუ აპი რამდენიმე თვის განმავლობაში არ გამოიყენება:\n\n• თქვენი მონაცემების დასაცავად ნებართვები ამოიშლება\n• დროებითი ფაილები ამოიშლება მეხსიერების გასათავისუფლებლად"</string>
+</resources>
diff --git a/PermissionController/res/values-ka/strings.xml b/PermissionController/res/values-ka/strings.xml
index d8cce80cb..73aa14652 100644
--- a/PermissionController/res/values-ka/strings.xml
+++ b/PermissionController/res/values-ka/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"ამოშლილია <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> და <xliff:g id="NUMBER">%2$s</xliff:g> სხვა ნებართვა"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"გამოუყენებელი აპები"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"თუ აპი რამდენიმე თვის განმავლობაში არ გამოიყენება:\n\n• ნებართვები ამოიშლება თქვენი მონაცემების დასაცავად\n• შეტყობინებების მიღება შეწყდება ბატარეის დასაზოგად\n• დროებითი ფაილები ამოიშლება მეხსიერების გასათავისუფლებლად\n\nნებართვებისა და შეტყობინებების ხელახლა დასაშვებად გახსენით აპი."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"თუ აპი რამდენიმე თვის განმავლობაში არ გამოიყენება:\n\n• ნებართვები ამოიშლება თქვენი მონაცემების დასაცავად\n• დროებითი ფაილები ამოიშლება მეხსიერების გასათავისუფლებლად\n\nნებართვების ხელახლა დასაშვებად გახსენით აპი."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"აპის ბოლო გახსნა: <xliff:g id="NUMBER">%s</xliff:g>-ზე მეტი თვის წინ"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"თუ აპი ერთი თვის განმავლობაში არ გამოიყენება:\n\n• ნებართვები ამოიშლება თქვენი მონაცემების დასაცავად\n• დროებითი ფაილები ამოიშლება მეხსიერების გასათავისუფლებლად\n\nნებართვების ხელახლა დასაშვებად გახსენით აპი."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{ბოლო გახსნა #-ზე მეტი თვის წინ}other{ბოლო გახსნა #-ზე მეტი თვის წინ}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"აპის ბოლო გახსნა: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"ბოლო გახსნა: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"თუ დაუშვებთ ყველა ფაილის მართვას, ეს აპი შეძლებს წვდომას ყველა ფაილზე, მათ შეცვლას და წაშლას ამ მოწყობილობის ან დაკავშირებული მეხსიერების მოწყობილობების საერთო მეხსიერებაში. აპს შეიძლება ფაილებზე წვდომა ჰქონდეს ისე, რომ არ შეგეკითხოთ."</string>
diff --git a/PermissionController/res/values-kk-car/strings.xml b/PermissionController/res/values-kk-car/strings.xml
new file mode 100644
index 000000000..ee8b4851d
--- /dev/null
+++ b/PermissionController/res/values-kk-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Қолданба бірнеше ай бойы пайдаланылмаса:\n\n• Деректерді қорғау үшін рұқсаттар өшіріледі.\n• Орын босату үшін уақытша файлдар жойылады."</string>
+</resources>
diff --git a/PermissionController/res/values-kk/strings.xml b/PermissionController/res/values-kk/strings.xml
index b01ee9be3..54005a863 100644
--- a/PermissionController/res/values-kk/strings.xml
+++ b/PermissionController/res/values-kk/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> және тағы <xliff:g id="NUMBER">%2$s</xliff:g> рұқсат өшірілді"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Пайдаланылмайтын қолданбалар"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Қолданба бірнеше ай бойы пайдаланылмаса:\n\n• деректерді қорғау үшін рұқсаттар өшіріледі;\n• батарея үнемдеу үшін хабарландырулар тоқтатылады;\n• орын босату үшін уақытша файлдар өшіріледі.\n\nРұқсаттар мен хабарландыруларды қайта пайдалану үшін қолданбаны ашыңыз."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Қолданба бірнеше ай бойы пайдаланылмаса:\n\n• Деректерді қорғау үшін рұқсаттар өшіріледі.\n• Орын босату үшін уақытша файлдар жойылады.\n\nРұқсаттарды қайта пайдалану үшін қолданбаны ашыңыз."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Соңғы рет <xliff:g id="NUMBER">%s</xliff:g> айдан астам уақыт бұрын ашылған"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Қолданба бір ай бойы пайдаланылмаса:\n\n• Деректерді қорғау үшін рұқсаттар өшіріледі.\n• Орын босату үшін уақытша файлдар жойылады.\n\nРұқсаттарды қайта пайдалану үшін қолданбаны ашыңыз."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Соңғы рет кемінде # ай бұрын ашылған}other{Соңғы рет кемінде # ай бұрын ашылған}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Қолданбаның соңғы рет ашылуы: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Соңғы рет ашылуы: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Егер барлық файлдарды басқаруға рұқсат берілсе, бұл қолданба құрылғының жалпы жадындағы немесе жалғанған жад құрылғыларындағы кез келген файлды пайдалана, өзгерте және жоя алатын болады. Қолданба файлдарды сіздің рұқсатыңызсыз пайдалануы мүмкін."</string>
diff --git a/PermissionController/res/values-km-car/strings.xml b/PermissionController/res/values-km-car/strings.xml
new file mode 100644
index 000000000..4b263eded
--- /dev/null
+++ b/PermissionController/res/values-km-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"ប្រសិនបើ​កម្មវិធីណាមួយ​មិនត្រូវបានប្រើ​រយៈពេលពីរបីខែ៖\n\n• ការអនុញ្ញាតត្រូវបានដកចេញ ដើម្បីការពារ​ទិន្នន័យ​របស់អ្នក\n• ឯកសារ​បណ្ដោះអាសន្នត្រូវបាន​ដកចេញ ដើម្បីបង្កើន​ទំហំផ្ទុកទំនេរ"</string>
+</resources>
diff --git a/PermissionController/res/values-km/strings.xml b/PermissionController/res/values-km/strings.xml
index 1396915f9..1851a87fa 100644
--- a/PermissionController/res/values-km/strings.xml
+++ b/PermissionController/res/values-km/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"បានដក​ការអនុញ្ញាត​<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> និង​ការអនុញ្ញាត <xliff:g id="NUMBER">%2$s</xliff:g> ទៀត"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"កម្មវិធី​ដែលមិន​ប្រើ"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"ប្រសិនបើ​កម្មវិធី​មិនត្រូវបានប្រើ​រយៈពេលពីរបីខែ៖\n\n• ការអនុញ្ញាតត្រូវបាន​ដកចេញ ដើម្បីការពារ​ទិន្នន័យ​របស់អ្នក\n• ការជូនដំណឹង​ត្រូវបានបញ្ឈប់ ដើម្បីសន្សំថ្ម\n• ឯកសារ​បណ្ដោះអាសន្នត្រូវបាន​លុបចេញ ដើម្បីបង្កើន​ទំហំផ្ទុក\n\nដើម្បីផ្ដល់​ការអនុញ្ញាត និង​អនុញ្ញាតឱ្យ​ជូនដំណឹង​ម្ដងទៀត សូមបើក​កម្មវិធីនោះ។"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"ប្រសិនបើ​កម្មវិធីណាមួយ​មិនត្រូវបានប្រើ​រយៈពេលពីរបីខែ៖\n\n• ការអនុញ្ញាតត្រូវបានដកចេញ ដើម្បីការពារ​ទិន្នន័យ​របស់អ្នក\n• ឯកសារ​បណ្ដោះអាសន្នត្រូវបាន​ដកចេញ ដើម្បីបង្កើន​ទំហំផ្ទុកទំនេរ\n\nដើម្បីផ្ដល់​ការអនុញ្ញាតម្ដងទៀត សូមបើក​កម្មវិធីនោះ។"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"បានបើក​លើកចុងក្រោយ​លើសពី <xliff:g id="NUMBER">%s</xliff:g> ខែមុន"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"ប្រសិនបើ​កម្មវិធីណាមួយ​មិនត្រូវបានប្រើ​រយៈពេលមួយខែ៖\n\n• ការអនុញ្ញាតត្រូវបានដកចេញ ដើម្បីការពារ​ទិន្នន័យ​របស់អ្នក\n• ឯកសារ​បណ្ដោះអាសន្នត្រូវបាន​ដកចេញ ដើម្បីបង្កើន​ទំហំផ្ទុកទំនេរ\n\nដើម្បីផ្ដល់​ការអនុញ្ញាតម្ដងទៀត សូមបើក​កម្មវិធីនោះ។"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{បានបើកចុងក្រោយច្រើនជាង # ខែមុន}other{បានបើកចុងក្រោយច្រើនជាង # ខែមុន}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"បានបើក​កម្មវិធី​លើកចុងក្រោយ​នៅថ្ងៃទី <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"បានបើក​លើកចុងក្រោយ​នៅថ្ងៃទី <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"ប្រសិនបើអ្នកអនុញ្ញាតឱ្យគ្រប់គ្រងឯកសារទាំងអស់ កម្មវិធី​នេះអាច​ចូលប្រើ កែសម្រួល និងលុបឯកសារទាំងឡាយនៅក្នុងទំហំផ្ទុកទូទៅនៅលើឧបករណ៍នេះ ឬឧបករណ៍ផ្ទុក​ដែលបានភ្ជាប់ទាំងឡាយ។ កម្មវិធីនេះអាចចូលប្រើឯកសារដោយមិនចាំបាច់សួរអ្នក។"</string>
diff --git a/PermissionController/res/values-kn/strings.xml b/PermissionController/res/values-kn/strings.xml
index 83cc355b3..8a15f6ced 100644
--- a/PermissionController/res/values-kn/strings.xml
+++ b/PermissionController/res/values-kn/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ಮತ್ತು <xliff:g id="NUMBER">%2$s</xliff:g> ಇತರ ಅನುಮತಿಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"ಬಳಕೆಯಾಗದ ಆ್ಯಪ್‌ಗಳು"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"ಆ್ಯಪ್ ಅನ್ನು ಕೆಲವು ತಿಂಗಳುಗಳ ಕಾಲ ಬಳಸದೇ ಇದ್ದರೆ:\n\n• ನಿಮ್ಮ ಡೇಟಾವನ್ನು ರಕ್ಷಿಸಲು ಅನುಮತಿಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ\n• ಬ್ಯಾಟರಿ ಉಳಿಸಲು ಅಧಿಸೂಚನೆಗಳನ್ನು ನಿಲ್ಲಿಸಲಾಗುತ್ತದೆ\n• ಸ್ಥಳಾವಕಾಶವನ್ನು ಮುಕ್ತಗೊಳಿಸಲು ತಾತ್ಕಾಲಿಕ ಫೈಲ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ\n\nಪುನಃ ಅನುಮತಿಗಳು ಮತ್ತು ಅಧಿಸೂಚನೆಗಳನ್ನು ಅನುಮತಿಸಲು, ಆ್ಯಪ್ ಅನ್ನು ತೆರೆಯಿರಿ."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"ಆ್ಯಪ್ ಅನ್ನು ಕೆಲವು ತಿಂಗಳುಗಳ ಕಾಲ ಬಳಸದೇ ಇದ್ದರೆ:\n\n• ನಿಮ್ಮ ಡೇಟಾವನ್ನು ರಕ್ಷಿಸಲು ಅನುಮತಿಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ\n• ಸ್ಥಳಾವಕಾಶವನ್ನು ಮುಕ್ತಗೊಳಿಸಲು ತಾತ್ಕಾಲಿಕ ಫೈಲ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ\n\nಅನುಮತಿಗಳನ್ನು ಪುನಃ ಅನುಮತಿಸಲು ಆ್ಯಪ್ ಅನ್ನು ತೆರೆಯಿರಿ."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"ಕೊನೆಯದಾಗಿ <xliff:g id="NUMBER">%s</xliff:g> ತಿಂಗಳುಗಳಿಗೂ ಹಿಂದೆ ತೆರೆಯಲಾಗಿದೆ"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"ಆ್ಯಪ್ ಅನ್ನು ತಿಂಗಳ ಕಾಲ ಬಳಸದೇ ಇದ್ದರೆ:\n\n• ನಿಮ್ಮ ಡೇಟಾವನ್ನು ರಕ್ಷಿಸಲು ಅನುಮತಿಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ\n• ಸ್ಥಳಾವಕಾಶವನ್ನು ಮುಕ್ತಗೊಳಿಸಲು ತಾತ್ಕಾಲಿಕ ಫೈಲ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ\n\nಅನುಮತಿಗಳನ್ನು ಪುನಃ ಅನುಮತಿಸಲು ಆ್ಯಪ್ ಅನ್ನು ತೆರೆಯಿರಿ."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{ಕೊನೆಯದಾಗಿ # ತಿಂಗಳ ಹಿಂದೆ ತೆರೆಯಲಾಗಿದೆ}one{ಕೊನೆಯದಾಗಿ # ತಿಂಗಳುಗಳಿಗೂ ಹಿಂದೆ ತೆರೆಯಲಾಗಿದೆ}other{ಕೊನೆಯದಾಗಿ # ತಿಂಗಳುಗಳಿಗೂ ಹಿಂದೆ ತೆರೆಯಲಾಗಿದೆ}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ಆ್ಯಪ್ ಅನ್ನು ಕೊನೆಯದಾಗಿ ತೆರೆದಿರುವುದು: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"ಕೊನೆಯದಾಗಿ ತೆರೆದಿರುವುದು: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"ನೀವು ಎಲ್ಲಾ ಫೈಲ್‌ಗಳ ನಿರ್ವಹಣೆಯನ್ನು ಅನುಮತಿಸಿದರೆ, ಈ ಸಾಧನ ಅಥವಾ ಸಂಪರ್ಕಿಸಲಾಗಿರುವ ಸಂಗ್ರಹಣಾ ಸಾಧನಗಳ ಸಾಮಾನ್ಯ ಸಂಗ್ರಣೆಯಲ್ಲಿರುವ ಯಾವುದೇ ಫೈಲ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು, ಮಾರ್ಪಡಿಸಲು ಮತ್ತು ಅಳಿಸಲು ಈ ಆ್ಯಪ್‌ಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಈ ಆ್ಯಪ್ ನಿಮ್ಮನ್ನು ಅನುಮತಿ ಕೇಳದೇ ಫೈಲ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು."</string>
diff --git a/PermissionController/res/values-ko/strings.xml b/PermissionController/res/values-ko/strings.xml
index 35a9e1899..edc4d3a27 100644
--- a/PermissionController/res/values-ko/strings.xml
+++ b/PermissionController/res/values-ko/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> 외 <xliff:g id="NUMBER">%2$s</xliff:g>개 권한 삭제됨"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"사용하지 않는 앱"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"앱을 몇 개월간 사용하지 않는 경우 다음 사항이 적용됩니다.\n\n• 데이터 보호를 위해 권한이 삭제됨\n• 배터리를 절약하기 위해 알림이 중단됨\n• 여유 공간 확보를 위해 임시 파일이 삭제됨\n\n권한과 알림을 다시 허용하려면 앱을 여세요."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"앱을 몇 개월간 사용하지 않는 경우 다음 사항이 적용됩니다.\n\n• 데이터 보호를 위해 권한이 삭제됨\n• 여유 공간 확보를 위해 임시 파일이 삭제됨\n\n권한을 다시 부여하려면 앱을 여세요."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"마지막으로 실행한 지 <xliff:g id="NUMBER">%s</xliff:g>개월 이상 경과함"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"앱을 1개월간 사용하지 않는 경우 다음 사항이 적용됩니다.\n\n• 데이터 보호를 위해 권한이 삭제됨\n• 여유 공간 확보를 위해 임시 파일이 삭제됨\n\n권한을 다시 부여하려면 앱을 여세요."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{마지막으로 실행한 지 #개월 지남}other{마지막으로 실행한 지 #개월 지남}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"마지막 앱 실행 날짜: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"마지막 실행 날짜: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"모든 파일 관리를 허용하면 앱이 이 기기의 공통 저장용량 또는 연결된 저장장치에 있는 모든 파일에 액세스하거나 이러한 파일을 수정, 삭제할 수 있습니다. 앱이 사용자에게 요청하지 않고도 파일에 액세스할 수 있습니다."</string>
@@ -573,7 +573,7 @@
<string name="privacy_controls_title" msgid="7605929972256835199">"개인 정보 보호 설정"</string>
<string name="camera_toggle_title" msgid="1251201397431837666">"카메라 액세스"</string>
<string name="mic_toggle_title" msgid="2649991093496110162">"마이크 액세스"</string>
- <string name="perm_toggle_description" msgid="7801326363741451379">"앱 및 서비스에 적용됩니다."</string>
+ <string name="perm_toggle_description" msgid="7801326363741451379">"앱 및 서비스에 적용"</string>
<string name="mic_toggle_description" msgid="9163104307990677157">"앱 및 서비스에 적용됩니다. 설정이 꺼져 있어도 긴급 전화번호로 전화를 걸 때는 마이크 데이터가 공유될 수 있습니다."</string>
<string name="location_settings_subtitle" msgid="2328360561197430695">"위치에 액세스할 수 있는 앱과 서비스 보기"</string>
<string name="show_clip_access_notification_title" msgid="5168467637351109096">"클립보드 액세스 시 알림 표시"</string>
diff --git a/PermissionController/res/values-ky/strings.xml b/PermissionController/res/values-ky/strings.xml
index 8eefce235..d1292bbac 100644
--- a/PermissionController/res/values-ky/strings.xml
+++ b/PermissionController/res/values-ky/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> жана дагы <xliff:g id="NUMBER">%2$s</xliff:g> уруксат өчүрүлдү"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Колдонулбаган колдонмолор"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Эгер колдонмо бир нече ай колдонулбаса:\n\n• Маалыматыңызды коргоо үчүн уруксаттар жоюлат\n• Батареяны көбүрөөк убакытка жеткирүү үчүн билдирмелер токтотулат\n• Орун бошотуу үчүн убактылуу файлдар өчүрүлөт\n\nУруксаттарды жана билдирмелерди кайра иштетүү үчүн колдонмону ачыңыз."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Эгер колдонмо бир нече ай колдонулбаса:\n\n• Маалыматыңызды коргоо үчүн уруксаттар жоюлат\n• Орун бошотуу үчүн убактылуу файлдар өчүрүлөт\n\nУруксаттарды жана билдирмелерди кайра иштетүү үчүн колдонмону ачыңыз."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Акыркы жолу <xliff:g id="NUMBER">%s</xliff:g> ай мурда ачылган"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Эгер колдонмо бир ай колдонулбаса:\n\n• Маалыматыңызды коргоо үчүн уруксаттар жоюлат\n• Орун бошотуу үчүн убактылуу файлдар өчүрүлөт\n\nУруксаттарды кайра иштетүү үчүн колдонмону ачыңыз."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Акыркы жолу # ай мурда ачылган}other{Акыркы жолу # ай мурда ачылган}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Колдонмо акыркы жолу <xliff:g id="DATE">%s</xliff:g> ачылган"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Акыркы жолу <xliff:g id="DATE">%s</xliff:g> ачылган"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Эгерде бардык файлдарды башкарууга уруксат берсеңиз, бул колдонмо түзмөктүн жалпы сактагычындагы же туташтырылган сактагыч түзмөктөрүндөгү бардык файлдарды көрүп, өзгөртүп жана өчүрө алат. Колдонмо файлдарга сизден сурабай эле кире алат."</string>
diff --git a/PermissionController/res/values-lo/strings.xml b/PermissionController/res/values-lo/strings.xml
index 22609be0a..8e256b13a 100644
--- a/PermissionController/res/values-lo/strings.xml
+++ b/PermissionController/res/values-lo/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"ລຶບສິດອະນຸຍາດ <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ແລະ ອີກ <xliff:g id="NUMBER">%2$s</xliff:g> ແອັບອອກແລ້ວ"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"ແອັບທີ່ບໍ່ໄດ້ໃຊ້"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"ຫາກບໍ່ໄດ້ໃຊ້ແອັບໃດໜຶ່ງເປັນເວລາສອງສາມເດືອນ:\n\n• ການອະນຸຍາດຈະຖືກລຶບອອກເພື່ອປົກປ້ອງຂໍ້ມູນຂອງທ່ານ\n• ການແຈ້ງເຕືອນຈະຢຸດເຮັດວຽກເພື່ອປະຢັດແບັດເຕີຣີ\n• ໄຟລ໌ຊົ່ວຄາວຈະຖືກລຶບອອກເພື່ອສ້າງພື້ນທີ່ຫວ່າງ\n\nໃຫ້ເປີດແອັບຂຶ້ນມາເພື່ອໃຫ້ການອະນຸຍາດ ແລະ ການແຈ້ງເຕືອນຄືນໃໝ່."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"ຫາກບໍ່ໄດ້ໃຊ້ແອັບໃດໜຶ່ງເປັນເວລາສອງສາມເດືອນ:\n\n• ການອະນຸຍາດຈະຖືກລຶບອອກເພື່ອປົກປ້ອງຂໍ້ມູນຂອງທ່ານ\n• ໄຟລ໌ຊົ່ວຄາວຈະຖືກລຶບອອກເພື່ອສ້າງພື້ນທີ່ຫວ່າງ\n\nເພື່ອໃຫ້ການອະນຸຍາດອີກເທື່ອໜຶ່ງ, ໃຫ້ເປີດແອັບຂຶ້ນມາ."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"ເປີດຫຼ້າສຸດຫຼາຍກວ່າ <xliff:g id="NUMBER">%s</xliff:g> ເດືອນກ່ອນ"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"ຫາກບໍ່ໄດ້ໃຊ້ແອັບໃດໜຶ່ງເປັນເວລາໜຶ່ງເດືອນ:\n\n• ການອະນຸຍາດຈະຖືກລຶບອອກເພື່ອປົກປ້ອງຂໍ້ມູນຂອງທ່ານ\n• ໄຟລ໌ຊົ່ວຄາວຈະຖືກລຶບອອກເພື່ອສ້າງພື້ນທີ່ຫວ່າງ\n\nເພື່ອໃຫ້ການອະນຸຍາດຄືນໃໝ່, ໃຫ້ເປີດແອັບຂຶ້ນມາ."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{ເປີດຫຼ້າສຸດຫຼາຍກວ່າ # ເດືອນກ່ອນ}other{ເປີດຫຼ້າສຸດຫຼາຍກວ່າ # ເດືອນກ່ອນ}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ເປີດແອັບຫຼ້າສຸດເມື່ອ <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"ເປີດຫຼ້າສຸດ <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"ຫາກທ່ານອະນຸຍາດໃຫ້ມີການຈັດການທຸກໄຟລ໌ໄດ້, ແອັບນີ້ຈະສາມາດເຂົ້າເຖິງ, ແກ້ໄຂ ແລະ ລຶບໄຟລ໌ໃດກໍຕາມໃນບ່ອນຈັດເກັບຂໍ້ມູນທົ່ວໄປຢູ່ອຸປະກອນນີ້ ຫຼື ອຸປະກອນບ່ອນຈັດເກັບຂໍ້ມູນທີ່ເຊື່ອມຕໍ່ໄວ້. ແອັບອາດເຂົ້າເຖິງໄຟລ໌ໂດຍບໍ່ຕ້ອງຖາມທ່ານ."</string>
diff --git a/PermissionController/res/values-lt/strings.xml b/PermissionController/res/values-lt/strings.xml
index 0e6f08683..42541a621 100644
--- a/PermissionController/res/values-lt/strings.xml
+++ b/PermissionController/res/values-lt/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Leidimas „<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>“ ir dar <xliff:g id="NUMBER">%2$s</xliff:g> pašalinti"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Nenaudojamos programos"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Jei programa nenaudojama kelis mėnesius:\n\n• pašalinami leidimai siekiant apsaugoti jūsų duomenis;\n• sustabdomi pranešimai, siekiant tausoti akumuliatoriaus energiją;\n• pašalinami laikinieji failai siekiant atlaisvinti vietos;\n\nNorėdami vėl suteikti leidimus ir leisti pranešimus, atidarykite programą."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Jei programa nenaudojama kelis mėnesius:\n\n• pašalinami leidimai siekiant apsaugoti jūsų duomenis;\n• pašalinami laikinieji failai siekiant atlaisvinti vietos.\n\nNorėdami vėl suteikti leidimus, atidarykite programą."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Paskutinį kartą atidaryta daugiau nei prieš <xliff:g id="NUMBER">%s</xliff:g> mėn."</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Jei programa nenaudojama mėnesį:\n\n• pašalinami leidimai siekiant apsaugoti jūsų duomenis;\n• pašalinami laikinieji failai siekiant atlaisvinti vietos.\n\nNorėdami vėl suteikti leidimus, atidarykite programą."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Paskutinį kartą atidaryta daugiau nei prieš # mėnesį}one{Paskutinį kartą atidaryta daugiau nei prieš # mėnesį}few{Paskutinį kartą atidaryta daugiau nei prieš # mėnesius}many{Paskutinį kartą atidaryta daugiau nei prieš # mėnesio}other{Paskutinį kartą atidaryta daugiau nei prieš # mėnesių}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Programa paskutinį kartą atidaryta <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Paskutinį kartą atidaryta <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Jei leisite valdyti visus failus, ši programa galės pasiekti, keisti ir ištrinti bet kuriuos failus, esančius šio įrenginio bendroje saugykloje arba susietų saugyklų įrenginiuose. Programa gali pasiekti failus nepaklaususi."</string>
diff --git a/PermissionController/res/values-lv/strings.xml b/PermissionController/res/values-lv/strings.xml
index 759c60484..1d8682391 100644
--- a/PermissionController/res/values-lv/strings.xml
+++ b/PermissionController/res/values-lv/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Atļauja “<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>” un vēl <xliff:g id="NUMBER">%2$s</xliff:g> tika automātiski noņemtas"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Neizmantotās lietotnes"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Ja kāda lietotne nav izmantota vairākus mēnešus:\n\n• tiek noņemtas atļaujas, lai aizsargātu jūsu datus;\n• tiek apturēti paziņojumi, lai taupītu akumulatora enerģiju;\n• tiek noņemti pagaidu faili, lai atbrīvotu vietu.\n\nLai atkal piešķirtu atļaujas un atļautu paziņojumus, atveriet lietotni."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Ja kāda lietotne nav izmantota vairākus mēnešus:\n\n• tiek noņemtas atļaujas, lai aizsargātu jūsu datus;\n• tiek noņemti pagaidu faili, lai atbrīvotu vietu.\n\nLai atkal piešķirtu atļaujas, atveriet lietotni."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Pēdējoreiz atvērtas pirms vairāk nekā <xliff:g id="NUMBER">%s</xliff:g> mēnešiem"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Ja kāda lietotne nav izmantota mēnesi:\n\n• tiek noņemtas atļaujas, lai aizsargātu jūsu datus;\n• tiek noņemti pagaidu faili, lai atbrīvotu vietu.\n\nLai atkal piešķirtu atļaujas, atveriet lietotni."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Pēdējoreiz atvērtas pirms vairāk nekā # mēneša}zero{Pēdējoreiz atvērtas pirms vairāk nekā # mēnešiem}one{Pēdējoreiz atvērtas pirms vairāk nekā # mēneša}other{Pēdējoreiz atvērtas pirms vairāk nekā # mēnešiem}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Lietotne pēdējoreiz tika atvērta <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Pēdējoreiz atvērta <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Ja atļausiet pārvaldīt visus failus, šī lietotne varēs piekļūt visiem failiem un modificēt un dzēst visus failus, kas atrodas parastā krātuvē šajā ierīcē vai pievienotās atmiņas ierīcēs. Lietotne varēs piekļūt failiem, nepieprasot jūsu atļauju."</string>
diff --git a/PermissionController/res/values-mk-car/strings.xml b/PermissionController/res/values-mk-car/strings.xml
new file mode 100644
index 000000000..dfee73b03
--- /dev/null
+++ b/PermissionController/res/values-mk-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Ако некоја апликација не се користи неколку месеци:\n\n• дозволите се отстрануваат за да се заштитат вашите податоци\n• привремените датотеки се отстрануваат за да се ослободи простор"</string>
+</resources>
diff --git a/PermissionController/res/values-mk/strings.xml b/PermissionController/res/values-mk/strings.xml
index 084fd3115..6cd9e81f4 100644
--- a/PermissionController/res/values-mk/strings.xml
+++ b/PermissionController/res/values-mk/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Дозволата за „<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>“ и уште <xliff:g id="NUMBER">%2$s</xliff:g> други дозволи се отстранети"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Некористени апликации"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Ако некоја апликација не се користи неколку месеци:\n\n• дозволите се отстрануваат за да се заштитат вашите податоци\n• известувањата се стопираат за да се заштеди батерија\n• привремените датотеки се отстрануваат за да се ослободи простор\n\nЗа да повторно се овозможат дозволите и известувањата, отворете ја апликацијата."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Ако некоја апликација не се користи неколку месеци:\n\n• Дозволите се отстрануваат за да се заштитат вашите податоци\n• Привремените датотеки се отстрануваат за да се ослободи простор\n\nЗа да ги овозможите дозволите повторно, отворете ја апликацијата."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Последно отворени пред повеќе од <xliff:g id="NUMBER">%s</xliff:g> месеци"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Ако некоја апликација не се користи еден месец:\n\n• дозволите се отстрануваат за да се заштитат вашите податоци\n• привремените датотеки се отстрануваат за да се ослободи простор\n\nЗа да ги овозможите дозволите повторно, отворете ја апликацијата."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Последно отворени пред повеќе од # месец}one{Последно отворени пред повеќе од # месец}other{Последно отворени пред повеќе од # месеци}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Последно отворање на апликацијата: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Последно отворање: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Ако дозволите управување со сите датотеки, апликацијава ќе може да ги менува, да ги брише, како и да пристапува до сите датотеки во заедничката меморија на уредов или на поврзаните уреди за складирање. Апликацијата може да пристапува до датотеките без да ве праша."</string>
diff --git a/PermissionController/res/values-ml/strings.xml b/PermissionController/res/values-ml/strings.xml
index 8a328b4f6..51e7a9830 100644
--- a/PermissionController/res/values-ml/strings.xml
+++ b/PermissionController/res/values-ml/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> അനുമതിയും മറ്റ് <xliff:g id="NUMBER">%2$s</xliff:g> അനുമതികളും നീക്കം ചെയ്തു"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"ഉപയോഗിക്കാത്ത ആപ്പുകൾ"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"ഒരു ആപ്പ് ഏതാനും മാസങ്ങളായി ഉപയോഗിക്കുന്നില്ലെങ്കിൽ:\n\n• നിങ്ങളുടെ ഡാറ്റ സംരക്ഷിക്കാൻ, അനുമതികൾ നീക്കം ചെയ്യുന്നു\n• ബാറ്ററി ലാഭിക്കാൻ, അറിയിപ്പുകൾ നൽകുന്നത് നിർത്തുന്നു\n• ഇടമുണ്ടാക്കാൻ, താൽക്കാലിക ഫയലുകൾ നീക്കം ചെയ്യുന്നു\n\nഅനുമതികളും അറിയിപ്പുകളും വീണ്ടും അനുവദിക്കാൻ, ആപ്പ് തുറക്കുക."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"ഒരു ആപ്പ് കുറച്ച് മാസം ഉപയോഗിക്കാതിരുന്നാൽ:\n\n• നിങ്ങളുടെ ഡാറ്റ സംരക്ഷിക്കുന്നതിന് അനുമതികൾ നീക്കം ചെയ്യും\n• ഇടമുണ്ടാക്കാൻ താൽക്കാലിക ഫയലുകൾ നീക്കം ചെയ്യും\n\nവീണ്ടും അനുമതികൾ അനുവദിക്കാൻ ആപ്പ് തുറക്കുക."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"അവസാനം തുറന്നിട്ട് <xliff:g id="NUMBER">%s</xliff:g> മാസത്തിൽ കൂടുതലായവ"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"ആപ്പ് ഒരു മാസമായി ഉപയോഗിച്ചിട്ടില്ലെങ്കിൽ:\n\n• നിങ്ങളുടെ ഡാറ്റ സംരക്ഷിക്കാൻ അനുമതികൾ നീക്കം ചെയ്യും\n• ഇടമുണ്ടാക്കാൻ താൽക്കാലിക ഫയലുകൾ നീക്കം ചെയ്യും\n\nഅനുമതികൾ വീണ്ടും അനുവദിക്കാൻ ആപ്പ് തുറക്കുക."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{അവസാനം തുറന്നിട്ട് # മാസത്തിൽ കൂടുതലായവ}other{അവസാനം തുറന്നിട്ട് # മാസത്തിൽ കൂടുതലായവ}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ആപ്പ് അവസാനം തുറന്നത് <xliff:g id="DATE">%s</xliff:g>-നാണ്"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"അവസാനം തുറന്നത് <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"എല്ലാ ഫയലുകളും മാനേജ് ചെയ്യാൻ അനുവദിച്ചാൽ ഈ ഉപകരണത്തിലെയോ കണക്റ്റ് ചെയ്‌തിരിക്കുന്ന സ്റ്റോറേജ് ഉപകരണങ്ങളിലെയോ പൊതു സ്റ്റോറേജിലുള്ള ഏത് ഫയലും ആക്‌സസ് ചെയ്യാനും പരിഷ്‌കരിക്കാനും ഇല്ലാതാക്കാനും ഈ ആപ്പിന് കഴിയും. നിങ്ങളോട് ചോദിക്കാതെ തന്നെ ആപ്പ് ഫയലുകൾ ആക്‌സസ് ചെയ്തേക്കാം."</string>
diff --git a/PermissionController/res/values-mn/strings.xml b/PermissionController/res/values-mn/strings.xml
index f16b8bb83..1f6b50dc7 100644
--- a/PermissionController/res/values-mn/strings.xml
+++ b/PermissionController/res/values-mn/strings.xml
@@ -20,7 +20,7 @@
<string name="ok" msgid="1936281769725676272">"OK"</string>
<string name="permission_search_keyword" msgid="1214451577494730543">"зөвшөөрөл"</string>
<string name="cancel" msgid="8943320028373963831">"Болих"</string>
- <string name="back" msgid="6249950659061523680">"Арын"</string>
+ <string name="back" msgid="6249950659061523680">"Буцах"</string>
<string name="available" msgid="6007778121920339498">"Боломжтой"</string>
<string name="blocked" msgid="9195547604866033708">"Блоклосон"</string>
<string name="on" msgid="280241003226755921">"Асаалттай"</string>
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>-н болон бусад <xliff:g id="NUMBER">%2$s</xliff:g> зөвшөөрлийг хассан"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Ашиглаагүй аппууд"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Хэрэв аппыг хэдэн сарын турш ашиглахгүй бол:\n\n• Таны өгөгдлийг хамгаалахын тулд зөвшөөрлийг устгана\n• Батарей хэмнэхийн тулд мэдэгдлийг зогсооно\n• Сул зай гаргахын тулд түр зуурын файлуудыг устгана\n\nЗөвшөөрөл болон мэдэгдлийг дахин зөвшөөрөхийн тулд аппыг нээнэ үү."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Хэрэв аппыг хэдэн сар ашиглаагүй бол:\n\n• Таны өгөгдлийг хамгаалахын тулд зөвшөөрлийг хасна\n• Сул зай гаргахын тулд түр зуурын файлууыг хасна\n\nЗөвшөөрлийг дахин олгохын тулд аппыг нээнэ үү."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Хамгийн сүүлд <xliff:g id="NUMBER">%s</xliff:g>-с олон сарын өмнө нээсэн"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Хэрэв аппыг нэг сарын турш ашиглаагүй бол:\n\n• Таны өгөгдлийг хамгаалахын тулд зөвшөөрлийг хасна\n• Сул зай гаргахын тулд түр зуурын файлуудыг хасна\n\nЗөвшөөрлийг дахин олгохын тулд аппыг нээнэ үү."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Сүүлд # сараас дээш хугацааны өмнө нээсэн}other{Сүүлд # сараас дээш хугацааны өмнө нээсэн}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Аппыг хамгийн сүүлд <xliff:g id="DATE">%s</xliff:g>-нд нээсэн"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Хамгийн сүүлд <xliff:g id="DATE">%s</xliff:g>-нд нээсэн"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Хэрэв та бүх файлыг удирдахыг зөвшөөрвөл энэ апп нь уг төхөөрөмжийн нийтлэг хадгалах сан дахь эсвэл холбогдсон хадгалах төхөөрөмж дэх дурын файлд хандах, түүнийг өөрчлөх болон устгах боломжтой. Апп танаас асуухгүйгээр файлуудад хандаж болзошгүй."</string>
diff --git a/PermissionController/res/values-mr/strings.xml b/PermissionController/res/values-mr/strings.xml
index 242d32857..e4be6fe56 100644
--- a/PermissionController/res/values-mr/strings.xml
+++ b/PermissionController/res/values-mr/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> आणि इतर <xliff:g id="NUMBER">%2$s</xliff:g> परवानग्या काढल्या गेल्या"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"न वापरलेली अ‍ॅप्स"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"ॲप काही महिन्यांमध्ये वापरले गेले नसल्यास:\n\n• तुमच्या डेटाचे संरक्षण करण्यासाठी परवानग्या काढून टाकल्या जातात\n• बॅटरीची बचत करण्यासाठी सूचना थांबवल्या जातात\n• जागा मोकळी करण्यासाठी तात्पुरत्या फाइल काढून टाकल्या जातात\n\nपरवानग्या आणि सूचना यांना पुन्हा अनुमती देण्यासाठी ॲप उघडा."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"एखादे ॲप काही महिन्यांसाठी वापरले गेले नसल्यास:\n\n• तुमच्या डेटाचे संरक्षण करण्यासाठी परवानग्या काढून टाकल्या जातात\n• जागा मोकळी करण्याकरिता तात्पुरत्या फाइल काढून टाकल्या जातात\n\nपुन्हा परवानग्या देण्यासाठी, ॲप उघडा."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"शेवटची <xliff:g id="NUMBER">%s</xliff:g> महिन्यांपूर्वी उघडली गेली"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"एखादे ॲप एका महिन्यांसाठी वापरले गेले नसल्यास:\n\n• तुमच्या डेटाचे संरक्षण करण्यासाठी परवानग्या काढून टाकल्या जातात\n• जागा मोकळी करण्याकरिता तात्पुरत्या फाइल काढून टाकल्या जातात\n\nपुन्हा परवानग्या देण्यासाठी, ॲप उघडा."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{शेवटचे # महिन्यापूर्वीपेक्षा आधी उघडले}other{शेवटचे # महिन्यांपूर्वीपेक्षा आधी उघडले}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"<xliff:g id="DATE">%s</xliff:g> रोजी ॲप शेवटचे उघडलेले"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"<xliff:g id="DATE">%s</xliff:g> रोजी शेवटचे उघडलेले"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"तुम्ही सर्व फाइल व्यवस्थापित करण्यासाठी अनुमती दिल्यास, हे ॲप या डिव्हाइसवर किंवा कनेक्ट केलेल्या स्टोरेज डिव्हाइसवर सामान्य स्टोरेजमधील कोणत्याही फाइल ॲक्सेस करू, सुधारित करू आणि हटवू शकते. ॲप कदाचित तुम्हाला न विचारता फाइल ॲक्सेस करू शकते."</string>
diff --git a/PermissionController/res/values-ms/strings.xml b/PermissionController/res/values-ms/strings.xml
index 71df0dd2d..ff66890fa 100644
--- a/PermissionController/res/values-ms/strings.xml
+++ b/PermissionController/res/values-ms/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> dan <xliff:g id="NUMBER">%2$s</xliff:g> kebenaran lain dialih keluar"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Apl yang tidak digunakan"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Jika apl tidak digunakan selama beberapa bulan:\n\n• Kebenaran dialih keluar untuk melindungi data anda\n• Pemberitahuan diberhentikan untuk menjimatkan bateri\n• Fail sementara dialih keluar untuk mengosongkan ruang\n\nUntuk memberikan kebenaran dan pemberitahuan lagi, buka apl tersebut."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Jika apl tidak digunakan selama beberapa bulan:\n\n• Kebenaran dialih keluar untuk melindungi data anda\n• Fail sementara dialih keluar untuk mengosongkan ruang\n\nUntuk memberikan kebenaran lagi, buka apl tersebut."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Terakhir dibuka lebih <xliff:g id="NUMBER">%s</xliff:g> bulan yang lalu"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Jika apl tidak digunakan selama sebulan:\n\n• Kebenaran akan dialih keluar untuk melindungi data anda\n• Fail sementara akan dialih keluar untuk mengosongkan ruang\n\nUntuk memberikan kebenaran semula, buka apl tersebut."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Terakhir dibuka lebih # bulan yang lalu}other{Terakhir dibuka lebih # bulan yang lalu}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Apl dibuka kali terakhir pada <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Terakhir dibuka <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Jika anda membenarkan pengurusan semua fail, apl ini boleh mengakses, mengubah suai dan memadamkan sebarang fail dalam storan umum pada peranti ini atau peranti storan yang disambungkan. Apl ini mungkin mengakses fail tanpa bertanya anda."</string>
diff --git a/PermissionController/res/values-my-car/strings.xml b/PermissionController/res/values-my-car/strings.xml
new file mode 100644
index 000000000..8af77da78
--- /dev/null
+++ b/PermissionController/res/values-my-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"အက်ပ်ကို လအနည်းငယ်ကြာ မသုံးပါက-\n\n• သင့်ဒေတာကို ကာကွယ်ရန် ခွင့်ပြုချက်များ ဖယ်ရှားသည်\n• နေရာလွတ်ပြုလုပ်ရန် ယာယီဖိုင်များ ဖယ်ရှားသည်"</string>
+</resources>
diff --git a/PermissionController/res/values-my/strings.xml b/PermissionController/res/values-my/strings.xml
index 253af91d1..3b149263f 100644
--- a/PermissionController/res/values-my/strings.xml
+++ b/PermissionController/res/values-my/strings.xml
@@ -203,7 +203,7 @@
<string name="auto_revoke_label" msgid="5068393642936571656">"အက်ပ်ကိုအသုံးမပြုလျှင် ခွင့်ပြုချက်များ ဖယ်ရှားရန်"</string>
<string name="unused_apps_label" msgid="2595428768404901064">"ခွင့်ပြုချက်များဖယ်ရှားပြီး နေရာလွတ်ပြုလုပ်ရန်"</string>
<string name="unused_apps_label_v2" msgid="7058776770056517980">"အသုံးမပြုပါက အက်ပ်လုပ်ဆောင်ချက် ခဏရပ်ရန်"</string>
- <string name="unused_apps_summary" msgid="8839466950318403115">"ခွင့်ပြုချက်များ ဖယ်ရှားခြင်း၊ ယာယီဖိုင်များ ဖျက်ခြင်းနှင့် အကြောင်းကြားချက်များ ရပ်ခြင်းတို့ ပြုလုပ်နိုင်သည်"</string>
+ <string name="unused_apps_summary" msgid="8839466950318403115">"ခွင့်ပြုချက် ဖယ်ရှားခြင်း၊ ယာယီဖိုင် ဖျက်ခြင်း၊ အကြောင်းကြားချက် ရပ်ခြင်း"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"အက်ပ်ကို လအနည်းငယ် အသုံးမပြုပါက သင်၏ဒေတာကိုကာကွယ်ရန် ဤအက်ပ်အတွက် ခွင့်ပြုချက်များကို ဖယ်ရှားပါမည်။"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"အက်ပ်ကို လအနည်းငယ် အသုံးမပြုပါက သင်၏ဒေတာကိုကာကွယ်ရန် အောက်ပါခွင့်ပြုချက်များကို ဖယ်ရှားပါမည်- <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"သင်၏ဒေတာကိုကာကွယ်ရန် လအနည်းငယ်အတွင်း အသုံးမပြုသော အက်ပ်များမှ ခွင့်ပြုချက်များကို ဖယ်ရှားလိုက်သည်။"</string>
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> နှင့် အခြားခွင့်ပြုချက် <xliff:g id="NUMBER">%2$s</xliff:g> ခု ဖယ်ရှားလိုက်သည်"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"အသုံးမပြုသော အက်ပ်များ"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"အက်ပ်တစ်ခုကို လအနည်းငယ်ကြာ အသုံးမပြုပါက-\n\n• သင့်ဒေတာကိုကာကွယ်ရန် ခွင့်ပြုချက်များကို ဖယ်ရှားသည်\n• ဘက်ထရီချွေတာရန် အကြောင်းကြားချက်များကို ရပ်သည်\n• နေရာလွတ်ပြုလုပ်ရန် ယာယီဖိုင်များကို ဖယ်ရှားသည်\n\nခွင့်ပြုချက်နှင့် အကြောင်းကြားချက်များကို ပြန်လည်ခွင့်ပြုရန် အက်ပ်ကိုဖွင့်ပါ။"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"အက်ပ်ကို လအနည်းငယ်ကြာ အသုံးမပြုပါက-\n\n• သင့်ဒေတာကိုကာကွယ်ရန် ခွင့်ပြုချက်များ ဖယ်ရှားသည်\n• နေရာလွတ်ပြုလုပ်ရန် ယာယီဖိုင်များ ဖယ်ရှားသည်\n\nခွင့်ပြုချက်များပြန်ပေးရန် အက်ပ်ကို ဖွင့်နိုင်သည်။"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"ပြီးခဲ့သော <xliff:g id="NUMBER">%s</xliff:g> လ ကျော်က နောက်ဆုံးဖွင့်ထားသည်"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"အက်ပ်ကို တစ်လကြာ အသုံးမပြုပါက-\n\n• သင့်ဒေတာကို ကာကွယ်ရန် ခွင့်ပြုချက်များ ဖယ်ရှားသည်\n• နေရာလွတ်ပြုလုပ်ရန် ယာယီဖိုင်များ ဖယ်ရှားသည်\n\nခွင့်ပြုချက်များ ပြန်ပေးရန် အက်ပ်ဖွင့်ပါ။"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{ပြီးခဲ့သော # လကျော်က နောက်ဆုံးဖွင့်ထားသည်}other{ပြီးခဲ့သော # လကျော်က နောက်ဆုံးဖွင့်ထားသည်}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"အက်ပ်ကို <xliff:g id="DATE">%s</xliff:g> တွင် နောက်ဆုံးဖွင့်ခဲ့သည်"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"<xliff:g id="DATE">%s</xliff:g> တွင် နောက်ဆုံး ဖွင့်ခဲ့သည်"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"ဖိုင်အားလုံးကို စီမံခွင့်ပြုလိုက်ပါက ဤစက် (သို့) ချိတ်ဆက်ထားသော သိုလှောင်သည့်စက်များ၏ ပုံမှန်သိုလှောင်ခန်းရှိ ဖိုင်မှန်သမျှကို ကြည့်ခြင်း၊ ပြုပြင်ခြင်းနှင့် ဖျက်ခြင်းတို့ ဤအက်ပ်က ပြုလုပ်နိုင်သည်။ သင့်ထံခွင့်မတောင်းဘဲ အက်ပ်က ဖိုင်များကို အသုံးပြုနိုင်သည်။"</string>
diff --git a/PermissionController/res/values-nb/strings.xml b/PermissionController/res/values-nb/strings.xml
index cd1123900..ea5507286 100644
--- a/PermissionController/res/values-nb/strings.xml
+++ b/PermissionController/res/values-nb/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> og <xliff:g id="NUMBER">%2$s</xliff:g> andre tillatelser er fjernet"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Ubrukte apper"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Dette skjer hvis en app ikke brukes på noen måneder:\n\n• Tillatelser fjernes for å beskytte dataene dine.\n• Varsler stoppes for å spare batteri.\n• Midlertidige filer fjernes for å frigjøre plass.\n\nFor å gi tillatelser og tillate varsler igjen, åpne appen."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Dette skjer hvis en app ikke brukes på noen måneder:\n\n• Tillatelser fjernes for å beskytte dataene dine.\n• Midlertidige filer fjernes for å frigjøre plass.\n\nÅpne appen for å gi tillatelser igjen."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Sist åpnet for mer enn <xliff:g id="NUMBER">%s</xliff:g> måneder siden"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Dette skjer hvis en app ikke brukes i løpet av en måned:\n\n• Tillatelser fjernes for å beskytte dataene dine.\n• Midlertidige filer fjernes for å frigjøre plass.\n\nDu kan åpne appen for å gi tillatelser igjen."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Sist åpnet for over # måned siden}other{Sist åpnet for over # måneder siden}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Appen ble sist åpnet <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Sist åpnet <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Hvis du tillater administrering av alle filer, kan denne appen åpne, endre og slette alle filer i felles lagringsplass på denne enheten eller tilkoblede lagringsenheter. Appen kan åpne filer uten å spørre deg."</string>
diff --git a/PermissionController/res/values-ne/strings.xml b/PermissionController/res/values-ne/strings.xml
index ece3b01f0..752fb87e6 100644
--- a/PermissionController/res/values-ne/strings.xml
+++ b/PermissionController/res/values-ne/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> र अन्य <xliff:g id="NUMBER">%2$s</xliff:g> अनुमतिहरू हटाइए"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"प्रयोग नगरिएका एपहरू"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"कुनै एप केही महिनादेखि चलाइएको छैन भने:\n\n• तपाईंको डेटा सुरक्षित राख्न उक्त एपलाई दिइएका अनुमतिहरू रद्द गरिन्छन्\n• ब्याट्री बचत गर्न सूचनाहरू बन्द गरिन्छन्\n• ठाउँ खाली गर्न अस्थायी फाइलहरू हटाइन्छन्\n\nसो एपलाई फेरि ती अनुमतिहरू दिन र सो एपबाट सूचनाहरू प्राप्त गर्न सो एप खोल्नुहोस्।"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"कुनै एप केही महिनादेखि चलाइएको छैन भने:\n\n• तपाईंको डेटा सुरक्षित राख्न उक्त एपलाई दिइएका अनुमति रद्द गरिन्छन्\n• ठाउँ खाली गर्न अस्थायी फाइलहरू हटाइन्छन्\n\nउक्त एपलाई फेरि ती अनुमति दिन र सो एपबाट सूचनाहरू प्राप्त गर्न सो एप खोल्नुहोस्।"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"पछिल्लो पटक <xliff:g id="NUMBER">%s</xliff:g> महिनाभन्दा पहिले प्रयोग गरिएको"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"कुनै एप एक महिनादेखि चलाइएको छैन भने:\n\n• तपाईंको डेटा सुरक्षित राख्न उक्त एपलाई दिइएका अनुमति रद्द गरिन्छन्\n• ठाउँ खाली गर्न अस्थायी फाइलहरू हटाइन्छन्\n\nउक्त एपलाई फेरि ती अनुमति दिन र सो एपबाट सूचनाहरू प्राप्त गर्न सो एप खोल्नुहोस्।"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{पछिल्लो पटक # महिनाअघि खोलिएका}other{पछिल्लो पटक # महिनाभन्दा पहिले खोलिएका}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"यो एप पछिल्लो पटक <xliff:g id="DATE">%s</xliff:g> मा खोलिएको थियो"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"पछिल्लो पटक <xliff:g id="DATE">%s</xliff:g> मा खोलिएको थियो"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"तपाईंले सबै फाइलहरू व्यवस्थापन गर्ने अनुमति दिनुभयो भने यो एपले यस डिभाइस वा यस डिभाइससँग कनेक्ट गरिएका अन्य डिभाइसको साझा भण्डारणमा भएका सबै फाइलहरू प्रयोग गर्न, परिमार्जन गर्न र मेटाउन सक्छ। यो एपले तपाईंलाई जानकारी नदिइकन ‌फाइलहरू प्रयोग गर्न सक्छ।"</string>
@@ -451,9 +451,9 @@
<string name="assistant_record_audio_user_sensitive_summary" msgid="6482937591816401619">"आवाज सहायक सक्रिय गर्न माइक्रोफोनको प्रयोग गरिँदा स्टाटस बारमा आइकन देखाउनुहोस्"</string>
<string name="permgrouprequest_storage_isolated" msgid="4892154224026852295">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई आफ्नो डिभाइसका फोटो र मिडियामाथि पहुँच राख्न दिने हो?"</string>
<string name="permgrouprequest_contacts" msgid="8391550064551053695">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई कन्ट्याक्ट प्रयोग गर्न दिने हो?"</string>
- <string name="permgrouprequest_location" msgid="6990232580121067883">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;लाई यो डिभाइसको लोकेसन प्रयोग दिने हो?"</string>
+ <string name="permgrouprequest_location" msgid="6990232580121067883">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई यो डिभाइसको लोकेसन प्रयोग दिने हो?"</string>
<string name="permgrouprequestdetail_location" msgid="2635935335778429894">"तपाईंले एप प्रयोग गरिरहेका बेला मात्र उक्त एपले स्थानमाथि पहुँच राख्न सक्ने छ"</string>
- <string name="permgroupbackgroundrequest_location" msgid="1085680897265734809">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;लाई यो डिभाइसको लोकेसन प्रयोग दिने हो?"</string>
+ <string name="permgroupbackgroundrequest_location" msgid="1085680897265734809">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई यो डिभाइसको लोकेसन प्रयोग दिने हो?"</string>
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"तपाईं उक्त एप प्रयोग नगरिरहेका बेलामा लगायत जुनसुकै समयमा यो एपले तपाईंको स्थानमाथि पहुँच राख्न सक्छ। "<annotation id="link">"सेटिङमा गई अनुमति दिनुहोस्।"</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; का लागि स्थानसम्बन्धी पहुँच परिवर्तन गर्ने हो?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"तपाईं उक्त एप प्रयोग नगरिरहेका बेलामा लगायत जुनसुकै समयमा यो एपले तपाईंको स्थानमाथि पहुँच राख्न खोज्छ। "<annotation id="link">"सेटिङमा गई अनुमति दिनुहोस्।"</annotation></string>
diff --git a/PermissionController/res/values-nl-car/strings.xml b/PermissionController/res/values-nl-car/strings.xml
new file mode 100644
index 000000000..6e6167c95
--- /dev/null
+++ b/PermissionController/res/values-nl-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Als je een app een paar maanden niet gebruikt:\n\n• Er worden rechten verwijderd om je gegevens te beschermen.\n• Er worden tijdelijke bestanden verwijderd om ruimte vrij te maken."</string>
+</resources>
diff --git a/PermissionController/res/values-nl/strings.xml b/PermissionController/res/values-nl/strings.xml
index 2ec869034..31eed6b4a 100644
--- a/PermissionController/res/values-nl/strings.xml
+++ b/PermissionController/res/values-nl/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> en <xliff:g id="NUMBER">%2$s</xliff:g> andere rechten zijn verwijderd"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Niet-gebruikte apps"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Als je een app een paar maanden niet gebruikt, gebeurt het volgende:\n\n• De rechten worden ingetrokken om je gegevens te beschermen.\n• Meldingen worden stopgezet om de batterij te sparen.\n• Tijdelijke bestanden worden verwijderd om ruimte vrij te maken.\n\nOpen de app als je de rechten en meldingen weer wilt toestaan."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Als je een app een paar maanden niet gebruikt, gebeurt het volgende:\n\n• De rechten worden verwijderd om je gegevens te beschermen.\n• Tijdelijke bestanden worden verwijderd om ruimte vrij te maken.\n\nOpen de app als je de rechten weer wilt toestaan."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Meer dan <xliff:g id="NUMBER">%s</xliff:g> maanden geleden voor het laatst geopend"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Als je een app een maand niet gebruikt, gebeurt het volgende:\n\n• De rechten worden verwijderd om je gegevens te beschermen.\n• Tijdelijke bestanden worden verwijderd om ruimte vrij te maken.\n\nOpen de app als je de rechten weer wilt toestaan."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Meer dan # maand geleden voor het laatst geopend}other{Meer dan # maanden geleden voor het laatst geopend}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App laatst geopend op <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Laatst geopend op <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Als je het beheer van alle bestanden toestaat, kan deze app alle bestanden in de algemene opslag van dit apparaat of gekoppelde opslagapparaten openen, bewerken en verwijderen. De app kan toegang tot bestanden krijgen zonder je dat te vragen."</string>
diff --git a/PermissionController/res/values-or/strings.xml b/PermissionController/res/values-or/strings.xml
index 2a84f4b15..e68734332 100644
--- a/PermissionController/res/values-or/strings.xml
+++ b/PermissionController/res/values-or/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ଏବଂ ଅନ୍ୟ <xliff:g id="NUMBER">%2$s</xliff:g>ଟି ଅନୁମତି କାଢ଼ି ଦିଆଯାଇଛି"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"ଅବ୍ୟବହୃତ ଆପଗୁଡ଼ିକ"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"ଯଦି ଏକ ଆପ୍ କିଛି ମାସ ପାଇଁ ଅବ୍ୟବହୃତ ଅଛି, ତେବେ:\n\n• ଆପଣଙ୍କ ଡାଟାକୁ ସୁରକ୍ଷା ଦେବା ପାଇଁ ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯାଏ\n• ବ୍ୟାଟେରୀ ସେଭ୍ କରିବାକୁ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ବନ୍ଦ କରାଯାଏ\n• ସ୍ପେସ୍ ଖାଲି କରିବା ପାଇଁ ଅସ୍ଥାୟୀ ଫାଇଲଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯାଏ\n\nଅନୁମତି ଏବଂ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ପୁଣି ଅନୁମତି ଦେବା ପାଇଁ, ଆପ୍ ଖୋଲନ୍ତୁ।"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"ଯଦି କୌଣସି ଆପକୁ କିଛି ମାସ ପାଇଁ ବ୍ୟବହାର କରାଯାଇନାହିଁ, ତେବେ:\n\n• ଆପଣଙ୍କ ଡାଟାକୁ ସୁରକ୍ଷିତ ରଖିବା ପାଇଁ ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯାଏ\n• ସ୍ପେସ ଖାଲି କରିବା ପାଇଁ ଅସ୍ଥାୟୀ ଫାଇଲଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯାଏ\n\n• ପୁଣି ଅନୁମତିଗୁଡ଼ିକ ଦେବା ପାଇଁ, ଆପକୁ ଖୋଲନ୍ତୁ।"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"ଗତଥର <xliff:g id="NUMBER">%s</xliff:g> ମାସ ପୂର୍ବେ ଖୋଲାଯାଇଥିଲା"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"ଯଦି କୌଣସି ଆପକୁ ଏକ ମାସ ପାଇଁ ବ୍ୟବହାର କରାଯାଇନାହିଁ, ତେବେ:\n\n• ଆପଣଙ୍କ ଡାଟାକୁ ସୁରକ୍ଷିତ ରଖିବା ପାଇଁ ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯାଏ\n• ସ୍ପେସ ଖାଲି କରିବା ପାଇଁ ଅସ୍ଥାୟୀ ଫାଇଲଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯାଏ\n\nପୁଣି ଅନୁମତିଗୁଡ଼ିକ ଦେବା ପାଇଁ, ଆପକୁ ଖୋଲନ୍ତୁ।"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{# ମାସରୁ ଅଧିକ ସମୟ ପୂର୍ବେ ଖୋଲାଯାଇଥିଲା}other{# ମାସରୁ ଅଧିକ ସମୟ ପୂର୍ବେ ଖୋଲାଯାଇଥିଲା}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ଗତ ଥର <xliff:g id="DATE">%s</xliff:g>ରେ ଆପକୁ ଖୋଲାଯାଇଥିଲା"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"ଗତ ଥର <xliff:g id="DATE">%s</xliff:g>ରେ ଖୋଲାଯାଇଥିଲା"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"ଯଦି ଆପଣ ସମସ୍ତ ଫାଇଲର ପରିଚାଳନାକୁ ଅନୁମତି ଦିଅନ୍ତି, ତେବେ ଏହି ଆପ୍ ଏ ଡିଭାଇସ୍ କିମ୍ବା ସଂଯୋଗ ହୋଇଥିବା ଷ୍ଟୋରେଜ୍ ଡିଭାଇସର ସାଧାରଣ ଷ୍ଟୋରେଜରେ ଥିବା ଯେ କୌଣସି ଫାଇଲକୁ ଆକ୍ସେସ୍, ପରିବର୍ତ୍ତନ ଏବଂ ଡିଲିଟ୍ କରିପାରିବ। ଆପଟି ଆପଣଙ୍କୁ ନ ପଚାରି ଫାଇଲଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିପାରେ।"</string>
diff --git a/PermissionController/res/values-pa/strings.xml b/PermissionController/res/values-pa/strings.xml
index 60318c9a2..8664aa645 100644
--- a/PermissionController/res/values-pa/strings.xml
+++ b/PermissionController/res/values-pa/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ਅਤੇ <xliff:g id="NUMBER">%2$s</xliff:g> ਹੋਰ ਇਜਾਜ਼ਤਾਂ ਹਟਾਈਆਂ ਗਈਆਂ"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"ਅਣਵਰਤੀਆਂ ਐਪਾਂ"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"ਜੇ ਕਿਸੇ ਐਪ ਨੂੰ ਕੁਝ ਮਹੀਨਿਆਂ ਤੱਕ ਵਰਤਿਆ ਨਹੀਂ ਜਾਂਦਾ ਹੈ, ਤਾਂ:\n\n• ਤੁਹਾਡੇ ਡਾਟੇ ਦੀ ਸੁਰੱਖਿਆ ਕਰਨ ਲਈ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ\n• ਬੈਟਰੀ ਬਚਾਉਣ ਲਈ ਸੂਚਨਾਵਾਂ ਬੰਦ ਕਰ ਦਿੱਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ\n• ਜਗ੍ਹਾ ਖਾਲੀ ਕਰਨ ਲਈ ਅਸਥਾਈ ਫ਼ਾਈਲਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ\n\nਦੁਬਾਰਾ ਇਜਾਜ਼ਤਾਂ ਦੇਣ ਅਤੇ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਐਪ ਖੋਲ੍ਹੋ।"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"ਜੇ ਕਿਸੇ ਐਪ ਨੂੰ ਕੁਝ ਮਹੀਨਿਆਂ ਤੱਕ ਵਰਤਿਆ ਨਹੀਂ ਜਾਂਦਾ ਹੈ, ਤਾਂ:\n\n• ਤੁਹਾਡੇ ਡਾਟੇ ਦੀ ਸੁਰੱਖਿਆ ਕਰਨ ਲਈ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ\n• ਜਗ੍ਹਾ ਖਾਲੀ ਕਰਨ ਲਈ ਅਸਥਾਈ ਫ਼ਾਈਲਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ\n\nਦੁਬਾਰਾ ਇਜਾਜ਼ਤਾਂ ਦੇਣ ਲਈ, ਐਪ ਖੋਲ੍ਹੋ।"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"ਪਿਛਲੀ ਵਾਰ <xliff:g id="NUMBER">%s</xliff:g> ਤੋਂ ਵੱਧ ਮਹੀਨੇ ਪਹਿਲਾਂ ਖੋਲ੍ਹੀਆਂ ਗਈਆਂ"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"ਜੇ ਕਿਸੇ ਐਪ ਨੂੰ ਇੱਕ ਮਹੀਨੇ ਤੱਕ ਨਹੀਂ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ:\n\n• ਤੁਹਾਡੇ ਡਾਟੇ ਦੀ ਸੁਰੱਖਿਆ ਕਰਨ ਲਈ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ\n• ਜਗ੍ਹਾ ਖਾਲੀ ਕਰਨ ਲਈ ਅਸਥਾਈ ਫ਼ਾਈਲਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ\n\nਇਜਾਜ਼ਤਾਂ ਦੀ ਦੁਬਾਰਾ ਆਗਿਆ ਦੇਣ ਲਈ, ਐਪ ਨੂੰ ਖੋਲ੍ਹੋ।"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{ਪਿਛਲੀ ਵਾਰ # ਮਹੀਨੇ ਤੋਂ ਵੱਧ ਪਹਿਲਾਂ ਖੋਲ੍ਹੀਆਂ ਗਈਆਂ}one{ਪਿਛਲੀ ਵਾਰ # ਮਹੀਨੇ ਤੋਂ ਵੱਧ ਪਹਿਲਾਂ ਖੋਲ੍ਹੀਆਂ ਗਈਆਂ}other{ਪਿਛਲੀ ਵਾਰ # ਮਹੀਨਿਆਂ ਤੋਂ ਵੱਧ ਪਹਿਲਾਂ ਖੋਲ੍ਹੀਆਂ ਗਈਆਂ}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ਐਪ ਨੂੰ ਆਖਰੀ ਵਾਰ <xliff:g id="DATE">%s</xliff:g> ਨੂੰ ਖੋਲ੍ਹਿਆ ਗਿਆ"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"ਆਖਰੀ ਵਾਰ <xliff:g id="DATE">%s</xliff:g> ਨੂੰ ਖੋਲ੍ਹਿਆ ਗਿਆ"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"ਜੇ ਤੁਸੀਂ ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦਿੰਦੇ ਹੋ, ਤਾਂ ਇਹ ਐਪ ਇਸ ਡੀਵਾਈਸ ਜਾਂ ਕਨੈਕਟ ਕੀਤੇ ਸਟੋਰੇਜ ਡੀਵਾਈਸਾਂ ਦੀ ਸਾਂਝੀ ਸਟੋਰੇਜ ਵਿੱਚ ਕਿਸੇ ਵੀ ਫ਼ਾਈਲ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀ, ਉਸ ਵਿੱਚ ਸੋਧ ਕਰ ਸਕਦੀ ਅਤੇ ਉਸ ਨੂੰ ਮਿਟਾ ਸਕਦੀ ਹੈ। ਐਪ ਤੁਹਾਨੂੰ ਪੁੱਛੇ ਬਿਨਾਂ ਫ਼ਾਈਲਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ।"</string>
diff --git a/PermissionController/res/values-pl-car/strings.xml b/PermissionController/res/values-pl-car/strings.xml
new file mode 100644
index 000000000..b3c024d04
--- /dev/null
+++ b/PermissionController/res/values-pl-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Jeśli aplikacja jest nieużywana przez kilka miesięcy:\n\n• aby chronić Twoje dane, odbieramy jej uprawnienia;\n• aby zwolnić miejsce, usuwamy pliki tymczasowe"</string>
+</resources>
diff --git a/PermissionController/res/values-pl/strings.xml b/PermissionController/res/values-pl/strings.xml
index 07a85de06..0a9f7cb6f 100644
--- a/PermissionController/res/values-pl/strings.xml
+++ b/PermissionController/res/values-pl/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Usunięto uprawnienia: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> oraz kilka innych (<xliff:g id="NUMBER">%2$s</xliff:g>)"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Nieużywane aplikacje"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Jeśli aplikacja jest nieużywana od kilku miesięcy:\n\n• aby chronić Twoje dane, odbieramy jej uprawnienia;\n• zatrzymujemy powiadomienia, aby oszczędzać baterię;\n• usuwamy pliki tymczasowe, aby zwolnić miejsce.\n\nAby ponownie przyznać uprawnienia i zezwolić na powiadomienia, otwórz aplikację."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Jeśli aplikacja jest nieużywana od kilku miesięcy:\n\n• aby chronić Twoje dane, odbieramy jej uprawnienia;\n• usuwamy pliki tymczasowe, aby zwolnić miejsce.\n\nAby ponownie przyznać uprawnienia, otwórz aplikację."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Ostatnio otwarto ponad <xliff:g id="NUMBER">%s</xliff:g> mies. temu"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Jeśli aplikacja jest nieużywana przez miesiąc:\n\n• aby chronić Twoje dane, odbieramy jej uprawnienia;\n• usuwamy pliki tymczasowe, aby zwolnić miejsce.\n\nAby ponownie przyznać uprawnienia, otwórz aplikację."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Ostatnio otwarto ponad miesiąc temu}few{Ostatnio otwarto ponad # miesiące temu}many{Ostatnio otwarto ponad # miesięcy temu}other{Ostatnio otwarto ponad # miesiąca temu}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikacja została ostatnio otwarta <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Ostatnio otwarto <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Jeśli pozwolisz zarządzać wszystkimi plikami, ta aplikacja będzie mogła odczytywać, modyfikować i usuwać dowolne pliki na tym urządzeniu lub zewnętrznych urządzeniach do przechowywania danych. Ta aplikacja może bez pytania uzyskiwać dostęp do plików."</string>
diff --git a/PermissionController/res/values-pt-car/strings.xml b/PermissionController/res/values-pt-car/strings.xml
new file mode 100644
index 000000000..7970522a5
--- /dev/null
+++ b/PermissionController/res/values-pt-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Quando um app fica sem uso por alguns meses:\n\n• As permissões são removidas para proteger seus dados.\n• Os arquivos temporários são removidos para liberar espaço."</string>
+</resources>
diff --git a/PermissionController/res/values-pt-rBR-car/strings.xml b/PermissionController/res/values-pt-rBR-car/strings.xml
new file mode 100644
index 000000000..7970522a5
--- /dev/null
+++ b/PermissionController/res/values-pt-rBR-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Quando um app fica sem uso por alguns meses:\n\n• As permissões são removidas para proteger seus dados.\n• Os arquivos temporários são removidos para liberar espaço."</string>
+</resources>
diff --git a/PermissionController/res/values-pt-rBR-v33/strings.xml b/PermissionController/res/values-pt-rBR-v33/strings.xml
index f8cd3b632..e4252fe1f 100644
--- a/PermissionController/res/values-pt-rBR-v33/strings.xml
+++ b/PermissionController/res/values-pt-rBR-v33/strings.xml
@@ -40,7 +40,7 @@
<string name="safety_center_qs_privacy_control" msgid="1160682635058529673">"Chave. <xliff:g id="PRIVACY_CONTROL_TITLE">%1$s</xliff:g>. <xliff:g id="PRIVACY_CONTROL_STATUS">%2$s</xliff:g>"</string>
<string name="safety_center_qs_toggle_action" msgid="5920465736488119255">"Alternar"</string>
<string name="safety_center_qs_open_action" msgid="2760200829912423728">"Abrir"</string>
- <string name="safety_center_review_settings_button" msgid="938981137942443930">"Revisar configurações"</string>
+ <string name="safety_center_review_settings_button" msgid="938981137942443930">"Revisar configura&amp;#173;ções"</string>
<string name="safety_center_gear_label" msgid="5175877094379694098">"Configurações"</string>
<string name="safety_center_info_label" msgid="8993181584061825412">"Informações"</string>
</resources>
diff --git a/PermissionController/res/values-pt-rBR/strings.xml b/PermissionController/res/values-pt-rBR/strings.xml
index 5082bb9bc..ea50188b0 100644
--- a/PermissionController/res/values-pt-rBR/strings.xml
+++ b/PermissionController/res/values-pt-rBR/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> e mais <xliff:g id="NUMBER">%2$s</xliff:g> permissões removidas"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Apps não usados"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Se um app fica sem uso por alguns meses:\n\n• as permissões são removidas para proteger seus dados;\n• as notificações são interrompidas para economizar bateria;\n• os arquivos temporários são removidos para liberar espaço.\n\nPara retomar as permissões e notificações, abra o app."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Se um app ficar sem uso por alguns meses:\n\n• as permissões serão removidas para proteger seus dados;\n• os arquivos temporários serão removidos para liberar espaço.\n\nPara dar as permissões novamente, abra o app."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Abertos pela última vez há mais de <xliff:g id="NUMBER">%s</xliff:g> meses"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Quando um app fica sem uso por um mês:\n\n• As permissões são removidas para proteger seus dados.\n• Os arquivos temporários são removidos para liberar espaço.\n\nSe quiser conceder as permissões novamente, abra o app."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Usado pela última vez há mais de # mês}one{Usado pela última vez há mais de # mês}many{Usado pela última vez há mais de # de meses}other{Usado pela última vez há mais de # meses}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App aberto pela última vez em <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Aberto pela última vez em <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Se você permitir o gerenciamento de todos os arquivos, o app poderá acessar, modificar e excluir qualquer arquivo no armazenamento comum do dispositivo ou no armazenamento de dispositivos conectados. O app poderá acessar arquivos sem pedir autorização."</string>
diff --git a/PermissionController/res/values-pt-rPT/strings.xml b/PermissionController/res/values-pt-rPT/strings.xml
index 484abb6b9..1cd9c4626 100644
--- a/PermissionController/res/values-pt-rPT/strings.xml
+++ b/PermissionController/res/values-pt-rPT/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Autorização de <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> e mais <xliff:g id="NUMBER">%2$s</xliff:g> autorizações removidas."</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Apps não usadas"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Se uma app não for utilizada durante alguns meses:\n\n• As autorizações são removidas para proteger os seus dados\n• As notificações são interrompidas para poupar bateria\n• Os ficheiros temporários são removidos para libertar espaço\n\nPara voltar a permitir autorizações e notificações, abra a app."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Se uma app não for usada durante alguns meses:\n\n• As autorizações são removidas para proteger os seus dados\n• Os ficheiros temporários são removidos para libertar espaço\n\nPara voltar a permitir autorizações, abra a app."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Abertas pela última vez há mais de <xliff:g id="NUMBER">%s</xliff:g> meses"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Se uma app não for usada durante um mês:\n\n• As autorizações são removidas para proteger os seus dados\n• Os ficheiros temporários são removidos para libertar espaço\n\nPara voltar a permitir autorizações, abra a app."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Abertas pela última vez há mais de # mês}many{Abertas pela última vez há mais de # de meses}other{Abertas pela última vez há mais de # meses}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"A app foi aberta pela última vez a <xliff:g id="DATE">%s</xliff:g>."</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Último acesso a <xliff:g id="DATE">%s</xliff:g>."</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Se permitir a gestão de todos os ficheiros, esta app pode aceder, modificar e eliminar todos os ficheiros no armazenamento comum neste dispositivo ou nos dispositivos de armazenamento associados. A app pode aceder aos ficheiros sem lhe pedir autorização."</string>
diff --git a/PermissionController/res/values-pt-v33/strings.xml b/PermissionController/res/values-pt-v33/strings.xml
index f8cd3b632..e4252fe1f 100644
--- a/PermissionController/res/values-pt-v33/strings.xml
+++ b/PermissionController/res/values-pt-v33/strings.xml
@@ -40,7 +40,7 @@
<string name="safety_center_qs_privacy_control" msgid="1160682635058529673">"Chave. <xliff:g id="PRIVACY_CONTROL_TITLE">%1$s</xliff:g>. <xliff:g id="PRIVACY_CONTROL_STATUS">%2$s</xliff:g>"</string>
<string name="safety_center_qs_toggle_action" msgid="5920465736488119255">"Alternar"</string>
<string name="safety_center_qs_open_action" msgid="2760200829912423728">"Abrir"</string>
- <string name="safety_center_review_settings_button" msgid="938981137942443930">"Revisar configurações"</string>
+ <string name="safety_center_review_settings_button" msgid="938981137942443930">"Revisar configura&amp;#173;ções"</string>
<string name="safety_center_gear_label" msgid="5175877094379694098">"Configurações"</string>
<string name="safety_center_info_label" msgid="8993181584061825412">"Informações"</string>
</resources>
diff --git a/PermissionController/res/values-pt/strings.xml b/PermissionController/res/values-pt/strings.xml
index 5082bb9bc..ea50188b0 100644
--- a/PermissionController/res/values-pt/strings.xml
+++ b/PermissionController/res/values-pt/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> e mais <xliff:g id="NUMBER">%2$s</xliff:g> permissões removidas"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Apps não usados"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Se um app fica sem uso por alguns meses:\n\n• as permissões são removidas para proteger seus dados;\n• as notificações são interrompidas para economizar bateria;\n• os arquivos temporários são removidos para liberar espaço.\n\nPara retomar as permissões e notificações, abra o app."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Se um app ficar sem uso por alguns meses:\n\n• as permissões serão removidas para proteger seus dados;\n• os arquivos temporários serão removidos para liberar espaço.\n\nPara dar as permissões novamente, abra o app."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Abertos pela última vez há mais de <xliff:g id="NUMBER">%s</xliff:g> meses"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Quando um app fica sem uso por um mês:\n\n• As permissões são removidas para proteger seus dados.\n• Os arquivos temporários são removidos para liberar espaço.\n\nSe quiser conceder as permissões novamente, abra o app."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Usado pela última vez há mais de # mês}one{Usado pela última vez há mais de # mês}many{Usado pela última vez há mais de # de meses}other{Usado pela última vez há mais de # meses}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App aberto pela última vez em <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Aberto pela última vez em <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Se você permitir o gerenciamento de todos os arquivos, o app poderá acessar, modificar e excluir qualquer arquivo no armazenamento comum do dispositivo ou no armazenamento de dispositivos conectados. O app poderá acessar arquivos sem pedir autorização."</string>
diff --git a/PermissionController/res/values-ro-car/strings.xml b/PermissionController/res/values-ro-car/strings.xml
new file mode 100644
index 000000000..9f4166207
--- /dev/null
+++ b/PermissionController/res/values-ro-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Dacă o aplicație nu este folosită timp de câteva luni:\n\n• permisiunile sunt eliminate pentru a-ți proteja datele;\n• fișierele temporare sunt eliminate pentru a elibera spațiu."</string>
+</resources>
diff --git a/PermissionController/res/values-ro/strings.xml b/PermissionController/res/values-ro/strings.xml
index 54d1b820e..6d8c956f7 100644
--- a/PermissionController/res/values-ro/strings.xml
+++ b/PermissionController/res/values-ro/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Permisiunea <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> și încă <xliff:g id="NUMBER">%2$s</xliff:g> permisiuni au fost eliminate"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Aplicații nefolosite"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Dacă o aplicație nu este folosită timp de câteva luni:\n\n• permisiunile sunt eliminate pentru a-ți proteja datele;\n• notificările sunt dezactivate pentru a economisi baterie;\n• fișierele temporare sunt eliminate pentru a elibera spațiu.\n\nPentru a acorda permisiuni și a permite notificări, deschide aplicația."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Dacă o aplicație nu e folosită timp de câteva luni:\n\n• permisiunile sunt eliminate pentru a-ți proteja datele;\n• fișierele temporare sunt eliminate pentru a elibera spațiu.\n\nPentru a acorda permisiuni din nou, deschide aplicația."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Data ultimei deschideri: cu peste <xliff:g id="NUMBER">%s</xliff:g> luni în urmă"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Dacă o aplicație nu este folosită timp o lună:\n\n• permisiunile sunt eliminate pentru a-ți proteja datele;\n• fișierele temporare sunt eliminate pentru a elibera spațiu.\n\nPentru a acorda permisiuni din nou, deschide aplicația."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Data ultimei deschideri: cu peste # lună în urmă}few{Data ultimei deschideri: cu peste # luni în urmă}other{Data ultimei deschideri: cu peste # de luni în urmă}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplicația a fost deschisă ultima dată pe <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Data ultimei deschideri: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Dacă permiți gestionarea tuturor fișierelor, aplicația poate să acceseze, să modifice și să șteargă orice fișiere din spațiul de stocare comun de pe acest dispozitiv sau de pe dispozitivele de stocare conectate. Aplicația poate accesa fișierele fără a cere permisiunea."</string>
diff --git a/PermissionController/res/values-ru-car/strings.xml b/PermissionController/res/values-ru-car/strings.xml
new file mode 100644
index 000000000..c482317cc
--- /dev/null
+++ b/PermissionController/res/values-ru-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Если вы не пользовались приложением несколько месяцев:\n\n• разрешения будут отключены для защиты ваших данных;\n• временные файлы будут удалены, чтобы освободить место."</string>
+</resources>
diff --git a/PermissionController/res/values-ru/strings.xml b/PermissionController/res/values-ru/strings.xml
index cf107f854..bbdb01bb5 100644
--- a/PermissionController/res/values-ru/strings.xml
+++ b/PermissionController/res/values-ru/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Отозвано разрешение \"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\" и ещё <xliff:g id="NUMBER">%2$s</xliff:g>."</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Неиспользуемые приложения"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Если вы не пользовались приложением несколько месяцев:\n\n• разрешения будут отозваны для защиты ваших данных;\n• уведомления будут отключены для экономии заряда батареи;\n• временные файлы будут удалены, чтобы освободить место.\n\nЧтобы заново предоставить разрешения и включить уведомления, откройте приложение."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Если вы не пользовались приложением несколько месяцев:\n\n• разрешения будут отключены для защиты ваших данных;\n• временные файлы будут удалены, чтобы освободить место.\n\nЧтобы заново предоставить разрешения, откройте приложение."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Использовались более <xliff:g id="NUMBER">%s</xliff:g> мес. назад"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Если вы не пользовались приложением в течение месяца:\n\n• разрешения будут отключены для защиты ваших данных;\n• временные файлы будут удалены, чтобы освободить место.\n\nЧтобы заново предоставить разрешения, откройте приложение."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Использовались более # месяца назад}one{Использовались более # месяца назад}few{Использовались более # месяцев назад}many{Использовались более # месяцев назад}other{Использовались более # месяца назад}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Вы открывали это приложение <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Использовалось <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Если вы разрешите приложению управлять всеми файлами, оно сможет просматривать, изменять и удалять любые файлы в общем хранилище на этом устройстве, а также на подключенных запоминающих устройствах. При этом оно сможет получать доступ к файлам без вашего ведома."</string>
diff --git a/PermissionController/res/values-si-car/strings.xml b/PermissionController/res/values-si-car/strings.xml
new file mode 100644
index 000000000..e67d034cf
--- /dev/null
+++ b/PermissionController/res/values-si-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"යෙදුමක් මාස කිහිපයක් භාවිතා නොකරන්නේ නම්:\n\n• ඔබේ දත්ත ආරක්ෂා කිරීමට අවසර ඉවත් කරනු ලැබේ\n• ඉඩ නිදහස් කිරීමට තාවකාලික ගොනු ඉවත් කරනු ලැබේ"</string>
+</resources>
diff --git a/PermissionController/res/values-si/strings.xml b/PermissionController/res/values-si/strings.xml
index 5859b9652..13a23ba3b 100644
--- a/PermissionController/res/values-si/strings.xml
+++ b/PermissionController/res/values-si/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> සහ තවත් අවසර <xliff:g id="NUMBER">%2$s</xliff:g>ක් ඉවත් කර ඇත"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"භාවිත නොකළ යෙදුම්"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"යෙදුමක් මාස කිහිපයක් භාවිත නොකළහොත්:\n\n• ඔබගේ දත්ත ආරක්ෂා කිරීමට අවසර ඉවත් කෙරේ\n• බැටරිය සුරැකීමට දැනුම්දීම් නවත්වනු ඇත\n• ඉඩ නිදහස් කිරීමට තාවකාලික ගොනු ඉවත් කෙරේ\n\nනැවත අවසර සහ දැනුම්දීම්වලට ඉඩ දීමට, යෙදුම විවෘත කරන්න."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"යෙදුමක් මාස කිහිපයක් භාවිත නොකළහොත්:\n\n• ඔබගේ දත්ත ආරක්ෂා කිරීමට අවසර ඉවත් කෙරේ\n• ඉඩ නිදහස් කිරීමට තාවකාලික ගොනු ඉවත් කෙරේ\n\nනැවත අවසරවලට ඉඩ දීමට, යෙදුම විවෘත කරන්න."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"අවසන් වරට විවෘත කළේ මාස <xliff:g id="NUMBER">%s</xliff:g>කට පෙරය"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"යෙදුමක් මාසයක් තිස්සේ භාවිතා නොකළහොත්:\n\n• ඔබේ දත්ත ආරක්ෂා කිරීමට අවසර ඉවත් කරනු ලැබේ\n• ඉඩ නිදහස් කිරීමට තාවකාලික ගොනු ඉවත් කරනු ලැබේ\n\nනැවත අවසරවලට ඉඩ දීම සඳහා, යෙදුම විවෘත කරන්න."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{අවසන් වරට විවෘත කළේ මාස #කට පෙරයි}one{අවසන් වරට විවෘත කළේ මාස #කට පෙරයි}other{අවසන් වරට විවෘත කළේ මාස #කට පෙරයි}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"යෙදුම අවසන් වරට විවෘත කළේ <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"අවසාන විවෘත කළේ <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"ඔබ සියලු ගොනු කළමනාකරණය කිරීමට ඉඩ දෙන්නේ නම්, මෙම යෙදුමට මෙම උපාංගයේ හෝ සම්බන්ධිත ගබඩා උපාංගවල පොදු ගබඩාවේ ඇති ඕනෑම ගොනුවක් වෙත ප්‍රවේශ වීමට, වෙනස් කිරීමට සහ මැකීටම හැකිය. යෙදුම ඔබෙන් විමසීමෙන් තොරව ගොනු වෙත ප්‍රවේශ විය හැකිය."</string>
diff --git a/PermissionController/res/values-sk/strings.xml b/PermissionController/res/values-sk/strings.xml
index bf5caf0a6..28c2022d4 100644
--- a/PermissionController/res/values-sk/strings.xml
+++ b/PermissionController/res/values-sk/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Bolo odstránené povolenie <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> a ďalšie (<xliff:g id="NUMBER">%2$s</xliff:g>)"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Nepoužívané aplikácie"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Ak aplikácia nebola používaná niekoľko mesiacov:\n\n• povolenia budú z dôvodu ochrany vašich údajov odstránené,\n• upozornenia prestanú fungovať, aby sa šetrila batéria,\n• dočasné súbory budú odstránené, aby sa uvoľnilo miesto.\n\nAk budete chcieť povolenia a upozornenia znova aktivovať, otvorte aplikáciu."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Ak aplikácia nebola používaná niekoľko mesiacov:\n\n• povolenia budú z dôvodu ochrany vašich údajov odstránené;\n• dočasné súbory budú odstránené, aby sa uvoľnilo miesto.\n\nAk budete chcieť povolenia znova udeliť, otvorte aplikáciu."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Naposledy otvorené pred viac ako <xliff:g id="NUMBER">%s</xliff:g> mesiacmi"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Ak aplikácia nebola použitá mesiac:\n\n• povolenia budú z dôvodu ochrany vašich údajov odstránené;\n• dočasné súbory budú odstránené, aby sa uvoľnilo miesto.\n\nAk budete chcieť povolenia znova udeliť, otvorte aplikáciu."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Naposledy otvorené pred viac než # mesiacom}few{Naposledy otvorené pred viac než # mesiacmi}many{Naposledy otvorené pred viac než # mesiaca}other{Naposledy otvorené pred viac než # mesiacmi}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikácia bola naposledy otvorená <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Naposledy otvorená <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Ak povolíte správu všetkých súborov, táto aplikácia môže používať, upravovať a odstraňovať všetky súbory v spoločnom úložisku tohto zariadenia alebo pripojených ukladacích zariadeniach. Súbory môže používať bez toho, aby sa vás na to spýtala."</string>
diff --git a/PermissionController/res/values-sl-car/strings.xml b/PermissionController/res/values-sl-car/strings.xml
new file mode 100644
index 000000000..d8220f984
--- /dev/null
+++ b/PermissionController/res/values-sl-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Po nekaj mesecih neuporabe aplikacije se zgodi to:\n\n• Dovoljenja se odstranijo, da se zaščitijo vaši podatki.\n• Začasne datoteke se odstranijo, da se sprosti prostor."</string>
+</resources>
diff --git a/PermissionController/res/values-sl/strings.xml b/PermissionController/res/values-sl/strings.xml
index fb8fc505d..94737ad6d 100644
--- a/PermissionController/res/values-sl/strings.xml
+++ b/PermissionController/res/values-sl/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Odstranjeno je bilo dovoljenje <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> in še toliko drugih: <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Neuporabljene aplikacije"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Po nekaj mesecih neuporabe aplikacije se zgodi to:\n\n• Dovoljenja se odstranijo, da se zaščiti vaša zasebnost.\n• Obvestila se zaustavijo, da varčujete z energijo baterije.\n• Začasne datoteke se odstranijo, da se sprosti prostor.\n\nČe želite znova omogočiti dovoljenja in obvestila, odprite aplikacijo."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Po nekaj mesecih neuporabe aplikacije se zgodi to:\n\n• Dovoljenja se odstranijo, da se zaščiti vaša zasebnost.\n• Začasne datoteke se odstranijo, da se sprosti prostor.\n\nČe želite znova omogočiti dovoljenja, odprite aplikacijo."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Nazadnje odprto pred več kot toliko meseci: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Po enem mesecu neuporabe aplikacije se zgodi to:\n\n• Dovoljenja se odstranijo, da se zaščitijo vaši podatki.\n• Začasne datoteke se odstranijo, da se sprosti prostor.\n\nČe želite znova omogočiti dovoljenja, odprite aplikacijo."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Nazadnje odprto pred več kot # mesecem}one{Nazadnje odprto pred več kot # mesecem}two{Nazadnje odprto pred več kot # mesecema}few{Nazadnje odprto pred več kot # meseci}other{Nazadnje odprto pred več kot # meseci}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikacija je bila nazadnje odprta <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Nazadnje odprto: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Če dovolite upravljanje vseh datotek, lahko ta aplikacija dostopa do vseh datotek, ki so v skupni shrambi v tej napravi ali povezanih napravah za shranjevanje, ter jih ureja in briše. Aplikacija lahko do datotek dostopa brez vaše vednosti."</string>
diff --git a/PermissionController/res/values-sq-car/strings.xml b/PermissionController/res/values-sq-car/strings.xml
new file mode 100644
index 000000000..c908ec42a
--- /dev/null
+++ b/PermissionController/res/values-sq-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Nëse një aplikacion nuk përdoret për disa muaj:\n\n• Lejet hiqen për të mbrojtur të dhënat e tua\n• Skedarët e përkohshëm hiqen për të liruar hapësirën"</string>
+</resources>
diff --git a/PermissionController/res/values-sq/strings.xml b/PermissionController/res/values-sq/strings.xml
index 3b6e72247..bf7b5d4d3 100644
--- a/PermissionController/res/values-sq/strings.xml
+++ b/PermissionController/res/values-sq/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> dhe <xliff:g id="NUMBER">%2$s</xliff:g> leje të tjera janë hequr"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Aplikacionet e papërdorura"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Nëse një aplikacion nuk përdoret për disa muaj:\n\n• Lejet hiqen për të mbrojtur të dhënat e tua\n• Njoftimet ndalohen për të kursyer baterinë\n• Skedarët e përkohshëm hiqen për të liruar hapësirën\n\nPër të lejuar përsëri lejet dhe njoftimet, hap aplikacionin."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Nëse një aplikacion nuk përdoret për disa muaj:\n\n• Lejet hiqen për të mbrojtur të dhënat e tua\n• Skedarët e përkohshëm hiqen për të liruar hapësirën\n\nPër të lejuar përsëri lejet, hap aplikacionin."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Hapur për herë të fundit më shumë se <xliff:g id="NUMBER">%s</xliff:g> muaj më parë"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Nëse një aplikacion nuk përdoret për një muaj:\n\n• Lejet hiqen për të mbrojtur të dhënat e tua\n• Skedarët e përkohshëm hiqen për të liruar hapësirën\n\nPër të lejuar përsëri lejet, hap aplikacionin."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Hapur për herë të fundit më shumë se # muaj më parë}other{Hapur për herë të fundit më shumë se # muaj më parë}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikacioni është hapur së fundi më <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Hapur së fundi më <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Nëse lejon menaxhimin e të gjithë skedarëve, ky aplikacion mund të ketë qasje, modifikojë dhe fshijë çdo skedar në hapësirën ruajtëse të përbashkët në këtë pajisje ose pajisjet me hapësirë ruajtëse të lidhur. Aplikacioni mund të ketë qasje te skedarët pa të pyetur."</string>
diff --git a/PermissionController/res/values-sr/strings.xml b/PermissionController/res/values-sr/strings.xml
index 21859c0e6..5ba6931d8 100644
--- a/PermissionController/res/values-sr/strings.xml
+++ b/PermissionController/res/values-sr/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Уклоњено: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> и још <xliff:g id="NUMBER">%2$s</xliff:g> дозволе"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Апликације које се не користе"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Ако не користите апликацију неколико месеци:\n\n• дозволе се уклањају да би се заштитили подаци\n• обавештења се заустављају да би се штедела батерија\n• привремени фајлови се уклањају да би се ослободио простор\n\nДа бисте поново омогућили дозволе и обавештења, отворите апликацију."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Ако не користите апликацију неколико месеци:\n\n• дозволе се уклањају да би се заштитили подаци\n• привремени фајлови се уклањају да би се ослободио простор\n\nДа бисте поново омогућили дозволе, отворите апликацију."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Последњи пут отворено пре више од <xliff:g id="NUMBER">%s</xliff:g> мес."</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Ако не користите апликацију месец дана:\n\n• дозволе се уклањају да би се заштитили подаци\n• привремени фајлови се уклањају да би се ослободио простор\n\nДа бисте поново омогућили дозволе, отворите апликацију."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Последњи пут отворено пре више од # месеца}one{Последњи пут отворено пре више од # месеца}few{Последњи пут отворено пре више од # месеца}other{Последњи пут отворено пре више од # месеци}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Апликација је последњи пут отворена: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Последњи пут отворено: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Ако омогућите управљање свим датотекама, ова апликација може да приступа свим датотекама у заједничком меморијском простору на овом уређају или повезаним уређајима за складиштење и да мења и брише те датотеке. Апликација може да приступа датотекама без питања."</string>
diff --git a/PermissionController/res/values-sv/strings.xml b/PermissionController/res/values-sv/strings.xml
index e78447e25..c07516677 100644
--- a/PermissionController/res/values-sv/strings.xml
+++ b/PermissionController/res/values-sv/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> och <xliff:g id="NUMBER">%2$s</xliff:g> andra behörigheter har tagits bort"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Appar som inte används"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Följande händer om en app inte används på några månader:\n\n• Behörigheter tas bort för att skydda din data\n• Aviseringar stoppas för att spara batteri\n• Tillfälliga filer tas bort för att frigöra lagringsutrymme\n\nÖppna appen om du vill ge behörigheter och tillåta aviseringar på nytt."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Följande händer om en app inte används på några månader:\n\n• Behörigheter tas bort för att skydda din data\n• Tillfälliga filer tas bort för att frigöra lagringsutrymme\n\nÖppna appen om du vill ge behörigheter på nytt."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Öppnades senast för över <xliff:g id="NUMBER">%s</xliff:g> månader sedan"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Följande händer om en app inte används på en månad:\n\n• Behörigheter tas bort för att skydda din data\n• Tillfälliga filer tas bort för att frigöra lagringsutrymme\n\nÖppna appen om du vill ge behörigheter på nytt."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Öppnades senast för över # månad sedan}other{Öppnades senast för över # månader sedan}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Appen öppnades senast den <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Öppnades senast <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Om du tillåter hantering av alla filer kan appen komma åt, redigera och radera alla filer i det vanliga lagringsutrymmet på denna enhet eller anslutna lagringsenheter. Appen kan komma åt filer utan att du tillfrågas."</string>
diff --git a/PermissionController/res/values-sw-car/strings.xml b/PermissionController/res/values-sw-car/strings.xml
new file mode 100644
index 000000000..89e29961c
--- /dev/null
+++ b/PermissionController/res/values-sw-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Programu isipotumika kwa miezi kadhaa:\n\n• Ruhusa huondolewa ili kulinda data yako\n• Faili za muda huondolewa ili kupata nafasi"</string>
+</resources>
diff --git a/PermissionController/res/values-sw/strings.xml b/PermissionController/res/values-sw/strings.xml
index 13080affe..5d4374a33 100644
--- a/PermissionController/res/values-sw/strings.xml
+++ b/PermissionController/res/values-sw/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Ruhusa ya <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> na ruhusa zingine <xliff:g id="NUMBER">%2$s</xliff:g> zimeondolewa"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Programu zisizotumika"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Programu isipotumika kwa miezi kadhaa:\n\n• Ruhusa huondolewa ili kulinda data yako \n• Arifa husimamishwa ili kuokoa betri\n• Faili za muda huondolewa ili upate nafasi\n\nIli uidhinishe ruhusa na arifa tena, fungua programu."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Programu isipotumika kwa miezi kadhaa:\n\n• Ruhusa huondolewa ili kulinda data yako\n• Faili za muda huondolewa ili upate nafasi\n\nIli uidhinishe ruhusa tena, fungua programu."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Zilizofunguliwa mwisho zaidi ya miezi <xliff:g id="NUMBER">%s</xliff:g> iliyopita"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Programu isipotumika kwa mwezi mmoja:\n\n• Ruhusa huondolewa ili kulinda data yako\n• Faili za muda huondolewa ili upate nafasi\n\nIli uidhinishe ruhusa tena, fungua programu."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Zilifunguliwa mara ya mwisho zaidi ya mwezi # uliopita}other{Zilifunguliwa mara ya mwisho zaidi ya miezi # iliyopita}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Ilifunguliwa mara ya mwisho tarehe <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Ilifunguliwa mara ya mwisho <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Ukiruhusu udhibiti wa faili zote, programu hii inaweza kufikia, kubadilisha na kufuta faili zozote zilizo katika hifadhi kwenye kifaa hiki au vifaa vilivyounganishwa vya kuhifadhi. Programu inaweza kufikia faili bila kukuomba ruhusa."</string>
diff --git a/PermissionController/res/values-ta/strings.xml b/PermissionController/res/values-ta/strings.xml
index 86fb396f7..91dd4dc00 100644
--- a/PermissionController/res/values-ta/strings.xml
+++ b/PermissionController/res/values-ta/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> மற்றும் பிற <xliff:g id="NUMBER">%2$s</xliff:g> அனுமதிகள் அகற்றப்பட்டன"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"பயன்படுத்தாத ஆப்ஸ்"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"ஆப்ஸைச் சில மாதங்கள் பயன்படுத்தாமல் இருந்தால்:\n\n• உங்கள் தரவைப் பாதுகாக்க அனுமதிகள் அகற்றப்படும்\n• பேட்டரியைச் சேமிக்க அறிவிப்புகள் நிறுத்தப்படும்\n• சேமிப்பிடத்தைக் காலியாக்க தற்காலிக ஃபைல்கள் அகற்றப்படும்\n\nமீண்டும் அனுமதிகளை வழங்குவதற்கும் அறிவிப்புகளைப் பெறுவதற்கும் ஆப்ஸைத் திறக்கவும்."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"ஓர் ஆப்ஸைச் சில மாதங்கள் பயன்படுத்தாமல் இருந்தால்:\n\n• உங்கள் தரவைப் பாதுகாக்கும் பொருட்டு அனுமதிகள் அகற்றப்படும்\n• சேமிப்பிடத்தைக் காலியாக்கும் பொருட்டு தற்காலிக ஃபைல்கள் அகற்றப்படும்\n\nமீண்டும் அனுமதிகளை வழங்க ஆப்ஸைத் திறக்கவும்."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"கடைசியாக <xliff:g id="NUMBER">%s</xliff:g> மாதங்களுக்கு முன்பு திறக்கப்பட்டது"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"ஓர் ஆப்ஸை ஒரு மாதம் பயன்படுத்தாமல் இருந்தால்:\n\n• உங்கள் தரவைப் பாதுகாக்க அனுமதிகள் அகற்றப்படும்\n• சேமிப்பிடத்தைக் காலியாக்க தற்காலிக ஃபைல்கள் அகற்றப்படும்\n\nமீண்டும் அனுமதிகளை வழங்க ஆப்ஸைத் திறங்கள்."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{கடைசியாக # மாதத்திற்கு முன்பு பயன்படுத்தப்பட்டது}other{கடைசியாக # மாதங்களுக்கு முன்பு பயன்படுத்தப்பட்டது}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"கடைசியாக <xliff:g id="DATE">%s</xliff:g> அன்று ஆப்ஸ் திறக்கப்பட்டது"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"கடைசியாகத் திறந்தது: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"அனைத்து ஃபைல்களையும் நிர்வகிப்பதற்கு அனுமதி வழங்கினால் இந்தச் சாதனத்தின் பொதுவான சேமிப்பகத்திலோ இணைக்கப்பட்டுள்ள சேமிப்பகச் சாதனங்களிலோ உள்ள ஃபைல்களை அணுகவும் நீக்கவும் அவற்றில் மாற்றங்களைச் செய்யவும் இந்த ஆப்ஸால் முடியும். உங்களிடம் கேட்காமலேயே ஃபைல்களை ஆப்ஸ் அணுகக்கூடும்."</string>
diff --git a/PermissionController/res/values-te/strings.xml b/PermissionController/res/values-te/strings.xml
index 873a011eb..2e9de60ee 100644
--- a/PermissionController/res/values-te/strings.xml
+++ b/PermissionController/res/values-te/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>, మరో <xliff:g id="NUMBER">%2$s</xliff:g> ఇతర అనుమతులు తీసివేయబడ్డాయి"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"ఉపయోగించని యాప్‌లు"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"యాప్‌ను కొన్ని నెలలు ఉపయోగించకపోతే:\n\n• మీ డేటాను రక్షించడానికి అనుమతులు తీసివేయబడతాయి\n• బ్యాటరీని సేవ్ చేయడానికి నోటిఫికేషన్‌లు ఆపివేయబడతాయి\n• స్పేస్‌ను ఖాళీ చేయడానికి తాత్కాలిక ఫైళ్లు తీసివేయబడతాయి\n\nఅనుమతులు, నోటిఫికేషన్‌లను మళ్ళీ అనుమతించడానికి యాప్‌ను తెరవండి."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"యాప్‌ను కొన్ని నెలలు ఉపయోగించకపోతే:\n\n• మీ డేటాను రక్షించడానికి అనుమతులు తీసివేయబడతాయి\n• స్పేస్‌ను ఖాళీ చేయడానికి తాత్కాలిక ఫైళ్లు తీసివేయబడతాయి\n\nఅనుమతులను మళ్లీ అనుమతించడానికి, యాప్‌ను తెరవండి."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"చివరిసారిగా <xliff:g id="NUMBER">%s</xliff:g> నెలల కంటే ముందు తెరవబడింది"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"యాప్‌ను నెల పాటు ఉపయోగించకపోతే:\n\n• మీ డేటాను రక్షించడానికి అనుమతులు తీసివేయబడతాయి\n• స్పేస్‌ను ఖాళీ చేయడానికి తాత్కాలిక ఫైళ్లు తీసివేయబడతాయి\n\nఅనుమతులకు మళ్లీ వీలు కల్పించడానికి, యాప్‌ను తెరవండి."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{చివరిసారిగా # నెల కంటే ముందు తెరవబడింది}other{చివరిసారిగా # నెలల కంటే ముందు తెరవబడింది}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"యాప్ చివరిసారిగా <xliff:g id="DATE">%s</xliff:g> తేదీన తెరవబడింది"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"చివరిగా తెరిచినది <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"మీరు అన్ని ఫైళ్ల మేనేజ్‌మెంట్‌కు అనుమతిస్తే,ఈ పరికరంలో లేదా కనెక్ట్ చేయబడిన స్టోరేజ్ పరికరాలలో ఉమ్మడి స్టోరేజ్‌లోని ఏ ఫైళ్లను అయినా ఈ యాప్ యాక్సెస్ చేయగలదు, సవరించగలదు, లేదా తొలగించగలదు. యాప్ మీ అనుమతి తీసుకోకుండానే ఫైళ్లను యాక్సెస్ చేయవచ్చు."</string>
diff --git a/PermissionController/res/values-th/strings.xml b/PermissionController/res/values-th/strings.xml
index 3d1339249..8e4186300 100644
--- a/PermissionController/res/values-th/strings.xml
+++ b/PermissionController/res/values-th/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"มีการนำสิทธิ์เข้าถึง<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>และสิทธิ์อีก <xliff:g id="NUMBER">%2$s</xliff:g> รายการออก"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"แอปที่ไม่ได้ใช้"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"จะมีการดำเนินการต่อไปนี้หากไม่ได้ใช้แอปเป็นเวลา 2-3 เดือน\n\n• สิทธิ์จะถูกนำออกเพื่อปกป้องข้อมูลของคุณ\n• การแจ้งเตือนจะหยุดลงเพื่อประหยัดแบตเตอรี่\n• ไฟล์ชั่วคราวจะถูกนำออกเพื่อเพิ่มพื้นที่ว่าง\n\nเปิดแอปเพื่ออนุญาตสิทธิ์และการแจ้งเตือนอีกครั้ง"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"จะมีการดำเนินการต่อไปนี้หากไม่ได้ใช้แอปเป็นเวลา 2-3 เดือน\n\n• สิทธิ์จะถูกนำออกเพื่อปกป้องข้อมูลของคุณ\n• ไฟล์ชั่วคราวจะถูกนำออกเพื่อเพิ่มพื้นที่ว่าง\n\nเปิดแอปเพื่ออนุญาตสิทธิ์อีกครั้ง"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"เปิดล่าสุดนานกว่า <xliff:g id="NUMBER">%s</xliff:g> เดือนที่ผ่านมา"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"ระบบจะดำเนินการต่อไปนี้หากไม่มีการใช้แอปเป็นเวลา 1 เดือน\n\n• สิทธิ์จะถูกนำออกเพื่อปกป้องข้อมูลของคุณ\n• ไฟล์ชั่วคราวจะถูกนำออกเพื่อเพิ่มพื้นที่ว่าง\n\nเปิดแอปเพื่ออนุญาตสิทธิ์อีกครั้ง"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{เปิดล่าสุดนานกว่า # เดือนที่ผ่านมา}other{เปิดล่าสุดนานกว่า # เดือนที่ผ่านมา}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"เปิดแอปล่าสุดเมื่อวันที่ <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"เปิดล่าสุดเมื่อวันที่ <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"หากคุณอนุญาตให้จัดการไฟล์ทั้งหมด แอปนี้จะเข้าถึง แก้ไข และลบไฟล์ใดก็ได้ในพื้นที่เก็บข้อมูลทั่วไปในอุปกรณ์นี้หรือในอุปกรณ์จัดเก็บข้อมูลที่เชื่อมต่อ รวมถึงอาจเข้าถึงไฟล์โดยไม่ขอคุณก่อน"</string>
diff --git a/PermissionController/res/values-tl/strings.xml b/PermissionController/res/values-tl/strings.xml
index a22d0b276..c702d3e3d 100644
--- a/PermissionController/res/values-tl/strings.xml
+++ b/PermissionController/res/values-tl/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Inalis ang <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> at <xliff:g id="NUMBER">%2$s</xliff:g> pang pahintulot"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Mga hindi ginagamit na app"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Kung hindi ginamit ang isang app sa loob ng ilang buwan:\n\n• Aalisin ang mga pahintulot para maprotektahan ang iyong data\n• Ihihinto ang mga notification para makatipid sa baterya\n• Aalisin ang mga pansamantalang file para magbakante ng space\n\nPara payagan ulit ang mga pahintulot at notification, buksan ang app."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Kung hindi ginamit ang isang app sa loob ng ilang buwan:\n\n• Aalisin ang mga pahintulot para maprotektahan ang iyong data\n• Aalisin ang mga pansamantalang file para magbakante ng space\n\nPara payagan ulit ang mga pahintulot, buksan ang app."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Huling binuksan mahigit <xliff:g id="NUMBER">%s</xliff:g> (na) buwan na ang nakakalipas"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Kung hindi ginamit ang isang app sa loob ng isang buwan:\n\n• Aalisin ang mga pahintulot para maprotektahan ang iyong data\n• Aalisin ang mga pansamantalang file para magbakante ng space\n\nPara payagan ulit ang mga pahintulot, buksan ang app."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Huling binuksan mahigit # buwan na ang nakalipas}one{Huling binuksan mahigit # buwan na ang nakalipas}other{Huling binuksan mahigit # na buwan na ang nakalipas}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Huling binuksan ang app noong <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Huling binuksan noong <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Kung papayagan mo ang pamamahala ng lahat ng file, magagawa ng app na ito na i-access, baguhin, at i-delete ang anumang file na nasa karaniwang storage sa device na ito o mga nakakonektang storage device. Posibleng mag-access ng mga file ang app nang hindi ka tinatanong."</string>
diff --git a/PermissionController/res/values-tr-car/strings.xml b/PermissionController/res/values-tr-car/strings.xml
new file mode 100644
index 000000000..d0deb049a
--- /dev/null
+++ b/PermissionController/res/values-tr-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Uygulama birkaç ay kullanılmazsa:\n\n• Verilerinizi korumak için izinler kaldırılır.\n• Yer açmak için geçici dosyalar kaldırılır."</string>
+</resources>
diff --git a/PermissionController/res/values-tr/strings.xml b/PermissionController/res/values-tr/strings.xml
index b3223ea4b..1e99afc46 100644
--- a/PermissionController/res/values-tr/strings.xml
+++ b/PermissionController/res/values-tr/strings.xml
@@ -76,7 +76,7 @@
<string name="storage_supergroup_warning_allow" msgid="103093462784523190">"Bu uygulama Android\'in daha eski bir sürümü için tasarlandı. Bu izni verirseniz uygulama tüm depolama alanına (fotoğraf, video, müzik, ses ve diğer dosyalar dahil) erişebilir."</string>
<string name="storage_supergroup_warning_deny" msgid="6420765672683284347">"Bu uygulama Android\'in daha eski bir sürümü için tasarlandı. Bu izni vermezseniz uygulamanın tüm depolama alanına erişimi (fotoğraf, video, müzik, ses ve diğer dosyalar dahil) reddedilir."</string>
<string name="default_permission_description" msgid="4624464917726285203">"bilinmeyen bir işlem gerçekleştirme"</string>
- <string name="app_permissions_group_summary" msgid="8788419008958284002">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="COUNT_1">%2$d</xliff:g> uygulamaya izin veriliyor"</string>
+ <string name="app_permissions_group_summary" msgid="8788419008958284002">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> uygulamaya izin veriliyor"</string>
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> uygulamaya izin veriliyor"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Sistemi göster"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Sisteme ait olanları gizle"</string>
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> izni ve diğer <xliff:g id="NUMBER">%2$s</xliff:g> izin kaldırıldı"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Kullanılmayan uygulamalar"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Uygulama birkaç ay kullanılmazsa:\n\n• Verilerinizi korumak için izinler kaldırılır\n• Pilden tasarruf etmek için bildirimler durdurulur\n• Yer açmak için geçici dosyalar kaldırılır\n\nİzinleri ve bildirimleri yeniden etkinleştirmek için uygulamayı açın."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Uygulama birkaç ay kullanılmazsa:\n\n• Verilerinizi korumak için izinler kaldırılır\n• Yer açmak için geçici dosyalar kaldırılır\n\nİzinleri yeniden etkinleştirmek için uygulamayı açın."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"En son <xliff:g id="NUMBER">%s</xliff:g> aydan fazla bir süre önce açıldı"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Uygulama bir ay kullanılmazsa:\n\n• Verilerinizi korumak için izinler kaldırılır\n• Yer açmak için geçici dosyalar kaldırılır\n\nİzinleri yeniden etkinleştirmek için uygulamayı açın."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{En son # aydan fazla bir süre önce açıldı}other{En son # aydan uzun bir süre önce açıldı}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Uygulama en son <xliff:g id="DATE">%s</xliff:g> tarihinde açıldı"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"En son <xliff:g id="DATE">%s</xliff:g> tarihinde açıldı"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Tüm dosyaların yönetilmesine izin verirseniz bu uygulama, bu cihazdaki ortak depolama alanında veya bu cihaza bağlı depolama cihazlarında bulunan tüm dosyalara erişebilir, bunları değiştirebilir ve silebilir. Uygulama, size sormadan dosyalara erişebilir."</string>
diff --git a/PermissionController/res/values-uk-car/strings.xml b/PermissionController/res/values-uk-car/strings.xml
new file mode 100644
index 000000000..7b900ff5d
--- /dev/null
+++ b/PermissionController/res/values-uk-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Якщо ви не користуєтеся додатком кілька місяців:\n\n• дозволи буде скасовано, щоб захистити ваші дані;\n• тимчасові файли буде видалено, щоб звільнити місце на диску."</string>
+</resources>
diff --git a/PermissionController/res/values-uk/strings.xml b/PermissionController/res/values-uk/strings.xml
index e3d9c99e0..efc26f2db 100644
--- a/PermissionController/res/values-uk/strings.xml
+++ b/PermissionController/res/values-uk/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Дозвіл \"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\" і ще <xliff:g id="NUMBER">%2$s</xliff:g> скасовано"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Додатки, що не використовуються"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Якщо ви не користуєтеся додатком кілька місяців:\n\n• дозволи буде скасовано, щоб захистити ваші дані;\n• показ сповіщень буде припинено, щоб заощаджувати заряд акумулятора;\n• тимчасові файли буде видалено, щоб звільнити місце на диску.\n\nЩоб відновити дозволи й показ сповіщень, відкрийте додаток."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Якщо ви не користуєтеся додатком кілька місяців:\n\n• дозволи буде скасовано, щоб захистити ваші дані;\n• тимчасові файли буде видалено, щоб звільнити місце на диску.\n\nЩоб відновити дозволи, відкрийте додаток."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Відкривались понад <xliff:g id="NUMBER">%s</xliff:g> міс. тому"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Якщо ви не користуєтеся додатком упродовж місяця:\n\n• дозволи буде скасовано, щоб захистити ваші дані;\n• тимчасові файли буде видалено, щоб звільнити місце на диску.\n\nЩоб відновити дозволи, відкрийте додаток."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Відкривались понад # місяць тому}one{Відкривались понад # місяць тому}few{Відкривались понад # місяці тому}many{Відкривались понад # місяців тому}other{Відкривались понад # місяця тому}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Додаток востаннє відкрито <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Востаннє відкрито <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Додаток із дозволом керувати всіма файлами може переглядати, змінювати й видаляти файли в спільному сховищі на цьому пристрої або підключених носіях пам\'яті. Такий додаток може отримувати доступ до файлів без вашого відома."</string>
diff --git a/PermissionController/res/values-ur/strings.xml b/PermissionController/res/values-ur/strings.xml
index a53ae34c8..3d87ab57b 100644
--- a/PermissionController/res/values-ur/strings.xml
+++ b/PermissionController/res/values-ur/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> اور <xliff:g id="NUMBER">%2$s</xliff:g> دیگر اجازتوں کو ہٹایا گیا"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"غیر مستعمل ایپس"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"اگر کوئی ایپ کچھ ماہ تک استعمال نہیں ہوتی ہے تو:\n\n• آپ کے ڈیٹا کی حفاظت کرنے کیلئے اجازتوں کو ہٹا دیا جاتا ہے\n• بیٹری محفوظ کرنے کیلئے اطلاعات کو روک دیا جاتا ہے\n• اسپیس خالی کرنے کیلئے عارضی فائلز کو ہٹا دیا جاتا ہے\n\nاجازتوں اور اطلاعات کو دوبارہ اجازت دینے کیلئے ایپ کو کھولیں۔"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"اگر کوئی ایپ کچھ ماہ تک استعمال نہیں ہوتی ہے تو:\n\n• آپ کے ڈیٹا کی حفاظت کیے لیے اجازتوں کو ہٹا دیا جاتا ہے\n• اسپیس خالی کرنے کے لیے عارضی فائلز کو ہٹا دیا جاتا ہے\n\nاجازتوں کو دوبارہ اجازت دینے کے لیے ایپ کو کھولیں۔"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"آخری بار <xliff:g id="NUMBER">%s</xliff:g> ماہ سے زیادہ پہلے کھولی گئی"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"اگر کوئی ایپ ایک ماہ تک استعمال نہیں ہوتی ہے تو:\n\n• آپ کے ڈیٹا کی حفاظت کے لیے اجازتوں کو ہٹا دیا جاتا ہے\n• اسپیس خالی کرنے کے لیے عارضی فائلز کو ہٹا دیا جاتا ہے\n\nاجازتوں کو دوبارہ اجازت دینے کے لیے ایپ کھولیں۔"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{آخری بار # ماہ سے زیادہ پہلے کھولی گئی}other{آخری بار # ماہ سے زیادہ پہلے کھولی گئی}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ایپ آخری بار <xliff:g id="DATE">%s</xliff:g> کو کھولی گئی"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"آخری بار <xliff:g id="DATE">%s</xliff:g> کو کھولی گئی"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"اگر آپ سبھی فائلز کی مینیجمنٹ کی اجازت دیتے ہیں تو یہ ایپ اس آلہ یا منسلک اسٹوریج آلات پر مشترکہ اسٹوریج میں موجود کسی بھی فائل تک رسائی، اس میں ترمیم اور حذف کر سکتی ہے۔ ایپ آپ سے پوچھے بغیر فائلز تک رسائی حاصل کر سکتی ہے۔"</string>
diff --git a/PermissionController/res/values-uz/strings.xml b/PermissionController/res/values-uz/strings.xml
index f084beaaf..4315f0e71 100644
--- a/PermissionController/res/values-uz/strings.xml
+++ b/PermissionController/res/values-uz/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> va yana <xliff:g id="NUMBER">%2$s</xliff:g> ta ruxsat olib tashlandi"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Ishlatilmagan ilovalar"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Ilova bir necha oy ishlatilmasa:\n\n• Maxfiyligingizni himoyalash uchun ruxsatlar bekor qilinadi\n• Batareyani tejash uchun bildirishnomalar toʻxtatiladi\n• Boʻsh joy ochish uchun vaqtinchalik fayllar tozalab tashlanadi\n\nRuxsat va bildirishnomalarga yana ruxsat berish uchun ilovani oching."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Ilova bir necha oy ishlatilmasa:\n\n• Maxfiyligingizni himoyalash uchun ruxsatlar bekor qilinadi\n• Boʻsh joy ochish uchun vaqtinchalik fayllar tozalab tashlanadi\n\nRuxsatlarni qayta berish uchun ilovani oching."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Oxirgi marta <xliff:g id="NUMBER">%s</xliff:g> oy oldin ochilgan"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Ilova bir oy ishlatilmasa:\n\n• Maxfiyligingizni himoyalash uchun ruxsatlar bekor qilinadi\n• Boʻsh joy ochish uchun vaqtinchalik fayllar tozalab tashlanadi\n\nRuxsatlarni qayta berish uchun ilovani oching."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Oxirgi marta # oy oldinroq ochilgan}other{Oxirgi marta # oy oldinroq ochilgan}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Ilova oxirgi marta ochilgan: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Oxirgi marta ochilgan: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Barcha fayllarni boshqarishga ruxsat berilsa, ilova bu qurilmadagi yoki ulangan xotira omborlaridagi barcha fayllarni ochishi, tahrirlashi yoki oʻchirib tashlashi mumkin. Ilova fayllar bilan sizga xabar qilmay ishlay oladi."</string>
diff --git a/PermissionController/res/values-vi/strings.xml b/PermissionController/res/values-vi/strings.xml
index e2db3cabd..19df61565 100644
--- a/PermissionController/res/values-vi/strings.xml
+++ b/PermissionController/res/values-vi/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Đã thu hồi quyền sử dụng <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> và <xliff:g id="NUMBER">%2$s</xliff:g> quyền khác"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Ứng dụng không dùng đến"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Nếu một ứng dụng không được dùng đến trong vài tháng, hệ thống sẽ:\n\n• Thu hồi các quyền để bảo vệ dữ liệu của bạn\n• Chặn các thông báo để tiết kiệm pin\n• Xóa các tệp tạm thời để giải phóng bộ nhớ\n\nĐể cho phép lại các quyền và thông báo, hãy mở ứng dụng đó."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Nếu bạn không dùng một ứng dụng trong vài tháng, thì hệ thống sẽ:\n\n• Xoá các quyền để bảo vệ dữ liệu của bạn\n• Xoá các tệp tạm thời để giải phóng dung lượng\n\nĐể cấp lại các quyền, hãy mở ứng dụng đó."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Mở lần cuối cách đây hơn <xliff:g id="NUMBER">%s</xliff:g> tháng trước"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Nếu bạn không dùng một ứng dụng trong một tháng, thì hệ thống sẽ:\n\n• Xoá các quyền để bảo vệ dữ liệu của bạn\n• Xoá các tệp tạm thời để giải phóng dung lượng\n\nĐể cấp lại các quyền, hãy mở ứng dụng đó."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Lần mở gần đây nhất là hơn # tháng trước}other{Lần mở gần đây nhất là hơn # tháng trước}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Lần gần đây nhất bạn mở ứng dụng này là vào <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Lần mở gần đây nhất là vào <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Nếu bạn cho phép quản lý tất cả các tệp, thì ứng dụng này có thể truy cập, sửa đổi và xóa bất kỳ tệp nào trong bộ nhớ chung trên thiết bị này hoặc các thiết bị lưu trữ được kết nối. Ứng dụng có thể truy cập vào tệp mà không cần hỏi bạn."</string>
diff --git a/PermissionController/res/values-zh-rCN-car/strings.xml b/PermissionController/res/values-zh-rCN-car/strings.xml
new file mode 100644
index 000000000..62e88115f
--- /dev/null
+++ b/PermissionController/res/values-zh-rCN-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"如果您连续几个月未使用某个应用,系统将对该应用采取以下措施:\n\n• 撤消授予该应用的权限以保护您的数据\n• 移除临时文件以释放空间"</string>
+</resources>
diff --git a/PermissionController/res/values-zh-rCN-v33/strings.xml b/PermissionController/res/values-zh-rCN-v33/strings.xml
index 7d01f05f1..bf3370bd0 100644
--- a/PermissionController/res/values-zh-rCN-v33/strings.xml
+++ b/PermissionController/res/values-zh-rCN-v33/strings.xml
@@ -33,7 +33,7 @@
<string name="safety_center_issue_card_content_description_with_subtitle" msgid="5504040663935313539">"警报。<xliff:g id="ISSUE_CARD_TITLE">%1$s</xliff:g>。<xliff:g id="ISSUE_CARD_SUBTITLE">%2$s</xliff:g>。<xliff:g id="ISSUE_CARD_SUMMARY">%3$s</xliff:g>"</string>
<string name="safety_center_resolved_issue_fallback" msgid="8548932070610766651">"操作完成"</string>
<string name="safety_center_qs_status_summary" msgid="5193925895830451177">"查看可提高设备安全性的设置"</string>
- <string name="safety_center_qs_page_landing" msgid="1717368301679228128">"“安全性和隐私权”快捷设置"</string>
+ <string name="safety_center_qs_page_landing" msgid="1717368301679228128">"“安全和隐私”快捷设置"</string>
<string name="safety_center_qs_close_button" msgid="1352313308176244599">"关闭"</string>
<string name="safety_center_qs_expand_action" msgid="2193190557696484169">"展开并显示选项"</string>
<string name="safety_center_qs_collapse_action" msgid="5809657430125309183">"收起"</string>
diff --git a/PermissionController/res/values-zh-rCN/strings.xml b/PermissionController/res/values-zh-rCN/strings.xml
index 08467a438..67c54aa5d 100644
--- a/PermissionController/res/values-zh-rCN/strings.xml
+++ b/PermissionController/res/values-zh-rCN/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"已移除<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>权限及另外 <xliff:g id="NUMBER">%2$s</xliff:g> 项权限"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"未使用的应用"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"如果您连续几个月未使用某个应用,系统将对该应用采取以下措施:\n\n• 移除权限以保护您的数据\n• 停止通知功能以节省电量\n• 移除临时文件以释放空间\n\n如需重新授予权限以继续接收通知,请打开该应用。"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"如果您连续几个月未使用某个应用,系统将对该应用采取以下措施:\n\n• 取消权限以保护您的数据\n• 移除临时文件以释放空间\n\n如需重新授予权限,请打开该应用。"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"距上次打开已超过 <xliff:g id="NUMBER">%s</xliff:g> 个月"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"如果您连续 1 个月未使用某个应用,系统将对该应用采取以下措施:\n\n• 撤消权限以保护您的数据\n• 移除临时文件以释放空间\n\n如需重新授予权限,请打开该应用。"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{距上次打开已超过 # 个月}other{距上次打开已超过 # 个月}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"应用上次打开时间是 <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"上次打开时间是 <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"如果您允许此应用管理所有文件,此应用将可以访问、修改和删除本设备或连接的存储设备上通用存储空间中的任何文件。此应用可能会在您不知情的情况下访问文件。"</string>
@@ -457,7 +457,7 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"该应用可能想要随时获取您的位置信息(即使您并未使用该应用)。"<annotation id="link">"在“设置”中允许"</annotation>"。"</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"要更改&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;的位置信息访问权限吗?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"该应用想要随时获取您的位置信息(即使您并未使用该应用)。"<annotation id="link">"在“设置”中允许"</annotation>"。"</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"要允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;查找、连接附近设备以及确定附近设备的相对位置吗?"</string>
+ <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"要允许“&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;”查找、连接到附近设备以及确定附近设备的相对位置吗?"</string>
<string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"要允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;查找、连接附近设备以及确定附近设备的相对位置吗?"<annotation id="link">"您可以在“设置”中允许。"</annotation></string>
<string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"要将“<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>”可以使用的位置信息从大致位置改为确切位置吗?"</string>
<string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"要允许“&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;”获取此设备的大致位置信息吗?"</string>
@@ -511,7 +511,7 @@
<string name="blocked_camera_title" msgid="1128510551791284384">"设备摄像头已被屏蔽"</string>
<string name="blocked_microphone_title" msgid="1631517143648232585">"设备麦克风已被屏蔽"</string>
<string name="blocked_location_title" msgid="2005608279812892383">"设备位置信息功能已关闭"</string>
- <string name="blocked_sensor_summary" msgid="4443707628305027375">"针对应用和服务"</string>
+ <string name="blocked_sensor_summary" msgid="4443707628305027375">"会影响应用和服务"</string>
<string name="blocked_mic_summary" msgid="8960466941528458347">"当您拨打紧急电话号码时,系统可能仍会分享麦克风数据。"</string>
<string name="blocked_sensor_button_label" msgid="6742092634984289658">"更改"</string>
<string name="safety_center_dashboard_page_title" msgid="2810774008694315854">"安全和隐私"</string>
@@ -574,7 +574,7 @@
<string name="camera_toggle_title" msgid="1251201397431837666">"摄像头使用权限"</string>
<string name="mic_toggle_title" msgid="2649991093496110162">"麦克风使用权限"</string>
<string name="perm_toggle_description" msgid="7801326363741451379">"针对应用和服务"</string>
- <string name="mic_toggle_description" msgid="9163104307990677157">"针对应用和服务。如果您关闭此设置,那么当您拨打紧急电话号码时,系统可能仍会分享麦克风数据。"</string>
+ <string name="mic_toggle_description" msgid="9163104307990677157">"会影响应用和服务。如果您关闭此设置,那么当您拨打紧急电话号码时,系统可能仍会分享麦克风数据。"</string>
<string name="location_settings_subtitle" msgid="2328360561197430695">"查看能够访问位置信息的应用和服务"</string>
<string name="show_clip_access_notification_title" msgid="5168467637351109096">"显示剪贴板访问通知"</string>
<string name="show_clip_access_notification_summary" msgid="3532020182782112687">"系统会在应用访问您复制的文字、图片或其他内容时显示一条消息"</string>
diff --git a/PermissionController/res/values-zh-rHK/strings.xml b/PermissionController/res/values-zh-rHK/strings.xml
index c353200a7..58a620149 100644
--- a/PermissionController/res/values-zh-rHK/strings.xml
+++ b/PermissionController/res/values-zh-rHK/strings.xml
@@ -202,7 +202,7 @@
<string name="unused_apps_category_title" msgid="2988455616845243901">"未使用的應用程式設定"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"如不使用應用程式,即移除權限"</string>
<string name="unused_apps_label" msgid="2595428768404901064">"移除權限並騰出空間"</string>
- <string name="unused_apps_label_v2" msgid="7058776770056517980">"如果未使用就暫停應用程式活動"</string>
+ <string name="unused_apps_label_v2" msgid="7058776770056517980">"暫停未使用應用程式的活動"</string>
<string name="unused_apps_summary" msgid="8839466950318403115">"移除權限、刪除暫存檔案和停止通知"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"為保護您的資料,系統已移除您在過去幾個月未曾使用的應用程式的權限。"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"為保護您的資料,如果應用程式在過去幾個月未曾使用,系統將會移除以下權限:<xliff:g id="PERMS">%1$s</xliff:g>。"</string>
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"已移除「<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>」及另外 <xliff:g id="NUMBER">%2$s</xliff:g> 個權限"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"不使用的應用程式"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"如果應用程式在過去幾個月未曾使用,系統將會:\n\n• 移除權限以保護您的資料\n• 停止顯示通知以節省電量\n• 移除暫存檔案以騰出空間\n\n如要重新允許權限和通知,請開啟應用程式。"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"如果您在過去幾個月未曾使用應用程式,系統將會:\n\n• 移除權限以保護您的資料\n• 移除暫存檔案以騰出空間\n\n如要再次允許權限,請開啟應用程式。"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"上次開啟:超過 <xliff:g id="NUMBER">%s</xliff:g> 個月前"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"如果您在過去一個月未曾使用應用程式,系統將會:\n\n• 移除權限以保護您的資料\n• 移除暫存檔案以騰出空間\n\n如要再次允許權限,請開啟應用程式。"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{距離上次開啟已超過 # 個月}other{距離上次開啟已超過 # 個月}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"應用程式上次於 <xliff:g id="DATE">%s</xliff:g>開啟"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"上次開啟日期:<xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"如允許管理所有檔案,此應用程式便可存取、修改和刪除此裝置或已連接儲存裝置上一般儲存的任何檔案。應用程式可能會在未通知您的情況下存取檔案。"</string>
diff --git a/PermissionController/res/values-zh-rTW-car/strings.xml b/PermissionController/res/values-zh-rTW-car/strings.xml
new file mode 100644
index 000000000..24062f2d5
--- /dev/null
+++ b/PermissionController/res/values-zh-rTW-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"如果你數個月未使用某應用程式,系統將對該應用程式採取以下措施:\n\n• 移除權限以保護你的資料\n• 移除暫存檔以釋出空間"</string>
+</resources>
diff --git a/PermissionController/res/values-zh-rTW/strings.xml b/PermissionController/res/values-zh-rTW/strings.xml
index 69328e0ca..e07392604 100644
--- a/PermissionController/res/values-zh-rTW/strings.xml
+++ b/PermissionController/res/values-zh-rTW/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"已移除<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>存取權和另外 <xliff:g id="NUMBER">%2$s</xliff:g> 項權限"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"未使用的應用程式"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"如果你數個月未使用某個應用程式,系統將對該應用程式採取以下措施:\n\n• 移除權限以保護你的資料\n• 停止通知以節省電力\n• 移除暫存檔以釋出空間\n\n如要重新授予權限和再次接收通知,請開啟應用程式。"</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"如果你數個月未使用某個應用程式,系統將對該應用程式採取以下措施:\n\n• 移除權限以保護你的資料\n• 移除暫存檔以釋出空間\n\n如要重新授予權限,請開啟應用程式。"</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"距離上次開啟時間已超過 <xliff:g id="NUMBER">%s</xliff:g> 個月"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"如果你一個月未使用某應用程式,系統將對該應用程式採取以下措施:\n\n• 移除權限以保護你的資料\n• 移除暫存檔以釋出空間\n\n如要重新授權,只要開啟應用程式即可。"</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{距離上次開啟已超過 # 個月}other{距離上次開啟已超過 # 個月}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"應用程式上次開啟時間:<xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"上次開啟時間:<xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"如果你允許這個應用程式管理所有檔案,該應用程式就能存取、修改及刪除這部裝置或已連結儲存裝置上通用儲存空間中的任何檔案。此外,該應用程式可能會直接存取檔案,不會事先通知你。"</string>
diff --git a/PermissionController/res/values-zu-car/strings.xml b/PermissionController/res/values-zu-car/strings.xml
new file mode 100644
index 000000000..32ff137b7
--- /dev/null
+++ b/PermissionController/res/values-zu-car/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="unused_apps_page_summary" msgid="7505839764289846511">"Uma i-app ingasetshenziswa izinyanga ezimbalwa:\n\n• Izimvume ziyasuswa ukuze kuvikelwe idatha yakho\n• Amafayela esikhashana ayasuswa ukuze kuvulwe isikhala"</string>
+</resources>
diff --git a/PermissionController/res/values-zu/strings.xml b/PermissionController/res/values-zu/strings.xml
index 092f5a05d..75be5db30 100644
--- a/PermissionController/res/values-zu/strings.xml
+++ b/PermissionController/res/values-zu/strings.xml
@@ -219,8 +219,8 @@
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> nezinye izimvume ezingu-<xliff:g id="NUMBER">%2$s</xliff:g> zisusiwe"</string>
<string name="unused_apps_page_title" msgid="6986983535677572559">"Unused apps"</string>
<string name="unused_apps_page_summary" msgid="1867593913217272155">"Uma i-app ingasetshenziswa izinyanga ezimbalwa:\n\n• Izimvume ziyasuswa ukuze kuvikelwe idatha yakho\n• Izaziso ziyamiswa ukonga ibhethri\n• Amafayela okwesikhashana ayasuswa ukukhulula isikhala\n\nUkuze uphinde uvumele izimvume nezaziso, vula i-app."</string>
- <string name="unused_apps_page_tv_summary" msgid="3685907153054355671">"Uma i-app ingasetshenziswa izinyanga ezimbalwa:\n\n• Izimvume ziyasuswa ukuze kuvikelwe idatha yakho\n• Amafayela esikhashana ayasuswa ukuze kuvulwe isikhala\n\nUkuze uphinde uvumele izimvume, vula i-app."</string>
- <string name="last_opened_category_title" msgid="7871347400611202595">"Kugcine ukuvulwa ngaphezu kwezinyanga ezingu-<xliff:g id="NUMBER">%s</xliff:g> ezedlule"</string>
+ <string name="unused_apps_page_tv_summary" msgid="2624911608663778308">"Uma i-app ingasetshenziswa inyanga:\n\n• Izimvume ziyasuswa ukuze kuvikelwe idatha yakho\n• Amafayela esikhashana ayasuswa ukuze kuvulwe isikhala\n\nUkuze uphinde uvumele izimvume, vula i-app."</string>
+ <string name="last_opened_category_title" msgid="8796557894614236128">"{count,plural, =1{Kugcine ukuvulwa ngaphezu kwenyanga e-# edlule}one{Kugcine ukuvulwa ngaphezu kwezinyanga ezingu-# ezedlule}other{Kugcine ukuvulwa ngaphezu kwezinyanga ezingu-# ezedlule}}"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Uhlelo lokusebenza lugcine ukuvulwa ngo-<xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Kugcine ukuvulwa ngo-<xliff:g id="DATE">%s</xliff:g>"</string>
<string name="app_permission_footer_special_file_access" msgid="1884202176147657788">"Uma uvumela ukuphathwa kwawo wonke amafayela, lolu hlelo lokusebenza lungafinyelela, lulungise, futhi lususe noma yimaphi amafayela akusitoreji esifanayo kule divayisi noma isitoreji samadivayisi axhunyiwe. Uhlelo lokusebenza lungafinyelela amafayela ngaphandle kokukubuza."</string>
diff --git a/PermissionController/res/values/strings.xml b/PermissionController/res/values/strings.xml
index 287f81865..819d6c59e 100644
--- a/PermissionController/res/values/strings.xml
+++ b/PermissionController/res/values/strings.xml
@@ -678,10 +678,14 @@
<string name="unused_apps_page_summary">If an app is unused for a few months:\n\n\u2022 Permissions are removed to protect your data\n\u2022 Notifications are stopped to save battery\n\u2022 Temporary files are removed to free up space\n\nTo allow permissions and notifications again, open the app.</string>
<!-- Summary for the screen on TV that shows all unused apps that have been hibernated [CHAR LIMIT=none] -->
- <string name="unused_apps_page_tv_summary">If an app is unused for a few months:\n\n\u2022 Permissions are removed to protect your data\n\u2022 Temporary files are removed to free up space\n\nTo allow permissions again, open the app.</string>
+ <string name="unused_apps_page_tv_summary">If an app is unused for a month:\n\n\u2022 Permissions are removed to protect your data\n\u2022 Temporary files are removed to free up space\n\nTo allow permissions again, open the app.</string>
<!-- Title for a category of apps that were last used several months ago [CHAR LIMIT=none] -->
- <string name="last_opened_category_title">Last opened more than <xliff:g id="number" example="3">%s</xliff:g> months ago</string>
+ <string name="last_opened_category_title"> {count, plural,
+ =1{Last opened more than # month ago}
+ other{Last opened more than # months ago}
+ }
+ </string>
<!-- Summary for showing when an app was last used [CHAR LIMIT=none] -->
<string name="last_opened_summary">App last opened on <xliff:g id="date" example="March 12, 2020">%s</xliff:g></string>
diff --git a/PermissionController/res/xml/unused_app_categories.xml b/PermissionController/res/xml/unused_app_categories.xml
index 19d882348..69cbfd143 100644
--- a/PermissionController/res/xml/unused_app_categories.xml
+++ b/PermissionController/res/xml/unused_app_categories.xml
@@ -18,12 +18,6 @@
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
- android:key="three_months"/>
-
- <PreferenceCategory
- android:key="six_months"/>
-
- <PreferenceCategory
android:key="info_msg_category"/>
</PreferenceScreen>
diff --git a/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt b/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt
index 22c3353ff..4cf4967f2 100644
--- a/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt
+++ b/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt
@@ -337,7 +337,7 @@ class HibernationBroadcastReceiver : BroadcastReceiver() {
*/
@MainThread
private suspend fun getAppsToHibernate(
- context: Context
+ context: Context,
): Map<UserHandle, List<LightPackageInfo>> {
val now = System.currentTimeMillis()
val startTimeOfUnusedAppTracking = getStartTimeOfUnusedAppTracking(context.sharedPreferences)
@@ -484,7 +484,7 @@ private fun List<UsageStats>.lastTimePackageUsed(pkgName: String): Long {
*/
suspend fun isPackageHibernationExemptBySystem(
pkg: LightPackageInfo,
- user: UserHandle
+ user: UserHandle,
): Boolean {
if (!LauncherPackagesLiveData.getInitializedValue().contains(pkg.packageName)) {
if (DEBUG_HIBERNATION_POLICY) {
@@ -505,6 +505,14 @@ suspend fun isPackageHibernationExemptBySystem(
return true
}
+ if (pkg.uid == Process.SYSTEM_UID){
+ if (DEBUG_HIBERNATION_POLICY) {
+ DumpableLog.i(LOG_TAG,
+ "Exempted ${pkg.packageName} - Package shares system uid")
+ }
+ return true
+ }
+
val context = PermissionControllerApplication.get()
if (context.getSystemService(DevicePolicyManager::class.java)!!.isDeviceManaged) {
// TODO(b/237065504): Use proper system API to check if the device is financed in U.
@@ -598,7 +606,7 @@ suspend fun isPackageHibernationExemptBySystem(
*/
suspend fun isPackageHibernationExemptByUser(
context: Context,
- pkg: LightPackageInfo
+ pkg: LightPackageInfo,
): Boolean {
val packageName = pkg.packageName
val packageUid = pkg.uid
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionGroup.java b/PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionGroup.java
index 555ba8d51..c3c60f824 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionGroup.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionGroup.java
@@ -1589,12 +1589,13 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
// Enabling/Disabling an app op may put the app in a situation in which it has
// a handle to state it shouldn't have, so we have to kill the app. This matches
// the revoke runtime permission behavior.
+ boolean wasChanged;
if (permission.isAppOpAllowed()) {
- boolean wasChanged = allowAppOp(permission, uid);
- shouldKillApp |= wasChanged && !mAppSupportsRuntimePermissions;
+ wasChanged = allowAppOp(permission, uid);
} else {
- shouldKillApp |= disallowAppOp(permission, uid);
+ wasChanged = disallowAppOp(permission, uid);
}
+ shouldKillApp |= wasChanged && !mAppSupportsRuntimePermissions;
}
}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
index 91ca82338..3dae9dca7 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
@@ -39,6 +39,7 @@ import android.os.Bundle;
import android.os.Process;
import android.os.UserHandle;
import android.permission.PermissionManager;
+import android.provider.Settings;
import android.safetycenter.SafetyCenterManager;
import android.safetycenter.SafetyEvent;
import android.safetycenter.SafetySourceData;
@@ -142,6 +143,15 @@ public final class ManagePermissionsActivity extends SettingsActivity {
return;
}
+ boolean provisioned = Settings.Global.getInt(
+ getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) != 0;
+ boolean completed = Settings.Secure.getInt(
+ getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 0) != 0;
+ if (!provisioned || !completed) {
+ finishAfterTransition();
+ return;
+ }
+
android.app.Fragment fragment = null;
Fragment androidXFragment = null;
String action = getIntent().getAction();
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/UnusedAppsFragment.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/UnusedAppsFragment.kt
index 639996d46..e72c6651b 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/UnusedAppsFragment.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/UnusedAppsFragment.kt
@@ -21,6 +21,7 @@ import android.app.AlertDialog
import android.app.Application
import android.app.Dialog
import android.content.Intent
+import android.icu.text.MessageFormat
import android.os.Bundle
import android.os.Handler
import android.os.Looper
@@ -42,8 +43,9 @@ import com.android.permissioncontroller.Constants.INVALID_SESSION_ID
import com.android.permissioncontroller.R
import com.android.permissioncontroller.hibernation.isHibernationEnabled
import com.android.permissioncontroller.permission.ui.model.UnusedAppsViewModel
-import com.android.permissioncontroller.permission.ui.model.UnusedAppsViewModel.Months
import com.android.permissioncontroller.permission.ui.model.UnusedAppsViewModel.UnusedPackageInfo
+import com.android.permissioncontroller.permission.ui.model.UnusedAppsViewModel.UnusedPeriod
+import com.android.permissioncontroller.permission.ui.model.UnusedAppsViewModel.UnusedPeriod.Companion.allPeriods
import com.android.permissioncontroller.permission.ui.model.UnusedAppsViewModelFactory
import com.android.permissioncontroller.permission.utils.KotlinUtils
import java.text.Collator
@@ -53,8 +55,8 @@ import java.text.Collator
* and to open them.
*/
class UnusedAppsFragment<PF, UnusedAppPref> : Fragment()
- where PF : PreferenceFragmentCompat, PF : UnusedAppsFragment.Parent<UnusedAppPref>,
- UnusedAppPref : Preference, UnusedAppPref : RemovablePref {
+ where PF : PreferenceFragmentCompat, PF : UnusedAppsFragment.Parent<UnusedAppPref>,
+ UnusedAppPref : Preference, UnusedAppPref : RemovablePref {
private lateinit var viewModel: UnusedAppsViewModel
private lateinit var collator: Collator
@@ -62,7 +64,7 @@ class UnusedAppsFragment<PF, UnusedAppPref> : Fragment()
private var isFirstLoad = false
companion object {
- public const val INFO_MSG_CATEGORY = "info_msg_category"
+ const val INFO_MSG_CATEGORY = "info_msg_category"
private const val SHOW_LOAD_DELAY_MS = 200L
private const val INFO_MSG_KEY = "info_msg"
private const val ELEVATION_HIGH = 8f
@@ -70,8 +72,8 @@ class UnusedAppsFragment<PF, UnusedAppPref> : Fragment()
@JvmStatic
fun <PF, UnusedAppPref> newInstance(): UnusedAppsFragment<PF, UnusedAppPref>
- where PF : PreferenceFragmentCompat, PF : UnusedAppsFragment.Parent<UnusedAppPref>,
- UnusedAppPref : Preference, UnusedAppPref : RemovablePref {
+ where PF : PreferenceFragmentCompat, PF : UnusedAppsFragment.Parent<UnusedAppPref>,
+ UnusedAppPref : Preference, UnusedAppPref : RemovablePref {
return UnusedAppsFragment()
}
@@ -157,6 +159,13 @@ class UnusedAppsFragment<PF, UnusedAppPref> : Fragment()
context!!,
R.xml.unused_app_categories,
/* rootPreferences= */ null)
+
+ for (period in allPeriods) {
+ val periodCat = PreferenceCategory(context!!)
+ periodCat.key = period.name
+ periodCat.order = 0
+ preferenceScreen.addPreference(periodCat)
+ }
preferenceFragment.preferenceScreen = preferenceScreen
val infoMsgCategory = preferenceScreen.findPreference<PreferenceCategory>(INFO_MSG_CATEGORY)
@@ -165,22 +174,24 @@ class UnusedAppsFragment<PF, UnusedAppPref> : Fragment()
infoMsgCategory?.addPreference(footerPreference)
}
- private fun updatePackages(categorizedPackages: Map<Months, List<UnusedPackageInfo>>) {
+ private fun updatePackages(categorizedPackages: Map<UnusedPeriod, List<UnusedPackageInfo>>) {
val preferenceFragment: PF = requirePreferenceFragment()
if (preferenceFragment.preferenceScreen == null) {
createPreferenceScreen()
}
val preferenceScreen: PreferenceScreen = preferenceFragment.preferenceScreen
+ // Remove stale preferences
val removedPrefs = mutableMapOf<String, UnusedAppPref>()
- for (month in Months.allMonths()) {
- val category = preferenceScreen.findPreference<PreferenceCategory>(month.value)!!
+ for (period in allPeriods) {
+ val category = preferenceScreen.findPreference<PreferenceCategory>(period.name)!!
for (i in 0 until category.preferenceCount) {
val pref = category.getPreference(i) as UnusedAppPref
- val contains = categorizedPackages[Months.THREE]?.any { (pkgName, user, _) ->
- val key = createKey(pkgName, user)
- pref.key == key
- }
+ val contains =
+ categorizedPackages[period]?.any { (pkgName, user, _) ->
+ val key = createKey(pkgName, user)
+ pref.key == key
+ }
if (contains != true) {
removedPrefs[pref.key] = pref
}
@@ -192,13 +203,12 @@ class UnusedAppsFragment<PF, UnusedAppPref> : Fragment()
}
var allCategoriesEmpty = true
- for ((month, packages) in categorizedPackages) {
- val category = preferenceScreen.findPreference<PreferenceCategory>(month.value)!!
- category.title = if (month == Months.THREE) {
- getString(R.string.last_opened_category_title, "3")
- } else {
- getString(R.string.last_opened_category_title, "6")
- }
+ for ((period, packages) in categorizedPackages) {
+ val category = preferenceScreen.findPreference<PreferenceCategory>(period.name)!!
+ val months = period.months
+ category.title =
+ MessageFormat.format(getString(R.string.last_opened_category_title),
+ mapOf("count" to months))
category.isVisible = packages.isNotEmpty()
if (packages.isNotEmpty()) {
allCategoriesEmpty = false
@@ -251,17 +261,18 @@ class UnusedAppsFragment<PF, UnusedAppPref> : Fragment()
preferenceFragment.setEmptyState(allCategoriesEmpty)
if (isFirstLoad) {
- if (categorizedPackages[Months.SIX]!!.isNotEmpty() ||
- categorizedPackages[Months.THREE]!!.isNotEmpty()) {
+ if (categorizedPackages.any { (_, packages) ->
+ packages!!.isNotEmpty()
+ }) {
isFirstLoad = false
}
Log.i(LOG_TAG, "sessionId: $sessionId Showed Auto Revoke Page")
- for (month in Months.values()) {
- Log.i(LOG_TAG, "sessionId: $sessionId $month unused: " +
- "${categorizedPackages[month]}")
- for (revokedPackageInfo in categorizedPackages[month]!!) {
+ for (period in allPeriods) {
+ Log.i(LOG_TAG, "sessionId: $sessionId $period unused: " +
+ "${categorizedPackages[period]}")
+ for (revokedPackageInfo in categorizedPackages[period]!!) {
for (groupName in revokedPackageInfo.revokedGroups) {
- val isNewlyRevoked = month == Months.THREE
+ val isNewlyRevoked = period.isNewlyUnused()
viewModel.logAppView(revokedPackageInfo.packageName,
revokedPackageInfo.user, groupName, isNewlyRevoked)
}
@@ -330,7 +341,7 @@ class UnusedAppsFragment<PF, UnusedAppPref> : Fragment()
* Interface that the parent fragment must implement.
*/
interface Parent<UnusedAppPref> where UnusedAppPref : Preference,
- UnusedAppPref : RemovablePref {
+ UnusedAppPref : RemovablePref {
/**
* Set the title of the current settings page.
@@ -364,7 +375,7 @@ class UnusedAppsFragment<PF, UnusedAppPref> : Fragment()
fun createUnusedAppPref(
app: Application,
packageName: String,
- user: UserHandle
+ user: UserHandle,
): UnusedAppPref
/**
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/UnusedAppsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/UnusedAppsViewModel.kt
index 463b7960e..1b79e9337 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/UnusedAppsViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/UnusedAppsViewModel.kt
@@ -17,6 +17,7 @@
package com.android.permissioncontroller.permission.ui.model
import android.app.Application
+import android.app.usage.UsageStats
import android.content.Intent
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
@@ -33,16 +34,20 @@ import com.android.permissioncontroller.PermissionControllerStatsLog.AUTO_REVOKE
import com.android.permissioncontroller.PermissionControllerStatsLog.AUTO_REVOKE_FRAGMENT_APP_VIEWED
import com.android.permissioncontroller.PermissionControllerStatsLog.AUTO_REVOKE_FRAGMENT_APP_VIEWED__AGE__NEWER_BUCKET
import com.android.permissioncontroller.PermissionControllerStatsLog.AUTO_REVOKE_FRAGMENT_APP_VIEWED__AGE__OLDER_BUCKET
+import com.android.permissioncontroller.hibernation.lastTimePackageUsed
import com.android.permissioncontroller.permission.data.AllPackageInfosLiveData
import com.android.permissioncontroller.permission.data.SmartAsyncMediatorLiveData
import com.android.permissioncontroller.permission.data.UsageStatsLiveData
import com.android.permissioncontroller.permission.data.getUnusedPackages
+import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo
import com.android.permissioncontroller.permission.utils.IPC
import com.android.permissioncontroller.permission.utils.Utils
+import kotlin.time.Duration
+import kotlin.time.Duration.Companion.days
+import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
-import java.util.concurrent.TimeUnit.DAYS
/**
* UnusedAppsViewModel for the AutoRevokeFragment. Has a livedata which provides all unused apps,
@@ -51,18 +56,31 @@ import java.util.concurrent.TimeUnit.DAYS
class UnusedAppsViewModel(private val app: Application, private val sessionId: Long) : ViewModel() {
companion object {
- private val SIX_MONTHS_MILLIS = DAYS.toMillis(180)
+ private val MAX_UNUSED_PERIOD_MILLIS =
+ UnusedPeriod.allPeriods.maxByOrNull(UnusedPeriod::duration)!!.duration.inWholeMilliseconds
private val LOG_TAG = AppPermissionViewModel::class.java.simpleName
}
- enum class Months(val value: String) {
- THREE("three_months"),
- SIX("six_months");
+ enum class UnusedPeriod(val duration: Duration) {
+ ONE_MONTH(30.days),
+ THREE_MONTHS(90.days),
+ SIX_MONTHS(180.days);
+
+ val months: Int = (duration.inWholeDays / 30).toInt()
+
+ inline fun isNewlyUnused(): Boolean {
+ return (this == ONE_MONTH) || (this == THREE_MONTHS)
+ }
companion object {
- @JvmStatic
- fun allMonths(): List<Months> {
- return listOf(THREE, SIX)
+
+ val allPeriods: List<UnusedPeriod> = values().toList()
+
+ // Find the longest period shorter than unused time
+ fun findLongestValidPeriod(durationInMs: Long): UnusedPeriod {
+ val duration = durationInMs.milliseconds
+ return UnusedPeriod.allPeriods.findLast { duration > it.duration }
+ ?: UnusedPeriod.allPeriods.first()
}
}
}
@@ -71,14 +89,17 @@ class UnusedAppsViewModel(private val app: Application, private val sessionId: L
val packageName: String,
val user: UserHandle,
val isSystemApp: Boolean,
- val revokedGroups: Set<String>
+ val revokedGroups: Set<String>,
)
- val unusedPackageCategoriesLiveData = object
- : SmartAsyncMediatorLiveData<Map<Months, List<UnusedPackageInfo>>>(
+ private data class PackageLastUsageTime(val packageName: String, val usageTime: Long)
+
+ val unusedPackageCategoriesLiveData =
+ object : SmartAsyncMediatorLiveData<Map<UnusedPeriod, List<UnusedPackageInfo>>>(
alwaysUpdateOnActive = false
) {
- private val usageStatsLiveData = UsageStatsLiveData[SIX_MONTHS_MILLIS]
+ // Get apps usage stats from the longest interesting period (MAX_UNUSED_PERIOD_MILLIS)
+ private val usageStatsLiveData = UsageStatsLiveData[MAX_UNUSED_PERIOD_MILLIS]
init {
addSource(getUnusedPackages()) {
@@ -96,74 +117,79 @@ class UnusedAppsViewModel(private val app: Application, private val sessionId: L
override suspend fun loadDataAndPostValue(job: Job) {
if (!getUnusedPackages().isInitialized ||
- !usageStatsLiveData.isInitialized || !AllPackageInfosLiveData.isInitialized) {
+ !usageStatsLiveData.isInitialized || !AllPackageInfosLiveData.isInitialized
+ ) {
return
}
val unusedApps = getUnusedPackages().value!!
Log.i(LOG_TAG, "Unused apps: $unusedApps")
- val overSixMonthApps = unusedApps.keys.toMutableSet()
- val categorizedApps = mutableMapOf<Months, MutableList<UnusedPackageInfo>>()
- categorizedApps[Months.THREE] = mutableListOf()
- categorizedApps[Months.SIX] = mutableListOf()
-
- // Get all packages which cannot be uninstalled.
- val systemApps = mutableListOf<Pair<String, UserHandle>>()
- for ((user, packageList) in AllPackageInfosLiveData.value!!) {
- systemApps.addAll(packageList.mapNotNull { packageInfo ->
- val key = packageInfo.packageName to user
- if (unusedApps.contains(key) &&
- (packageInfo.appFlags and ApplicationInfo.FLAG_SYSTEM) != 0) {
- key
- } else {
- null
- }
- })
+ val categorizedApps = mutableMapOf<UnusedPeriod, MutableList<UnusedPackageInfo>>()
+ for (period in UnusedPeriod.allPeriods) {
+ categorizedApps[period] = mutableListOf()
}
- val now = System.currentTimeMillis()
- for ((user, stats) in usageStatsLiveData.value!!) {
- for (stat in stats) {
- val statPackage = stat.packageName to user
- if (!unusedApps.contains(statPackage)) {
- continue
- }
-
- categorizedApps[Months.THREE]!!.add(
- UnusedPackageInfo(stat.packageName, user,
- systemApps.contains(statPackage), unusedApps[statPackage]!!))
- overSixMonthApps.remove(statPackage)
+ // Get all packages which cannot be uninstalled.
+ val systemApps = getUnusedSystemApps(AllPackageInfosLiveData.value!!, unusedApps)
+ val lastUsedDataUnusedApps =
+ extractUnusedAppsUsageData(usageStatsLiveData.value!!, unusedApps)
+ { it: UsageStats ->
+ PackageLastUsageTime(it.packageName, it.lastTimePackageUsed())
}
- }
-
- // If we didn't find the stat for a package in our six month search, it is more than
- // 6 months old, or the app has never been opened.
- overSixMonthApps.forEach { (packageName, user) ->
- var installTime: Long = 0
- for (pI in AllPackageInfosLiveData.value!![user]!!) {
- if (pI.packageName == packageName) {
- installTime = pI.firstInstallTime
- }
+ val firstInstallDataUnusedApps =
+ extractUnusedAppsUsageData(AllPackageInfosLiveData.value!!, unusedApps)
+ { it: LightPackageInfo ->
+ PackageLastUsageTime(it.packageName, it.firstInstallTime)
}
- // Check if the app was installed less than six months ago, and never opened
- val months = if (now - installTime <= SIX_MONTHS_MILLIS) {
- Months.THREE
- } else {
- Months.SIX
- }
+ val now = System.currentTimeMillis()
+ unusedApps.keys.forEach { (packageName, user) ->
val userPackage = packageName to user
- categorizedApps[months]!!.add(
- UnusedPackageInfo(packageName, user, systemApps.contains(userPackage),
- unusedApps[userPackage]!!))
+
+ // If we didn't find the stat for a package in our usageStats search, it is more than
+ // 6 months old, or the app has never been opened. Then use first install date instead.
+ var lastUsageTime =
+ lastUsedDataUnusedApps[userPackage] ?: firstInstallDataUnusedApps[
+ userPackage] ?: 0L
+
+ val period = UnusedPeriod.findLongestValidPeriod(now - lastUsageTime)
+ categorizedApps[period]!!.add(
+ UnusedPackageInfo(
+ packageName, user, systemApps.contains(userPackage),
+ unusedApps[userPackage]!!
+ )
+ )
}
postValue(categorizedApps)
}
}
- fun areUnusedPackagesLoaded(): Boolean {
- return getUnusedPackages().isInitialized
+ // Extract UserPackage information for unused system apps from source map.
+ private fun getUnusedSystemApps(
+ userPackages: Map<UserHandle, List<LightPackageInfo>>,
+ unusedApps: Map<UserPackage, Set<String>>,
+ ): List<UserPackage> {
+ return userPackages.flatMap { (userHandle, packageList) ->
+ packageList.filter { (it.appFlags and ApplicationInfo.FLAG_SYSTEM) != 0 }
+ .map { it.packageName to userHandle }
+ }.filter { unusedApps.contains(it) }
+ }
+
+ /**
+ * Extract PackageLastUsageTime for unused apps from userPackages map. This method may be used
+ * for extracting different usage time (such as installation time or last opened time) from
+ * different Package structures
+ */
+ private fun <PackageData> extractUnusedAppsUsageData(
+ userPackages: Map<UserHandle, List<PackageData>>,
+ unusedApps: Map<UserPackage, Set<String>>,
+ extractUsageData: (fullData: PackageData) -> PackageLastUsageTime,
+ ): Map<UserPackage, Long> {
+ return userPackages.flatMap { (userHandle, fullData) ->
+ fullData.map { userHandle to extractUsageData(it) }
+ }.associate { (handle, appData) -> (appData.packageName to handle) to appData.usageTime }
+ .filterKeys { unusedApps.contains(it) }
}
fun navigateToAppInfo(packageName: String, user: UserHandle, sessionId: Long) {
@@ -195,8 +221,8 @@ class UnusedAppsViewModel(private val app: Application, private val sessionId: L
private fun logAppInteraction(packageName: String, user: UserHandle, action: Int) {
GlobalScope.launch(IPC) {
// If we are logging an app interaction, then the AllPackageInfosLiveData is not stale.
- val uid = AllPackageInfosLiveData.value?.get(user)?.find {
- info -> info.packageName == packageName }?.uid
+ val uid = AllPackageInfosLiveData.value?.get(user)
+ ?.find { info -> info.packageName == packageName }?.uid
if (uid != null) {
PermissionControllerStatsLog.write(AUTO_REVOKED_APP_INTERACTION, sessionId,
@@ -207,8 +233,9 @@ class UnusedAppsViewModel(private val app: Application, private val sessionId: L
fun logAppView(packageName: String, user: UserHandle, groupName: String, isNew: Boolean) {
GlobalScope.launch(IPC) {
- val uid = AllPackageInfosLiveData.value!![user]!!.find {
- info -> info.packageName == packageName }?.uid
+ val uid = AllPackageInfosLiveData.value!![user]!!.find { info ->
+ info.packageName == packageName
+ }?.uid
if (uid != null) {
val bucket = if (isNew) {
@@ -223,13 +250,15 @@ class UnusedAppsViewModel(private val app: Application, private val sessionId: L
}
}
+typealias UserPackage = Pair<String, UserHandle>
+
class UnusedAppsViewModelFactory(
private val app: Application,
- private val sessionId: Long
+ private val sessionId: Long,
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@Suppress("UNCHECKED_CAST")
return UnusedAppsViewModel(app, sessionId) as T
}
-} \ No newline at end of file
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt b/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
index 82ad2494b..3ab0a83fc 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
@@ -976,8 +976,8 @@ object KotlinUtils {
val appOpName = permissionToOp(foregroundPermName) ?: continue
if (fgPerm != null && fgPerm.isGrantedIncludingAppOp) {
- wasChanged = wasChanged || setOpMode(appOpName, uid, packageName, MODE_ALLOWED,
- appOpsManager)
+ wasChanged = setOpMode(appOpName, uid, packageName, MODE_ALLOWED,
+ appOpsManager) || wasChanged
}
}
} else {
diff --git a/PermissionController/src/com/android/permissioncontroller/privacysources/AccessibilitySourceService.kt b/PermissionController/src/com/android/permissioncontroller/privacysources/AccessibilitySourceService.kt
index 1fe1efc6a..fa600baa9 100644
--- a/PermissionController/src/com/android/permissioncontroller/privacysources/AccessibilitySourceService.kt
+++ b/PermissionController/src/com/android/permissioncontroller/privacysources/AccessibilitySourceService.kt
@@ -416,6 +416,11 @@ class AccessibilitySourceService(
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
intent.putExtra(Constants.EXTRA_SESSION_ID, sessionId)
intent.putExtra(Intent.EXTRA_UID, uid)
+
+ // Start this Settings activity using the same UX that settings slices uses. This allows
+ // settings to correctly support 2-pane layout with as-best-as-possible transition
+ // animation.
+ intent.putExtra(EXTRA_IS_FROM_SLICE, true)
return PendingIntent.getActivity(
context,
0,
@@ -644,6 +649,7 @@ class AccessibilitySourceService(
private const val PROPERTY_SC_ACCESSIBILITY_JOB_INTERVAL_MILLIS =
"sc_accessibility_job_interval_millis"
private val DEFAULT_SC_ACCESSIBILITY_JOB_INTERVAL_MILLIS = TimeUnit.DAYS.toMillis(1)
+ private val EXTRA_IS_FROM_SLICE = "is_from_slice"
private val sourceStateChanged = SafetyEvent.Builder(
SafetyEvent.SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build()
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusAnimationSequencer.kt b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusAnimationSequencer.kt
new file mode 100644
index 000000000..c48ad734b
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusAnimationSequencer.kt
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.permissioncontroller.safetycenter.ui
+
+import android.safetycenter.SafetyCenterStatus.OVERALL_SEVERITY_LEVEL_UNKNOWN
+
+/**
+ * Controls the animation flow and hold all the data necessary to determine the appearance of Status
+ * icon of [SafetyStatusPreference]. For each lifecycle event (such as [onUpdateReceived],
+ * [onStartScanningAnimationStart], [onStartScanningAnimationEnd], etc.) it changes its internal
+ * state and may provide a presentation instruction in the form of [Action].
+ */
+internal class SafetyStatusAnimationSequencer {
+
+ private var isIconChangeAnimationRunning: Boolean = false
+ private var isScanAnimationRunning: Boolean = false
+ private var shouldStartScanAnimation: Boolean = false
+ private var queuedIconChangeAnimationSeverityLevel: Int? = null
+ /**
+ * Stores the last known Severity Level that user could observe as a static status image, as
+ * scan animation, or as the beginning state of a changing status animation.
+ */
+ private var currentlyVisibleSeverityLevel: Int = OVERALL_SEVERITY_LEVEL_UNKNOWN
+
+ fun getCurrentlyVisibleSeverityLevel(): Int {
+ return currentlyVisibleSeverityLevel
+ }
+
+ fun onUpdateReceived(isRefreshInProgress: Boolean, severityLevel: Int): Action? {
+ if (isRefreshInProgress) {
+ if (isIconChangeAnimationRunning) {
+ shouldStartScanAnimation = true
+ return null
+ } else if (!isScanAnimationRunning) {
+ currentlyVisibleSeverityLevel = severityLevel
+ return Action.START_SCANNING_ANIMATION
+ }
+ // isRefreshInProgress && isScanAnimationRunning && !isIconChangeAnimationRunning
+ // Next action needs to wait for onStartScanningAnimationEnd or
+ // onContinueScanningAnimationEnd not to break currently running animation.
+ return null
+ } else {
+ val isDifferentSeverityQueued =
+ queuedIconChangeAnimationSeverityLevel != null &&
+ queuedIconChangeAnimationSeverityLevel != severityLevel
+ val shouldChangeIcon =
+ currentlyVisibleSeverityLevel != severityLevel || isDifferentSeverityQueued
+
+ if (isIconChangeAnimationRunning || shouldChangeIcon && isScanAnimationRunning) {
+ queuedIconChangeAnimationSeverityLevel = severityLevel
+ }
+ if (isScanAnimationRunning) {
+ return Action.FINISH_SCANNING_ANIMATION
+ } else if (shouldChangeIcon && !isIconChangeAnimationRunning) {
+ return Action.START_ICON_CHANGE_ANIMATION
+ } else if (!isIconChangeAnimationRunning) {
+ // Possible if status was finalized by Safety Center at the beginning,
+ // when no scanning animation is launched and refresh is not in progress.
+ // In this case we need to show the final icon straigt away without any animations.
+ return Action.CHANGE_ICON_WITHOUT_ANIMATION
+ }
+ // !isRefreshInProgress && !isScanAnimationRunning && isIconChangeAnimationRunning
+ // Next action needs to wait for onIconChangeAnimationEnd not to break currently
+ // running animation.
+ return null
+ }
+ }
+
+ fun onStartScanningAnimationStart() {
+ isScanAnimationRunning = true
+ }
+
+ fun onStartScanningAnimationEnd(): Action {
+ return Action.CONTINUE_SCANNING_ANIMATION
+ }
+
+ fun onContinueScanningAnimationEnd(isRefreshInProgress: Boolean, severityLevel: Int): Action? {
+ if (isRefreshInProgress) {
+ if (currentlyVisibleSeverityLevel != severityLevel) {
+ // onUpdateReceived does not handle this case since we should not break
+ // the animation while it is running. Once current scan cycle is finished, this
+ // call will return the request to restart animation with updated severity level.
+ currentlyVisibleSeverityLevel = severityLevel
+ return Action.RESET_SCANNING_ANIMATION
+ } else {
+ return Action.CONTINUE_SCANNING_ANIMATION
+ }
+ } else {
+ // Possible if scanning animation has been ended right after status is updated with
+ // final data, but before we got the onUpdateReceived call (that is posted to the
+ // message queue and will happen soon), so no need to do anything right now.
+ return null
+ }
+ }
+
+ fun onFinishScanAnimationEnd(isRefreshing: Boolean, severityLevel: Int): Action {
+ isScanAnimationRunning = false
+ currentlyVisibleSeverityLevel = severityLevel
+ return handleQueuedAction(isRefreshing, severityLevel)
+ }
+
+ fun onCouldNotStartIconChangeAnimation(isRefreshing: Boolean, severityLevel: Int): Action {
+ return handleQueuedAction(isRefreshing, severityLevel)
+ }
+
+ fun onIconChangeAnimationStart() {
+ isIconChangeAnimationRunning = true
+ }
+
+ fun onIconChangeAnimationEnd(isRefreshing: Boolean, severityLevel: Int): Action {
+ isIconChangeAnimationRunning = false
+ currentlyVisibleSeverityLevel = severityLevel
+ return handleQueuedAction(isRefreshing, severityLevel)
+ }
+
+ private fun handleQueuedAction(isRefreshing: Boolean, severityLevel: Int): Action {
+ if (shouldStartScanAnimation) {
+ shouldStartScanAnimation = false
+ if (isRefreshing) {
+ return Action.START_SCANNING_ANIMATION
+ } else {
+ return handleQueuedAction(isRefreshing, severityLevel)
+ }
+ } else if (queuedIconChangeAnimationSeverityLevel != null) {
+ val queuedSeverityLevel = queuedIconChangeAnimationSeverityLevel
+ queuedIconChangeAnimationSeverityLevel = null
+ if (currentlyVisibleSeverityLevel != queuedSeverityLevel) {
+ return Action.START_ICON_CHANGE_ANIMATION
+ } else {
+ return handleQueuedAction(isRefreshing, severityLevel)
+ }
+ }
+ currentlyVisibleSeverityLevel = severityLevel
+ return Action.CHANGE_ICON_WITHOUT_ANIMATION
+ }
+
+ /** Set of instructions of what should Status icon currently show. */
+ enum class Action {
+ START_SCANNING_ANIMATION,
+ /**
+ * Requests to continue the scanning animation with the same Severity Level as stored in
+ * [currentlyVisibleSeverityLevel].
+ */
+ CONTINUE_SCANNING_ANIMATION,
+ /**
+ * Requests to start scanning animation from the beginning when
+ * [currentlyVisibleSeverityLevel] has been changed.
+ */
+ RESET_SCANNING_ANIMATION,
+ FINISH_SCANNING_ANIMATION,
+ START_ICON_CHANGE_ANIMATION,
+ CHANGE_ICON_WITHOUT_ANIMATION
+ }
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusPreference.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusPreference.java
index f081017b4..a46501a21 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusPreference.java
@@ -82,12 +82,8 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
setLayoutResource(R.layout.preference_safety_status);
}
- private boolean mIsScanAnimationRunning;
- private boolean mIsIconChangeAnimationRunning;
private boolean mIsTextChangeAnimationRunning;
- private int mQueuedScanAnimationSeverityLevel;
- private int mQueuedIconAnimationSeverityLevel;
- private int mSettledSeverityLevel = OVERALL_SEVERITY_LEVEL_UNKNOWN;
+ private final SafetyStatusAnimationSequencer mSequencer = new SafetyStatusAnimationSequencer();
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
@@ -150,7 +146,7 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
holder.itemView.getPaddingStart(),
holder.itemView.getPaddingTop(),
holder.itemView.getPaddingEnd(),
- /* bottom = */ getContext()
+ /* bottom= */ getContext()
.getResources()
.getDimensionPixelSize(R.dimen.sc_card_margin_bottom));
} else {
@@ -158,7 +154,7 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
holder.itemView.getPaddingStart(),
holder.itemView.getPaddingTop(),
holder.itemView.getPaddingEnd(),
- /* bottom = */ 0);
+ /* bottom= */ 0);
}
}
@@ -172,29 +168,13 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
private void updateStatusIcon(ImageView statusImage, View rescanButton) {
int severityLevel = mStatus.getSeverityLevel();
-
boolean isRefreshing = isRefreshInProgress();
- boolean shouldStartScanAnimation = isRefreshing && !mIsScanAnimationRunning;
- boolean shouldEndScanAnimation = !isRefreshing && mIsScanAnimationRunning;
- boolean shouldChangeIcon = mSettledSeverityLevel != severityLevel;
-
- if (shouldStartScanAnimation && !mIsIconChangeAnimationRunning) {
- mSettledSeverityLevel = severityLevel;
- startScanningAnimation(statusImage);
- } else if (shouldStartScanAnimation) {
- mQueuedScanAnimationSeverityLevel = severityLevel;
- } else if (mIsScanAnimationRunning && shouldChangeIcon) {
- mSettledSeverityLevel = severityLevel;
- continueScanningAnimation(statusImage);
- } else if (shouldEndScanAnimation) {
- endScanningAnimation(statusImage, rescanButton);
- } else if (shouldChangeIcon && !mIsScanAnimationRunning) {
- startIconChangeAnimation(statusImage);
- } else if (shouldChangeIcon) {
- mQueuedIconAnimationSeverityLevel = severityLevel;
- } else if (!mIsScanAnimationRunning && !mIsIconChangeAnimationRunning) {
- setSettledStatus(statusImage);
- }
+
+ handleAnimationSequencerAction(
+ mSequencer.onUpdateReceived(isRefreshing, severityLevel),
+ statusImage,
+ rescanButton,
+ /* scanningAnimation= */ null);
}
private void runTextAnimationIfNeeded(TextView titleView, TextView summaryView) {
@@ -205,10 +185,11 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
String summaryText = getSummaryText().toString();
boolean titleEquals = titleView.getText().toString().equals(titleText);
boolean summaryEquals = summaryView.getText().toString().equals(summaryText);
- Runnable onFinish = () -> {
- mIsTextChangeAnimationRunning = false;
- runTextAnimationIfNeeded(titleView, summaryView);
- };
+ Runnable onFinish =
+ () -> {
+ mIsTextChangeAnimationRunning = false;
+ runTextAnimationIfNeeded(titleView, summaryView);
+ };
mIsTextChangeAnimationRunning = !titleEquals || !summaryEquals;
if (!titleEquals && !summaryEquals) {
Pair<TextView, String> titleChange = new Pair<>(titleView, titleText);
@@ -235,22 +216,27 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
|| refreshStatus == SafetyCenterStatus.REFRESH_STATUS_DATA_FETCH_IN_PROGRESS;
}
- private void startScanningAnimation(ImageView statusImage) {
- mIsScanAnimationRunning = true;
+ private void startScanningAnimation(ImageView statusImage, View rescanButton) {
+ mSequencer.onStartScanningAnimationStart();
statusImage.setImageResource(
- StatusAnimationResolver.getScanningStartAnimation(mSettledSeverityLevel));
+ StatusAnimationResolver.getScanningStartAnimation(
+ mSequencer.getCurrentlyVisibleSeverityLevel()));
AnimatedVectorDrawable animation = (AnimatedVectorDrawable) statusImage.getDrawable();
animation.registerAnimationCallback(
new Animatable2.AnimationCallback() {
@Override
public void onAnimationEnd(Drawable drawable) {
- continueScanningAnimation(statusImage);
+ handleAnimationSequencerAction(
+ mSequencer.onStartScanningAnimationEnd(),
+ statusImage,
+ rescanButton,
+ /* scanningAnimation= */ null);
}
});
animation.start();
}
- private void continueScanningAnimation(ImageView statusImage) {
+ private void continueScanningAnimation(ImageView statusImage, View rescanButton) {
// clear previous scan animation in case we need to continue with different severity level
Drawable statusDrawable = statusImage.getDrawable();
if (statusDrawable instanceof AnimatedVectorDrawable) {
@@ -258,17 +244,19 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
}
statusImage.setImageResource(
- StatusAnimationResolver.getScanningAnimation(mSettledSeverityLevel));
+ StatusAnimationResolver.getScanningAnimation(
+ mSequencer.getCurrentlyVisibleSeverityLevel()));
AnimatedVectorDrawable scanningAnim = (AnimatedVectorDrawable) statusImage.getDrawable();
scanningAnim.registerAnimationCallback(
new Animatable2.AnimationCallback() {
@Override
public void onAnimationEnd(Drawable drawable) {
- if (mIsScanAnimationRunning && isRefreshInProgress()) {
- scanningAnim.start();
- } else {
- scanningAnim.clearAnimationCallbacks();
- }
+ handleAnimationSequencerAction(
+ mSequencer.onContinueScanningAnimationEnd(
+ isRefreshInProgress(), mStatus.getSeverityLevel()),
+ statusImage,
+ rescanButton,
+ scanningAnim);
}
});
scanningAnim.start();
@@ -276,18 +264,19 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
private void endScanningAnimation(ImageView statusImage, View rescanButton) {
Drawable statusDrawable = statusImage.getDrawable();
+ int finishingSeverityLevel = mStatus.getSeverityLevel();
if (!(statusDrawable instanceof AnimatedVectorDrawable)) {
- finishScanAnimation(statusImage, rescanButton);
+ finishScanAnimation(statusImage, rescanButton, finishingSeverityLevel);
return;
}
AnimatedVectorDrawable animatedStatusDrawable = (AnimatedVectorDrawable) statusDrawable;
if (!animatedStatusDrawable.isRunning()) {
- finishScanAnimation(statusImage, rescanButton);
+ finishScanAnimation(statusImage, rescanButton, finishingSeverityLevel);
return;
}
- int scanningSeverityLevel = mSettledSeverityLevel;
+ int scanningSeverityLevel = mSequencer.getCurrentlyVisibleSeverityLevel();
animatedStatusDrawable.clearAnimationCallbacks();
animatedStatusDrawable.registerAnimationCallback(
new Animatable2.AnimationCallback() {
@@ -295,7 +284,7 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
public void onAnimationEnd(Drawable drawable) {
statusImage.setImageResource(
StatusAnimationResolver.getScanningEndAnimation(
- scanningSeverityLevel, mStatus.getSeverityLevel()));
+ scanningSeverityLevel, finishingSeverityLevel));
AnimatedVectorDrawable animatedDrawable =
(AnimatedVectorDrawable) statusImage.getDrawable();
animatedDrawable.registerAnimationCallback(
@@ -304,7 +293,7 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
public void onAnimationEnd(Drawable drawable) {
super.onAnimationEnd(drawable);
finishScanAnimation(
- statusImage, rescanButton);
+ statusImage, rescanButton, finishingSeverityLevel);
}
});
animatedDrawable.start();
@@ -312,22 +301,31 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
});
}
- private void finishScanAnimation(ImageView statusImage, View rescanButton) {
- mIsScanAnimationRunning = false;
+ private void finishScanAnimation(
+ ImageView statusImage, View rescanButton, int finishedSeverityLevel) {
setRescanButtonState(rescanButton);
- setSettledStatus(statusImage);
- handleQueuedAction(statusImage);
+ handleAnimationSequencerAction(
+ mSequencer.onFinishScanAnimationEnd(isRefreshInProgress(), finishedSeverityLevel),
+ statusImage,
+ rescanButton,
+ /* scanningAnimation= */ null);
}
- private void startIconChangeAnimation(ImageView statusImage) {
+ private void startIconChangeAnimation(ImageView statusImage, View rescanButton) {
+ int finalSeverityLevel = mStatus.getSeverityLevel();
int changeAnimationResId =
StatusAnimationResolver.getStatusChangeAnimation(
- mSettledSeverityLevel, mStatus.getSeverityLevel());
+ mSequencer.getCurrentlyVisibleSeverityLevel(), finalSeverityLevel);
if (changeAnimationResId == 0) {
- setSettledStatus(statusImage);
+ handleAnimationSequencerAction(
+ mSequencer.onCouldNotStartIconChangeAnimation(
+ isRefreshInProgress(), finalSeverityLevel),
+ statusImage,
+ rescanButton,
+ /* scanningAnimation= */ null);
return;
}
- mIsIconChangeAnimationRunning = true;
+ mSequencer.onIconChangeAnimationStart();
statusImage.setImageResource(changeAnimationResId);
AnimatedVectorDrawable animation = (AnimatedVectorDrawable) statusImage.getDrawable();
animation.clearAnimationCallbacks();
@@ -335,32 +333,58 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
new Animatable2.AnimationCallback() {
@Override
public void onAnimationEnd(Drawable drawable) {
- mIsIconChangeAnimationRunning = false;
- setSettledStatus(statusImage);
- handleQueuedAction(statusImage);
+ handleAnimationSequencerAction(
+ mSequencer.onIconChangeAnimationEnd(
+ isRefreshInProgress(), finalSeverityLevel),
+ statusImage,
+ rescanButton,
+ /* scanningAnimation= */ null);
}
});
animation.start();
}
+ private void handleAnimationSequencerAction(
+ @Nullable SafetyStatusAnimationSequencer.Action action,
+ ImageView statusImage,
+ View rescanButton,
+ @Nullable AnimatedVectorDrawable scanningAnimation) {
+ if (action == null) {
+ return;
+ }
+ switch (action) {
+ case START_SCANNING_ANIMATION:
+ startScanningAnimation(statusImage, rescanButton);
+ break;
+ case CONTINUE_SCANNING_ANIMATION:
+ if (scanningAnimation != null) {
+ scanningAnimation.start();
+ } else {
+ continueScanningAnimation(statusImage, rescanButton);
+ }
+ break;
+ case RESET_SCANNING_ANIMATION:
+ continueScanningAnimation(statusImage, rescanButton);
+ break;
+ case FINISH_SCANNING_ANIMATION:
+ endScanningAnimation(statusImage, rescanButton);
+ break;
+ case START_ICON_CHANGE_ANIMATION:
+ startIconChangeAnimation(statusImage, rescanButton);
+ break;
+ case CHANGE_ICON_WITHOUT_ANIMATION:
+ setSettledStatus(statusImage);
+ break;
+ }
+ }
+
private void setSettledStatus(ImageView statusImage) {
Drawable statusDrawable = statusImage.getDrawable();
if (statusDrawable instanceof AnimatedVectorDrawable) {
((AnimatedVectorDrawable) statusDrawable).clearAnimationCallbacks();
}
-
- mSettledSeverityLevel = mStatus.getSeverityLevel();
- statusImage.setImageResource(toStatusImageResId(mSettledSeverityLevel));
- }
-
- private void handleQueuedAction(ImageView statusImage) {
- if (mQueuedScanAnimationSeverityLevel != 0) {
- mQueuedScanAnimationSeverityLevel = 0;
- startScanningAnimation(statusImage);
- } else if (mQueuedIconAnimationSeverityLevel != 0) {
- mQueuedIconAnimationSeverityLevel = 0;
- startIconChangeAnimation(statusImage);
- }
+ statusImage.setImageResource(
+ toStatusImageResId(mSequencer.getCurrentlyVisibleSeverityLevel()));
}
/**
diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetycenter/ui/SafetyStatusAnimationSequencerTest.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetycenter/ui/SafetyStatusAnimationSequencerTest.kt
new file mode 100644
index 000000000..84d5fe5d3
--- /dev/null
+++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/safetycenter/ui/SafetyStatusAnimationSequencerTest.kt
@@ -0,0 +1,359 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.permissioncontroller.tests.mocking.safetycenter.ui
+
+import android.os.Build
+import android.safetycenter.SafetyCenterStatus.OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING
+import android.safetycenter.SafetyCenterStatus.OVERALL_SEVERITY_LEVEL_UNKNOWN
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SdkSuppress
+import com.android.permissioncontroller.safetycenter.ui.SafetyStatusAnimationSequencer
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+@SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu")
+class SafetyStatusAnimationSequencerTest {
+
+ private val sequencer: SafetyStatusAnimationSequencer = SafetyStatusAnimationSequencer()
+
+ @Test
+ fun getCurrentlyVisibleSeverityLevel_returnsUnknown() {
+ assertThat(sequencer.getCurrentlyVisibleSeverityLevel())
+ .isEqualTo(OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ }
+
+ @Test
+ fun getCurrentlyVisibleSeverityLevel_refreshingWithCriticalSeverity_returnsCritical() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+ sequencer.onStartScanningAnimationStart()
+
+ assertThat(sequencer.getCurrentlyVisibleSeverityLevel())
+ .isEqualTo(OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+ }
+
+ @Test
+ fun getCurrentlyVisibleSeverityLevel_severityChangedToCriticalWhileRefreshing_returnsUnknown() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ assertThat(sequencer.getCurrentlyVisibleSeverityLevel())
+ .isEqualTo(OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ }
+
+ @Test
+ fun getCurrentlyVisibleSeverityLevel_refreshingStartedUnknownStoppedCritical_returnsUnknown() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ assertThat(sequencer.getCurrentlyVisibleSeverityLevel())
+ .isEqualTo(OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ }
+
+ @Test
+ fun getCurrentlyVisibleSeverityLevel_scanAnimationEndedAfterStoppedCritical_returnsCritical() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ sequencer.onFinishScanAnimationEnd(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ assertThat(sequencer.getCurrentlyVisibleSeverityLevel())
+ .isEqualTo(OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+ }
+
+ @Test
+ fun getCurrentlyVisibleSeverityLevel_continueScanEndedRefreshingCritical_returnsCritical() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ sequencer.onContinueScanningAnimationEnd(
+ REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ assertThat(sequencer.getCurrentlyVisibleSeverityLevel())
+ .isEqualTo(OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+ }
+
+ @Test
+ fun getCurrentlyVisibleSeverityLevel_continueScanEndedNotRefreshingCritical_returnsUnknown() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ sequencer.onContinueScanningAnimationEnd(
+ NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ assertThat(sequencer.getCurrentlyVisibleSeverityLevel())
+ .isEqualTo(OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ }
+
+ @Test
+ fun getCurrentlyVisibleSeverityLevel_iconChangeAnimationQueuedCritical_returnsUnknown() {
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ assertThat(sequencer.getCurrentlyVisibleSeverityLevel())
+ .isEqualTo(OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ }
+
+ @Test
+ fun getCurrentlyVisibleSeverityLevel_iconChangeAnimationEndedUnknown_returnsUnknown() {
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ sequencer.onIconChangeAnimationEnd(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+
+ assertThat(sequencer.getCurrentlyVisibleSeverityLevel())
+ .isEqualTo(OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ }
+
+ @Test
+ fun getCurrentlyVisibleSeverityLevel_iconChangeAnimationEndedCritical_returnsCritical() {
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ sequencer.onIconChangeAnimationEnd(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ assertThat(sequencer.getCurrentlyVisibleSeverityLevel())
+ .isEqualTo(OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+ }
+
+ @Test
+ fun onContinueScanningAnimationEnd_whileRefreshing_returnsContinueScanning() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+ sequencer.onStartScanningAnimationEnd()
+
+ assertThat(
+ sequencer.onContinueScanningAnimationEnd(
+ REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.CONTINUE_SCANNING_ANIMATION)
+ }
+
+ @Test
+ fun onContinueScanningAnimationEnd_afterRefreshingStoppedUnknown_returnsNull() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+ sequencer.onStartScanningAnimationEnd()
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+
+ assertThat(
+ sequencer.onContinueScanningAnimationEnd(
+ NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN))
+ .isNull()
+ }
+
+ @Test
+ fun onContinueScanningAnimationEnd_afterRefreshingStoppedCritical_returnsResetScanning() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+ sequencer.onStartScanningAnimationEnd()
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ assertThat(
+ sequencer.onContinueScanningAnimationEnd(
+ REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.RESET_SCANNING_ANIMATION)
+ }
+
+ @Test
+ fun onUpdateReceived_whileRefreshing_returnsStartScanning() {
+ assertThat(sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.START_SCANNING_ANIMATION)
+ }
+
+ @Test
+ fun onUpdateReceived_notRefreshingCriticalSeverityLevel_returnsStartIconChangeAnimation() {
+ assertThat(
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.START_ICON_CHANGE_ANIMATION)
+ }
+
+ @Test
+ fun onUpdateReceived_notRefreshingUnknownSeverityLevel_returnsChangeIcon() {
+ assertThat(sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.CHANGE_ICON_WITHOUT_ANIMATION)
+ }
+
+ @Test
+ fun onUpdateReceived_refreshingWhileIconChangeAnimationRunning_returnsNull() {
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+ sequencer.onIconChangeAnimationStart()
+
+ assertThat(sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING))
+ .isNull()
+ }
+
+ @Test
+ fun onUpdateReceived_UnknownSeverityWhileCriticalIconChangeAnimationRunning_returnsNull() {
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+ sequencer.onIconChangeAnimationStart()
+
+ assertThat(sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN))
+ .isNull()
+ }
+
+ @Test
+ fun onUpdateReceived_whileRefreshingWithSameSeverity_returnsNull() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+
+ assertThat(sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)).isNull()
+ }
+
+ @Test
+ fun onUpdateReceived_refreshingStoppedWtihSameSeverity_returnsFinishScanningAnimation() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+
+ assertThat(sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.FINISH_SCANNING_ANIMATION)
+ }
+
+ @Test
+ fun onUpdateReceived_whileRefreshingWithDifferentSeverity_returnsNull() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+
+ assertThat(sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING))
+ .isNull()
+ }
+
+ @Test
+ fun onUpdateReceived_refreshingStoppedWithDifferentSeverity_returnsFinishScanningAnimation() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+
+ assertThat(
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.FINISH_SCANNING_ANIMATION)
+ }
+
+ @Test
+ fun onStartScanningAnimationEnd_returnsContinueScanningAnimation() {
+ assertThat(sequencer.onStartScanningAnimationEnd())
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.CONTINUE_SCANNING_ANIMATION)
+ }
+
+ @Test
+ fun onFinishScanAnimationEnd_noIconChangeAnimationQueued_returnsChangeIcon() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+ sequencer.onStartScanningAnimationEnd()
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+
+ assertThat(
+ sequencer.onFinishScanAnimationEnd(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.CHANGE_ICON_WITHOUT_ANIMATION)
+ }
+
+ @Test
+ fun onFinishScanAnimationEnd_iconChangeAnimationQueuedWithSameSeverity_returnsChangeIcon() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+ sequencer.onStartScanningAnimationEnd()
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ assertThat(
+ sequencer.onFinishScanAnimationEnd(
+ NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.CHANGE_ICON_WITHOUT_ANIMATION)
+ }
+
+ @Test
+ fun onFinishScanAnimationEnd_iconChangeAnimationQueuedAfterRefreshing_returnsStartIconChange() {
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onStartScanningAnimationStart()
+ sequencer.onStartScanningAnimationEnd()
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ assertThat(
+ sequencer.onFinishScanAnimationEnd(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.START_ICON_CHANGE_ANIMATION)
+ }
+
+ @Test
+ fun onIconChangeAnimationEnd_noAnimationQueued_returnsChangeIcon() {
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+ sequencer.onIconChangeAnimationStart()
+
+ assertThat(
+ sequencer.onIconChangeAnimationEnd(
+ NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.CHANGE_ICON_WITHOUT_ANIMATION)
+ }
+
+ @Test
+ fun onIconChangeAnimationEnd_updateReceivedWithDifferentSeverity_returnsStartIconChange() {
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+ sequencer.onIconChangeAnimationStart()
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+
+ assertThat(
+ sequencer.onIconChangeAnimationEnd(
+ NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.START_ICON_CHANGE_ANIMATION)
+ }
+
+ @Test
+ fun onIconChangeAnimationEnd_updateReceivedWithSameSeverity_returnsChangeIcon() {
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+ sequencer.onIconChangeAnimationStart()
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_UNKNOWN)
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ assertThat(
+ sequencer.onIconChangeAnimationEnd(
+ NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.CHANGE_ICON_WITHOUT_ANIMATION)
+ }
+
+ @Test
+ fun onIconChangeAnimationEnd_scanAnimationQueued_returnsStartScanningAnimation() {
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+ sequencer.onIconChangeAnimationStart()
+ sequencer.onUpdateReceived(REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+
+ assertThat(
+ sequencer.onIconChangeAnimationEnd(
+ REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.START_SCANNING_ANIMATION)
+ }
+
+ @Test
+ fun onCouldNotStartIconChangeAnimation_noAnimationQueued_returnsChangeIcon() {
+ sequencer.onUpdateReceived(NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING)
+ sequencer.onIconChangeAnimationStart()
+
+ assertThat(
+ sequencer.onCouldNotStartIconChangeAnimation(
+ NOT_REFRESHING, OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING))
+ .isEqualTo(SafetyStatusAnimationSequencer.Action.CHANGE_ICON_WITHOUT_ANIMATION)
+ }
+
+ private companion object {
+ const val REFRESHING = true
+ const val NOT_REFRESHING = false
+ }
+}
diff --git a/SafetyCenter/Resources/res/values-ky/strings.xml b/SafetyCenter/Resources/res/values-ky/strings.xml
index ab1faa054..ca605b018 100644
--- a/SafetyCenter/Resources/res/values-ky/strings.xml
+++ b/SafetyCenter/Resources/res/values-ky/strings.xml
@@ -31,7 +31,7 @@
<string name="permission_usage_summary" msgid="5323079206029964468">"Уруксаттарды жакында кайсы колдонмолор колдонгонун көрө аласыз"</string>
<string name="permission_usage_search_terms" msgid="3852343592870257104">"Купуялык, Купуялык тактасы"</string>
<string name="permission_manager_title" msgid="5277347862821255015">"Уруксаттарды башкаргыч"</string>
- <string name="permission_manager_summary" msgid="8099852107340970790">"Колдонмолордун маалыматты колдонуу мүмкүнчүлүгүн көзөмөлдөө"</string>
+ <string name="permission_manager_summary" msgid="8099852107340970790">"Колдонмолорго маалыматыңыздын жеткиликтүүлүгүн көзөмөлдөйсүз"</string>
<string name="permission_manager_search_terms" msgid="2895147613099694722">"Уруксаттар, Уруксаттарды башкаргыч"</string>
<string name="privacy_controls_title" msgid="5322875777945432395">"Купуялыкты көзөмөлдөө каражаттары"</string>
<string name="privacy_controls_summary" msgid="2402066941190435424">"Түзмөктүн микрофонду, камераны жана башкаларды колдонуу мүмкүнчүлүгүн көзөмөлдөө"</string>
diff --git a/SafetyCenter/Resources/res/values-mr/strings.xml b/SafetyCenter/Resources/res/values-mr/strings.xml
index 86fc17f38..4b495bddd 100644
--- a/SafetyCenter/Resources/res/values-mr/strings.xml
+++ b/SafetyCenter/Resources/res/values-mr/strings.xml
@@ -31,7 +31,7 @@
<string name="permission_usage_summary" msgid="5323079206029964468">"कोणत्या ॲप्सनी अलीकडे परवानग्या वापरल्या ते दाखवा"</string>
<string name="permission_usage_search_terms" msgid="3852343592870257104">"गोपनीयता, गोपनीयता डॅशबोर्ड"</string>
<string name="permission_manager_title" msgid="5277347862821255015">"परवानगी व्यवस्थापक"</string>
- <string name="permission_manager_summary" msgid="8099852107340970790">"अ‍ॅपचा तुमचा डेटा अ‍ॅक्सेस नियंत्रित करा"</string>
+ <string name="permission_manager_summary" msgid="8099852107340970790">"तुमच्या डेटासाठीचा अ‍ॅप अ‍ॅक्सेस नियंत्रित करा"</string>
<string name="permission_manager_search_terms" msgid="2895147613099694722">"परवानग्या, परवानग्या व्यवस्थापक"</string>
<string name="privacy_controls_title" msgid="5322875777945432395">"गोपनीयता नियंत्रणे"</string>
<string name="privacy_controls_summary" msgid="2402066941190435424">"मायक्रोफोन, कॅमेरा आणि आणखी बऱ्याच ठिकणी डिव्हाइस अ‍ॅक्सेस नियंत्रित करा"</string>
diff --git a/SafetyCenter/Resources/res/values-th/strings.xml b/SafetyCenter/Resources/res/values-th/strings.xml
index 63656d7c8..5a899048f 100644
--- a/SafetyCenter/Resources/res/values-th/strings.xml
+++ b/SafetyCenter/Resources/res/values-th/strings.xml
@@ -28,7 +28,7 @@
<string name="privacy_sources_title" msgid="4061110826457365957">"ความเป็นส่วนตัว"</string>
<string name="privacy_sources_summary" msgid="4089719981155120864">"หน้าแดชบอร์ด สิทธิ์ การควบคุม"</string>
<string name="permission_usage_title" msgid="3633779688945350407">"แดชบอร์ดความเป็นส่วนตัว"</string>
- <string name="permission_usage_summary" msgid="5323079206029964468">"แสดงแอปที่ใช้สิทธิ์ล่าสุด"</string>
+ <string name="permission_usage_summary" msgid="5323079206029964468">"แสดงแอปล่าสุดที่ใช้สิทธิ์"</string>
<string name="permission_usage_search_terms" msgid="3852343592870257104">"ความเป็นส่วนตัว, แดชบอร์ดความเป็นส่วนตัว"</string>
<string name="permission_manager_title" msgid="5277347862821255015">"เครื่องมือจัดการสิทธิ์"</string>
<string name="permission_manager_summary" msgid="8099852107340970790">"ควมคุมสิทธิ์ของแอปในการเข้าถึงข้อมูล"</string>
diff --git a/SafetyCenter/Resources/shared_res/values-pt-rBR/strings.xml b/SafetyCenter/Resources/shared_res/values-pt-rBR/strings.xml
index f88eb6bd6..86aef8914 100644
--- a/SafetyCenter/Resources/shared_res/values-pt-rBR/strings.xml
+++ b/SafetyCenter/Resources/shared_res/values-pt-rBR/strings.xml
@@ -17,7 +17,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="scanning_title" msgid="5424849039854311398">"Verifican&amp;#173;do"</string>
+ <string name="scanning_title" msgid="5424849039854311398">"Verifican­‐do"</string>
<string name="loading_summary" msgid="3740846439782713910">"Verificando configurações do dispositivo…"</string>
<string name="overall_severity_level_ok_title" msgid="2041250138727564565">"Tudo certo"</string>
<string name="overall_severity_level_ok_summary" msgid="7219520381757200598">"Nenhum problema encontrado"</string>
diff --git a/SafetyCenter/Resources/shared_res/values-pt/strings.xml b/SafetyCenter/Resources/shared_res/values-pt/strings.xml
index f88eb6bd6..86aef8914 100644
--- a/SafetyCenter/Resources/shared_res/values-pt/strings.xml
+++ b/SafetyCenter/Resources/shared_res/values-pt/strings.xml
@@ -17,7 +17,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="scanning_title" msgid="5424849039854311398">"Verifican&amp;#173;do"</string>
+ <string name="scanning_title" msgid="5424849039854311398">"Verifican­‐do"</string>
<string name="loading_summary" msgid="3740846439782713910">"Verificando configurações do dispositivo…"</string>
<string name="overall_severity_level_ok_title" msgid="2041250138727564565">"Tudo certo"</string>
<string name="overall_severity_level_ok_summary" msgid="7219520381757200598">"Nenhum problema encontrado"</string>