[automerger skipped] Import translations. DO NOT MERGE ANYWHERE am: 16a0dc6f5d -s ours am: ece39a86ce -s ours

am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/providers/MediaProvider/+/13248416

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I25f5b6ab4955cf6953f356b4c5427d79a80a9ac4
diff --git a/Android.bp b/Android.bp
index e1ac31d..f1c92d5 100644
--- a/Android.bp
+++ b/Android.bp
@@ -39,6 +39,7 @@
     ],
 
     sdk_version: "module_current",
+    min_sdk_version: "30",
 
     certificate: "media",
     privileged: true,
@@ -83,6 +84,7 @@
         "src/com/android/providers/media/util/HandlerExecutor.java",
         "src/com/android/providers/media/util/Logging.java",
         "src/com/android/providers/media/util/MimeUtils.java",
+        "src/com/android/providers/media/playlist/*.java",
     ],
 }
 
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 305027b..e0b9983 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -25,6 +25,11 @@
     <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE"/>
     <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG"/>
 
+    <!-- Permissions required for reading device configs -->
+    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
+
+    <uses-permission android:name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND"/>
+
     <application
             android:name="com.android.providers.media.MediaApplication"
             android:label="@string/app_label"
@@ -52,7 +57,8 @@
         </provider>
 
         <!-- Handles database upgrades after OTAs, then disables itself -->
-        <receiver android:name="com.android.providers.media.MediaUpgradeReceiver">
+        <receiver android:name="com.android.providers.media.MediaUpgradeReceiver"
+            android:exported="true">
             <!-- This broadcast is sent after the core system has finished
                  booting, before the home app is launched or BOOT_COMPLETED
                  is sent. -->
@@ -61,7 +67,8 @@
             </intent-filter>
         </receiver>
 
-        <receiver android:name="com.android.providers.media.MediaReceiver">
+        <receiver android:name="com.android.providers.media.MediaReceiver"
+            android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.BOOT_COMPLETED" />
             </intent-filter>
@@ -94,6 +101,7 @@
             android:permission="android.permission.BIND_JOB_SERVICE" />
 
         <service android:name="com.android.providers.media.fuse.ExternalStorageServiceImpl"
+                 android:exported="true"
                  android:permission="android.permission.BIND_EXTERNAL_STORAGE_SERVICE">
             <intent-filter>
                 <action android:name="android.service.storage.ExternalStorageService" />
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 9d973e9..74ff71e 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -4,7 +4,12 @@
             "name": "MediaProviderTests"
         },
         {
-            "name": "MediaProviderClientTests"
+            "name": "MediaProviderClientTests",
+            "options": [
+                {
+                  "exclude-annotation": "androidx.test.filters.LargeTest"
+                }
+            ]
         },
         {
             "name": "CtsProviderTestCases",
@@ -20,10 +25,24 @@
             "name": "AdoptableHostTest"
         },
         {
+            "name": "CtsScopedStorageCoreHostTest"
+        },
+        {
             "name": "CtsScopedStorageHostTest"
         },
         {
+            "name": "CtsScopedStorageDeviceOnlyTest"
+        },
+        {
             "name": "fuse_node_test"
+        },
+        {
+            "name": "MediaProviderTranscodeTests"
+        }
+    ],
+    "postsubmit": [
+        {
+            "name": "MediaProviderClientTests"
         }
     ]
 }
diff --git a/apex/Android.bp b/apex/Android.bp
index c792c72..83abac2 100644
--- a/apex/Android.bp
+++ b/apex/Android.bp
@@ -12,6 +12,7 @@
     key: "com.android.mediaprovider.key",
     certificate: ":com.android.mediaprovider.certificate",
     file_contexts: ":com.android.mediaprovider-file_contexts",
+    min_sdk_version: "30",
 }
 
 apex_key {
diff --git a/apex/apex_manifest.json b/apex/apex_manifest.json
index ffef8fb..6d8da53 100644
--- a/apex/apex_manifest.json
+++ b/apex/apex_manifest.json
@@ -1,4 +1,4 @@
 {
   "name": "com.android.mediaprovider",
-  "version": 300000000
+  "version": 309999900
 }
diff --git a/apex/framework/Android.bp b/apex/framework/Android.bp
index cd2c5d1..14a6cb3 100644
--- a/apex/framework/Android.bp
+++ b/apex/framework/Android.bp
@@ -39,6 +39,7 @@
         "com.android.mediaprovider",
         "test_com.android.mediaprovider",
     ],
+    min_sdk_version: "30",
 }
 
 filegroup {
diff --git a/apex/framework/api/current.txt b/apex/framework/api/current.txt
index 52439fb..623780a 100644
--- a/apex/framework/api/current.txt
+++ b/apex/framework/api/current.txt
@@ -26,12 +26,14 @@
     field public static final String ACTION_VIDEO_CAPTURE = "android.media.action.VIDEO_CAPTURE";
     field public static final String AUTHORITY = "media";
     field @NonNull public static final android.net.Uri AUTHORITY_URI;
+    field public static final String EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMAT = "android.provider.extra.ACCEPT_ORIGINAL_MEDIA_FORMAT";
     field public static final String EXTRA_BRIGHTNESS = "android.provider.extra.BRIGHTNESS";
     field public static final String EXTRA_DURATION_LIMIT = "android.intent.extra.durationLimit";
     field public static final String EXTRA_FINISH_ON_COMPLETION = "android.intent.extra.finishOnCompletion";
     field public static final String EXTRA_FULL_SCREEN = "android.intent.extra.fullScreen";
     field public static final String EXTRA_MEDIA_ALBUM = "android.intent.extra.album";
     field public static final String EXTRA_MEDIA_ARTIST = "android.intent.extra.artist";
+    field public static final String EXTRA_MEDIA_CAPABILITIES = "android.provider.extra.MEDIA_CAPABILITIES";
     field public static final String EXTRA_MEDIA_FOCUS = "android.intent.extra.focus";
     field public static final String EXTRA_MEDIA_GENRE = "android.intent.extra.genre";
     field public static final String EXTRA_MEDIA_PLAYLIST = "android.intent.extra.playlist";
@@ -114,7 +116,7 @@
     field public static final android.net.Uri INTERNAL_CONTENT_URI;
   }
 
-  public static final class MediaStore.Audio.Artists.Albums implements android.provider.MediaStore.Audio.AlbumColumns {
+  public static final class MediaStore.Audio.Artists.Albums implements android.provider.BaseColumns android.provider.MediaStore.Audio.AlbumColumns {
     ctor public MediaStore.Audio.Artists.Albums();
     method public static android.net.Uri getContentUri(String, long);
   }
diff --git a/apex/framework/java/android/provider/MediaStore.java b/apex/framework/java/android/provider/MediaStore.java
index c27e09f..769f7ea 100644
--- a/apex/framework/java/android/provider/MediaStore.java
+++ b/apex/framework/java/android/provider/MediaStore.java
@@ -44,6 +44,7 @@
 import android.graphics.BitmapFactory;
 import android.graphics.ImageDecoder;
 import android.graphics.PostProcessor;
+import android.media.ApplicationMediaCapabilities;
 import android.media.ExifInterface;
 import android.media.MediaFormat;
 import android.media.MediaMetadataRetriever;
@@ -446,13 +447,17 @@
      * supply the uri through the EXTRA_OUTPUT field for compatibility with old applications.
      * If you don't set a ClipData, it will be copied there for you when calling
      * {@link Context#startActivity(Intent)}.
-     *
-     * <p>Note: if you app targets {@link android.os.Build.VERSION_CODES#M M} and above
+     * <p>
+     * Regardless of whether or not EXTRA_OUTPUT is present, when an image is captured via this
+     * intent, {@link android.hardware.Camera#ACTION_NEW_PICTURE} won't be broadcasted.
+     * <p>
+     * Note: if you app targets {@link android.os.Build.VERSION_CODES#M M} and above
      * and declares as using the {@link android.Manifest.permission#CAMERA} permission which
      * is not granted, then attempting to use this action will result in a {@link
      * java.lang.SecurityException}.
      *
      *  @see #EXTRA_OUTPUT
+     *  @see android.hardware.Camera#ACTION_NEW_PICTURE
      */
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
     public final static String ACTION_IMAGE_CAPTURE = "android.media.action.IMAGE_CAPTURE";
@@ -477,9 +482,13 @@
      * supply the uri through the EXTRA_OUTPUT field for compatibility with old applications.
      * If you don't set a ClipData, it will be copied there for you when calling
      * {@link Context#startActivity(Intent)}.
+     * <p>
+     * Regardless of whether or not EXTRA_OUTPUT is present, when an image is captured via this
+     * intent, {@link android.hardware.Camera#ACTION_NEW_PICTURE} won't be broadcasted.
      *
      * @see #ACTION_IMAGE_CAPTURE
      * @see #EXTRA_OUTPUT
+     * @see android.hardware.Camera#ACTION_NEW_PICTURE
      */
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
     public static final String ACTION_IMAGE_CAPTURE_SECURE =
@@ -492,14 +501,20 @@
      * The caller may pass in an extra EXTRA_VIDEO_QUALITY to control the video quality.
      * <p>
      * The caller may pass in an extra EXTRA_OUTPUT to control
-     * where the video is written. If EXTRA_OUTPUT is not present the video will be
-     * written to the standard location for videos, and the Uri of that location will be
-     * returned in the data field of the Uri.
-     * As of {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this uri can also be supplied through
-     * {@link android.content.Intent#setClipData(ClipData)}. If using this approach, you still must
-     * supply the uri through the EXTRA_OUTPUT field for compatibility with old applications.
-     * If you don't set a ClipData, it will be copied there for you when calling
-     * {@link Context#startActivity(Intent)}.
+     * where the video is written.
+     * <ul>
+     * <li>If EXTRA_OUTPUT is not present, the video will be written to the standard location
+     * for videos, and the Uri of that location will be returned in the data field of the Uri.
+     * {@link android.hardware.Camera#ACTION_NEW_VIDEO} will also be broadcasted when the video
+     * is recorded.
+     * <li>If EXTRA_OUTPUT is assigned a Uri value, no
+     * {@link android.hardware.Camera#ACTION_NEW_VIDEO} will be broadcasted. As of
+     * {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this uri can also be
+     * supplied through {@link android.content.Intent#setClipData(ClipData)}.  If using this
+     * approach, you still must supply the uri through the EXTRA_OUTPUT field for compatibility
+     * with old applications. If you don't set a ClipData, it will be copied there for you when
+     * calling {@link Context#startActivity(Intent)}.
+     * </ul>
      *
      * <p>Note: if you app targets {@link android.os.Build.VERSION_CODES#M M} and above
      * and declares as using the {@link android.Manifest.permission#CAMERA} permission which
@@ -510,6 +525,7 @@
      * @see #EXTRA_VIDEO_QUALITY
      * @see #EXTRA_SIZE_LIMIT
      * @see #EXTRA_DURATION_LIMIT
+     * @see android.hardware.Camera#ACTION_NEW_VIDEO
      */
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
     public final static String ACTION_VIDEO_CAPTURE = "android.media.action.VIDEO_CAPTURE";
@@ -587,6 +603,47 @@
     public final static String EXTRA_OUTPUT = "output";
 
     /**
+     * Specify that the caller wants to receive the original media format without transcoding.
+     *
+     * This is a very dangerous flag to use because apps can suddenly fail to play media after
+     * an OS upgrade. Clients should instead specify their supported media capabilities explicitly
+     * in their manifest or with the {@link #EXTRA_MEDIA_CAPABILITIES} open flag.
+     *
+     * Note that this flag overrides any explicitly declared {@code media_capabilities.xml} or
+     * {@link ApplicationMediaCapabilities} extras specified in the same {@code open} request.
+     *
+     * This is only useful for apps that are bundled with the system hence are guaranteed to
+     * always support any media capabilities released on the OS in the future.
+     *
+     * <p>This option can be added to the {@code opts} {@link Bundle} in various
+     * {@link ContentResolver} {@code open} methods.
+     *
+     * @see ContentResolver#openTypedAssetFileDescriptor(Uri, String, Bundle)
+     * @see ContentResolver#openTypedAssetFile(Uri, String, Bundle, CancellationSignal)
+     */
+    public final static String EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMAT =
+            "android.provider.extra.ACCEPT_ORIGINAL_MEDIA_FORMAT";
+
+    /**
+     * Specify the {@link ApplicationMediaCapabilities} that should be used while opening a media.
+     *
+     * If the capabilities specified matches the format of the original file, the app will receive
+     * the original file, otherwise, it will get transcoded to a default supported format.
+     *
+     * This flag takes higher precedence over the applications declared
+     * {@code media_capabilities.xml} and is useful for apps that want to have more granular control
+     * over their supported media capabilities.
+     *
+     * <p>This option can be added to the {@code opts} {@link Bundle} in various
+     * {@link ContentResolver} {@code open} methods.
+     *
+     * @see ContentResolver#openTypedAssetFileDescriptor(Uri, String, Bundle)
+     * @see ContentResolver#openTypedAssetFile(Uri, String, Bundle, CancellationSignal)
+     */
+    public final static String EXTRA_MEDIA_CAPABILITIES =
+            "android.provider.extra.MEDIA_CAPABILITIES";
+
+    /**
       * The string that is used when a media attribute is not known. For example,
       * if an audio file does not have any meta data, the artist and album columns
       * will be set to this value.
@@ -620,6 +677,18 @@
     public static final String QUERY_ARG_ALLOW_MOVEMENT = "android:query-arg-allow-movement";
 
     /**
+     * Flag that indicates that a media scan that was triggered as part of
+     * {@link ContentResolver#update} should be asynchronous. This flag should
+     * only be used when {@link ContentResolver#update} operation needs to
+     * return early without updating metadata for the file. This may make other
+     * apps see incomplete metadata for the updated file as scan runs
+     * asynchronously here. Most apps shouldn't set this flag.
+     *
+     * @hide
+     */
+    public static final String QUERY_ARG_DO_ASYNC_SCAN = "android:query-arg-do-async-scan";
+
+    /**
      * Specify how {@link MediaColumns#IS_PENDING} items should be filtered when
      * performing a {@link MediaStore} operation.
      * <p>
@@ -1685,6 +1754,79 @@
              * Constant for the {@link #MEDIA_TYPE} column indicating that file is a document file.
              */
             public static final int MEDIA_TYPE_DOCUMENT = 6;
+
+            /**
+             * Modifier of the database row
+             *
+             * Specifies the last modifying operation of the database row. This
+             * does not give any information on the package that modified the
+             * database row.
+             * Initially, this column will be populated by
+             * {@link ContentResolver}#insert and media scan operations. And,
+             * the column will be used to identify if the file was previously
+             * scanned.
+             * @hide
+             */
+            @Column(value = Cursor.FIELD_TYPE_INTEGER)
+            public static final String _MODIFIER = "_modifier";
+
+            /**
+             * Constant for the {@link #_MODIFIER} column indicating
+             * that the last modifier of the database row is FUSE operation.
+             * @hide
+             */
+            public static final int _MODIFIER_FUSE = 1;
+
+            /**
+             * Constant for the {@link #_MODIFIER} column indicating
+             * that the last modifier of the database row is explicit
+             * {@link ContentResolver} operation from app.
+             * @hide
+             */
+            public static final int _MODIFIER_CR = 2;
+
+            /**
+             * Constant for the {@link #_MODIFIER} column indicating
+             * that the last modifier of the database row is a media scan
+             * operation.
+             * @hide
+             */
+            public static final int _MODIFIER_MEDIA_SCAN = 3;
+
+            /**
+             * Status of the transcode file
+             *
+             * For apps that do not support modern media formats for video, we
+             * seamlessly transcode the file and return transcoded file for
+             * both file path and ContentResolver operations. This column tracks
+             * the status of the transcoded file.
+             *
+             * @hide
+             */
+            @Column(value = Cursor.FIELD_TYPE_INTEGER)
+            public static final String _TRANSCODE_STATUS = "_transcode_status";
+
+            /**
+             * Constant for the {@link #_TRANSCODE_STATUS} column indicating
+             * that the transcode file if exists is empty or never transcoded.
+             * @hide
+             */
+            public static final int TRANSCODE_EMPTY = 0;
+
+            /**
+             * Constant for the {@link #_TRANSCODE_STATUS} column indicating
+             * that the transcode file if exists contains transcoded video.
+             * @hide
+             */
+            public static final int TRANSCODE_COMPLETE = 1;
+
+            /**
+             * Indexed value of {@link MediaMetadataRetriever#METADATA_KEY_VIDEO_CODEC_TYPE}
+             * extracted from the video file. This value be null for non-video files.
+             * @hide
+             */
+            @Column(value = Cursor.FIELD_TYPE_INTEGER)
+            public static final String _VIDEO_CODEC_TYPE = "_video_codec_type";
         }
     }
 
@@ -3074,7 +3216,7 @@
              * Sub-directory of each artist containing all albums on which
              * a song by the artist appears.
              */
-            public static final class Albums implements AlbumColumns {
+            public static final class Albums implements BaseColumns, AlbumColumns {
                 public static final Uri getContentUri(String volumeName,long artistId) {
                     return ContentUris
                             .withAppendedId(Audio.Artists.getContentUri(volumeName), artistId)
diff --git a/jni/Android.bp b/jni/Android.bp
index 280ddcd..dfb2da3 100644
--- a/jni/Android.bp
+++ b/jni/Android.bp
@@ -60,8 +60,15 @@
         "-google-runtime-int",
     ],
 
+    target: {
+        android32: {
+            cflags: ["-DNO_FUSE_PASSTHROUGH_32BIT"],
+        },
+    },
+
     sdk_version: "current",
     stl: "c++_static",
+    min_sdk_version: "30",
 }
 
 cc_test {
diff --git a/jni/FuseDaemon.cpp b/jni/FuseDaemon.cpp
index d1bfa93..0b1d15d 100755
--- a/jni/FuseDaemon.cpp
+++ b/jni/FuseDaemon.cpp
@@ -78,7 +78,7 @@
 // logging macros to avoid duplication.
 #define TRACE_NODE(__node, __req)                                                  \
     LOG(VERBOSE) << __FUNCTION__ << " : " << #__node << " = [" << get_name(__node) \
-                 << "] (uid=" << __req->ctx.uid << ") "
+                 << "] (uid=" << (__req)->ctx.uid << ") "
 
 #define ATRACE_NAME(name) ScopedTrace ___tracer(name)
 #define ATRACE_CALL() ATRACE_NAME(__FUNCTION__)
@@ -105,10 +105,13 @@
 // Stolen from: UserHandle#getUserId
 constexpr int PER_USER_RANGE = 100000;
 
+// Stolen from: UserManagerService
+constexpr int MAX_USER_ID = UINT32_MAX / PER_USER_RANGE;
+
 // Regex copied from FileUtils.java in MediaProvider, but without media directory.
 const std::regex PATTERN_OWNED_PATH(
-    "^/storage/[^/]+/(?:[0-9]+/)?Android/(?:data|obb|sandbox)/([^/]+)(/?.*)?",
-    std::regex_constants::icase);
+        "^/storage/[^/]+/(?:[0-9]+/)?Android/(?:data|obb)/([^/]+)(/?.*)?",
+        std::regex_constants::icase);
 
 /*
  * In order to avoid double caching with fuse, call fadvise on the file handles
@@ -241,7 +244,9 @@
           tracker(mediaprovider::fuse::NodeTracker(&lock)),
           root(node::CreateRoot(_path, &lock, &tracker)),
           mp(0),
-          zero_addr(0) {}
+          zero_addr(0),
+          disable_dentry_cache(false),
+          passthrough(false) {}
 
     inline bool IsRoot(const node* node) const { return node == root; }
 
@@ -295,6 +300,8 @@
     FAdviser fadviser;
 
     std::atomic_bool* active;
+    std::atomic_bool disable_dentry_cache;
+    std::atomic_bool passthrough;
 };
 
 static inline string get_name(node* n) {
@@ -383,14 +390,12 @@
     }
 }
 
-static double get_timeout(struct fuse* fuse, const string& path, bool should_inval) {
-    string media_path = fuse->GetEffectiveRootPath() + "/Android/media";
-    if (should_inval || path.find(media_path, 0) == 0 || is_package_owned_path(path, fuse->path)) {
+static double get_attr_timeout(const string& path, bool should_inval, node* node,
+                               struct fuse* fuse) {
+    if (fuse->disable_dentry_cache || should_inval || is_package_owned_path(path, fuse->path)) {
         // We set dentry timeout to 0 for the following reasons:
-        // 1. Case-insensitive lookups need to invalidate other case-insensitive dentry matches
-        // 2. Installd might delete Android/media/<package> dirs when app data is cleared.
-        // This can leave a stale entry in the kernel dcache, and break subsequent creation of the
-        // dir via FUSE.
+        // 1. The dentry cache was completely disabled
+        // 2. Case-insensitive lookups need to invalidate other case-insensitive dentry matches
         // 3. With app data isolation enabled, app A should not guess existence of app B from the
         // Android/{data,obb}/<package> paths, hence we prevent the kernel from caching that
         // information.
@@ -399,6 +404,23 @@
     return std::numeric_limits<double>::max();
 }
 
+static double get_entry_timeout(const string& path, bool should_inval, node* node,
+                                struct fuse* fuse) {
+    string media_path = fuse->GetEffectiveRootPath() + "/Android/media";
+    if (path.find(media_path, 0) == 0) {
+        // Installd might delete Android/media/<package> dirs when app data is cleared.
+        // This can leave a stale entry in the kernel dcache, and break subsequent creation of the
+        // dir via FUSE.
+        return 0;
+    }
+    return get_attr_timeout(path, should_inval, node, fuse);
+}
+
+static std::string get_path(node* node) {
+    const string& io_path = node->GetIoPath();
+    return io_path.empty() ? node->BuildPath() : io_path;
+}
+
 static node* make_node_entry(fuse_req_t req, node* parent, const string& name, const string& path,
                              struct fuse_entry_param* e, int* error_code) {
     struct fuse* fuse = get_fuse(req);
@@ -412,11 +434,49 @@
     }
 
     bool should_inval = false;
-    node = parent->LookupChildByName(name, true /* acquire */);
+    bool transforms_complete = true;
+    int transforms = 0;
+    string io_path;
+
+    if (S_ISREG(e->attr.st_mode)) {
+        // Handle potential file transforms
+        transforms = fuse->mp->GetTransforms(path, req->ctx.uid);
+
+        if (transforms < 0) {
+            // Fail lookup if we can't fetch supported transforms for path
+            LOG(WARNING) << "Failed to fetch transforms for " << name;
+            *error_code = ENOENT;
+            return NULL;
+        }
+
+        // TODO(b/169412244): Improve JNI interaction
+        // Invalidate if there are any transforms so that we always get a lookup into userspace
+        should_inval = should_inval || transforms;
+        if (transforms) {
+            // If there are any transforms, fetch IO path
+            io_path = fuse->mp->GetIoPath(path, req->ctx.uid);
+            if (io_path.empty()) {
+                *error_code = EFAULT;
+                return NULL;
+            }
+
+            if (io_path != path) {
+                // Update size with io_path size
+                if (lstat(io_path.c_str(), &e->attr) < 0) {
+                    *error_code = errno;
+                    return NULL;
+                }
+                transforms_complete = false;
+            }
+        }
+    }
+
+    node = parent->LookupChildByName(name, true /* acquire */, transforms);
     if (!node) {
-        node = ::node::Create(parent, name, &fuse->lock, &fuse->tracker);
+        node = ::node::Create(parent, name, io_path, transforms_complete, transforms, &fuse->lock,
+                              &fuse->tracker);
     } else if (!mediaprovider::fuse::containsMount(path, std::to_string(getuid() / PER_USER_RANGE))) {
-        should_inval = true;
+        should_inval = should_inval || node->HasCaseInsensitiveMatch();
         // Only invalidate a path if it does not contain mount.
         // Invalidate both names to ensure there's no dentry left in the kernel after the following
         // operations:
@@ -427,13 +487,17 @@
         // invalidate node_name if different case
         // Note that we invalidate async otherwise we will deadlock the kernel
         if (name != node->GetName()) {
+            should_inval = true;
+            // Record that we have made a case insensitive lookup, this allows us invalidate nodes
+            // correctly on subsequent lookups for the case of |node|
+            node->SetCaseInsensitiveMatch();
+
             // Make copies of the node name and path so we're not attempting to acquire
             // any node locks from the invalidation thread. Depending on timing, we may end
             // up invalidating the wrong inode but that shouldn't result in correctness issues.
             const fuse_ino_t parent_ino = fuse->ToInode(parent);
             const fuse_ino_t child_ino = fuse->ToInode(node);
             const std::string& node_name = node->GetName();
-
             std::thread t([=]() { fuse_inval(fuse->se, parent_ino, child_ino, node_name, path); });
             t.detach();
         }
@@ -446,11 +510,8 @@
     // reuse inode numbers.
     e->generation = 0;
     e->ino = fuse->ToInode(node);
-    e->entry_timeout = get_timeout(fuse, path, should_inval);
-    e->attr_timeout = is_package_owned_path(path, fuse->path) || should_inval
-                              ? 0
-                              : std::numeric_limits<double>::max();
-
+    e->entry_timeout = get_entry_timeout(path, should_inval, node, fuse);
+    e->attr_timeout = get_attr_timeout(path, should_inval, node, fuse);
     return node;
 }
 
@@ -469,15 +530,32 @@
  */
 
 static void pf_init(void* userdata, struct fuse_conn_info* conn) {
+    struct fuse* fuse = reinterpret_cast<struct fuse*>(userdata);
+
     // We don't want a getattr request with every read request
     conn->want &= ~FUSE_CAP_AUTO_INVAL_DATA & ~FUSE_CAP_READDIRPLUS_AUTO;
     unsigned mask = (FUSE_CAP_SPLICE_WRITE | FUSE_CAP_SPLICE_MOVE | FUSE_CAP_SPLICE_READ |
                      FUSE_CAP_ASYNC_READ | FUSE_CAP_ATOMIC_O_TRUNC | FUSE_CAP_WRITEBACK_CACHE |
                      FUSE_CAP_EXPORT_SUPPORT | FUSE_CAP_FLOCK_LOCKS);
+
+    if (fuse->passthrough) {
+        if (conn->capable & FUSE_CAP_PASSTHROUGH) {
+#ifdef NO_FUSE_PASSTHROUGH_32BIT
+            // TODO(b/175151591) Linux compatibility layer for FUSE_DEV_IOC_PASSTHROUGH_OPEN
+            LOG(WARNING) << "Passthrough feature not supported on 32-bit userspace";
+            fuse->passthrough = false;
+#else
+            mask |= FUSE_CAP_PASSTHROUGH;
+#endif
+        } else {
+            LOG(WARNING) << "Passthrough feature not supported by the kernel";
+            fuse->passthrough = false;
+        }
+    }
+
     conn->want |= conn->capable & mask;
     conn->max_read = MAX_READ_SIZE;
 
-    struct fuse* fuse = reinterpret_cast<struct fuse*>(userdata);
     fuse->active->store(true, std::memory_order_release);
 }
 
@@ -508,8 +586,8 @@
         if (pkg == ".nomedia") {
             return true;
         }
-        if (!mp->IsUidForPackage(pkg, uid)) {
-            PLOG(WARNING) << "Invalid other package file access from " << pkg << "(: " << path;
+        if (!mp->isUidAllowedAccessToDataOrObbPath(uid, path)) {
+            PLOG(WARNING) << "Invalid other package file access from " << uid << "(: " << path;
             return false;
         }
     }
@@ -539,10 +617,17 @@
 
     std::smatch match;
     std::regex_search(child_path, match, storage_emulated_regex);
+
+    // Ensure the FuseDaemon user id matches the user id or cross-user lookups are allowed in
+    // requested path
     if (match.size() == 2 && std::to_string(getuid() / PER_USER_RANGE) != match[1].str()) {
-        // Ensure the FuseDaemon user id matches the user id in requested path
-        *error_code = EPERM;
-        return nullptr;
+        // If user id mismatch, check cross-user lookups
+        long userId = strtol(match[1].str().c_str(), nullptr, 10);
+        if (userId < 0 || userId > MAX_USER_ID ||
+            !fuse->mp->ShouldAllowLookup(req->ctx.uid, userId)) {
+            *error_code = EACCES;
+            return nullptr;
+        }
     }
     return make_node_entry(req, parent_node, name, child_path, e, error_code);
 }
@@ -603,7 +688,7 @@
         fuse_reply_err(req, ENOENT);
         return;
     }
-    string path = node->BuildPath();
+    const string& path = get_path(node);
     if (!is_app_accessible_path(fuse->mp, path, req->ctx.uid)) {
         fuse_reply_err(req, ENOENT);
         return;
@@ -615,8 +700,10 @@
     if (lstat(path.c_str(), &s) < 0) {
         fuse_reply_err(req, errno);
     } else {
-        fuse_reply_attr(req, &s, is_package_owned_path(path, fuse->path) ?
-                0 : std::numeric_limits<double>::max());
+        fuse_reply_attr(
+                req, &s,
+                get_attr_timeout(path, node->GetTransforms() || node->HasCaseInsensitiveMatch(),
+                                 node, fuse));
     }
 }
 
@@ -632,7 +719,7 @@
         fuse_reply_err(req, ENOENT);
         return;
     }
-    string path = node->BuildPath();
+    const string& path = get_path(node);
     if (!is_app_accessible_path(fuse->mp, path, req->ctx.uid)) {
         fuse_reply_err(req, ENOENT);
         return;
@@ -711,15 +798,16 @@
     }
 
     lstat(path.c_str(), attr);
-    fuse_reply_attr(req, attr, is_package_owned_path(path, fuse->path) ?
-            0 : std::numeric_limits<double>::max());
+    fuse_reply_attr(req, attr,
+                    get_attr_timeout(path, node->GetTransforms() || node->HasCaseInsensitiveMatch(),
+                                     node, fuse));
 }
 
 static void pf_canonical_path(fuse_req_t req, fuse_ino_t ino)
 {
     struct fuse* fuse = get_fuse(req);
     node* node = fuse->FromInode(ino);
-    string path = node ? node->BuildPath() : "";
+    const string& path = node ? get_path(node) : "";
 
     if (node && is_app_accessible_path(fuse->mp, path, req->ctx.uid)) {
         // TODO(b/147482155): Check that uid has access to |path| and its contents
@@ -836,12 +924,8 @@
         return;
     }
 
-    node* child_node = parent_node->LookupChildByName(name, false /* acquire */);
-    TRACE_NODE(child_node, req);
-    if (child_node) {
-        child_node->SetDeleted();
-    }
-
+    // TODO(b/169306422): Log each deleted node
+    parent_node->SetDeletedForChild(name);
     fuse_reply_err(req, 0);
 }
 
@@ -922,10 +1006,7 @@
     TRACE_NODE(old_parent_node, req);
     TRACE_NODE(new_parent_node, req);
 
-    node* child_node = old_parent_node->LookupChildByName(name, true /* acquire */);
-    TRACE_NODE(child_node, req) << "old_child";
-
-    const string old_child_path = child_node->BuildPath();
+    const string old_child_path = old_parent_path + "/" + name;
     const string new_child_path = new_parent_path + "/" + new_name;
 
     // TODO(b/147408834): Check ENOTEMPTY & EEXIST error conditions before JNI call.
@@ -933,11 +1014,9 @@
     // TODO(b/145663158): Lookups can go out of sync if file/directory is actually moved but
     // EFAULT/EIO is reported due to JNI exception.
     if (res == 0) {
-        child_node->Rename(new_name, new_parent_node);
+        // TODO(b/169306422): Log each renamed node
+        old_parent_node->RenameChild(name, new_name, new_parent_node);
     }
-    TRACE_NODE(child_node, req) << "new_child";
-
-    child_node->Release(1);
     return res;
 }
 
@@ -955,27 +1034,60 @@
 }
 */
 
-static handle* create_handle_for_node(struct fuse* fuse, const string& path, int fd, node* node,
-                                      const RedactionInfo* ri) {
+static handle* create_handle_for_node(struct fuse* fuse, const string& path, int fd, uid_t uid,
+                                      node* node, const RedactionInfo* ri, int* keep_cache) {
     std::lock_guard<std::recursive_mutex> guard(fuse->lock);
-    // We don't want to use the FUSE VFS cache in two cases:
-    // 1. When redaction is needed because app A with EXIF access might access
-    // a region that should have been redacted for app B without EXIF access, but app B on
-    // a subsequent read, will be able to see the EXIF data because the read request for
-    // that region will be served from cache and not get to the FUSE daemon
-    // 2. When the file has a read or write lock on it. This means that the MediaProvider
-    // has given an fd to the lower file system to an app. There are two cases where using
-    // the cache in this case can be a problem:
-    // a. Writing to a FUSE fd with caching enabled will use the write-back cache and a
-    // subsequent read from the lower fs fd will not see the write.
-    // b. Reading from a FUSE fd with caching enabled may not see the latest writes using
-    // the lower fs fd because those writes did not go through the FUSE layer and reads from
-    // FUSE after that write may be served from cache
-    bool direct_io = ri->isRedactionNeeded() || is_file_locked(fd, path);
 
-    handle* h = new handle(fd, ri, !direct_io);
-    node->AddHandle(h);
-    return h;
+    bool redaction_needed = ri->isRedactionNeeded();
+    handle* handle = nullptr;
+
+    if (fuse->passthrough) {
+        *keep_cache = 1;
+        handle = new struct handle(fd, ri, true /* cached */, !redaction_needed /* passthrough */,
+                                   uid);
+    } else {
+        // Without fuse->passthrough, we don't want to use the FUSE VFS cache in two cases:
+        // 1. When redaction is needed because app A with EXIF access might access
+        // a region that should have been redacted for app B without EXIF access, but app B on
+        // a subsequent read, will be able to see the EXIF data because the read request for
+        // that region will be served from cache and not get to the FUSE daemon
+        // 2. When the file has a read or write lock on it. This means that the MediaProvider
+        // has given an fd to the lower file system to an app. There are two cases where using
+        // the cache in this case can be a problem:
+        // a. Writing to a FUSE fd with caching enabled will use the write-back cache and a
+        // subsequent read from the lower fs fd will not see the write.
+        // b. Reading from a FUSE fd with caching enabled may not see the latest writes using
+        // the lower fs fd because those writes did not go through the FUSE layer and reads from
+        // FUSE after that write may be served from cache
+        bool has_redacted = node->HasRedactedCache();
+        bool is_redaction_change =
+                (redaction_needed && !has_redacted) || (!redaction_needed && has_redacted);
+        bool is_cached_file_open = node->HasCachedHandle();
+        bool direct_io = (is_cached_file_open && is_redaction_change) || is_file_locked(fd, path);
+
+        if (!is_cached_file_open && is_redaction_change) {
+            node->SetRedactedCache(redaction_needed);
+            // Purges stale page cache before open
+            *keep_cache = 0;
+        } else {
+            *keep_cache = 1;
+        }
+        handle = new struct handle(fd, ri, !direct_io /* cached */, false /* passthrough */, uid);
+    }
+
+    node->AddHandle(handle);
+    return handle;
+}
+
+bool do_passthrough_enable(fuse_req_t req, struct fuse_file_info* fi, unsigned int fd) {
+    int passthrough_fh = fuse_passthrough_enable(req, fd);
+
+    if (passthrough_fh <= 0) {
+        return false;
+    }
+
+    fi->passthrough_fh = passthrough_fh;
+    return true;
 }
 
 static void pf_open(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info* fi) {
@@ -987,8 +1099,9 @@
         return;
     }
     const struct fuse_ctx* ctx = fuse_req_ctx(req);
-    const string path = node->BuildPath();
-    if (!is_app_accessible_path(fuse->mp, path, ctx->uid)) {
+    const string& io_path = get_path(node);
+    const string& build_path = node->BuildPath();
+    if (!is_app_accessible_path(fuse->mp, io_path, ctx->uid)) {
         fuse_reply_err(req, ENOENT);
         return;
     }
@@ -1000,7 +1113,10 @@
         fi->direct_io = true;
     }
 
-    int status = fuse->mp->IsOpenAllowed(path, ctx->uid, is_requesting_write(fi->flags));
+    // TODO: If transform, disallow write
+    // Force permission check with the build path because the MediaProvider database might not be
+    // aware of the io_path
+    int status = fuse->mp->IsOpenAllowed(build_path, ctx->uid, is_requesting_write(fi->flags));
     if (status) {
         fuse_reply_err(req, status);
         return;
@@ -1018,7 +1134,7 @@
         open_flags &= ~O_APPEND;
     }
 
-    const int fd = open(path.c_str(), open_flags);
+    const int fd = open(io_path.c_str(), open_flags);
     if (fd < 0) {
         fuse_reply_err(req, errno);
         return;
@@ -1029,7 +1145,7 @@
     if (is_requesting_write(fi->flags)) {
         ri = std::make_unique<RedactionInfo>();
     } else {
-        ri = fuse->mp->GetRedactionInfo(path, req->ctx.uid, req->ctx.pid);
+        ri = fuse->mp->GetRedactionInfo(build_path, io_path, req->ctx.uid, req->ctx.pid);
     }
 
     if (!ri) {
@@ -1038,10 +1154,25 @@
         return;
     }
 
-    handle* h = create_handle_for_node(fuse, path, fd, node, ri.release());
+    int keep_cache = 1;
+    handle* h = create_handle_for_node(fuse, io_path, fd, req->ctx.uid, node, ri.release(),
+                                       &keep_cache);
     fi->fh = ptr_to_id(h);
-    fi->keep_cache = 1;
+    fi->keep_cache = keep_cache;
     fi->direct_io = !h->cached;
+
+    // TODO(b/173190192) ensuring that h->cached must be enabled in order to
+    // user FUSE passthrough is a conservative rule and might be dropped as
+    // soon as demonstrated its correctness.
+    if (h->passthrough) {
+        if (!do_passthrough_enable(req, fi, fd)) {
+            // TODO: Should we crash here so we can find errors easily?
+            PLOG(ERROR) << "Passthrough OPEN failed for " << io_path;
+            fuse_reply_err(req, EFAULT);
+            return;
+        }
+    }
+
     fuse_reply_open(req, fi);
 }
 
@@ -1057,10 +1188,6 @@
     fuse_reply_data(req, &buf, (enum fuse_buf_copy_flags) 0);
 }
 
-static bool range_contains(const RedactionRange& rr, off_t off) {
-    return rr.first <= off && off <= rr.second;
-}
-
 /**
  * Sets the parameters for a fuse_buf that reads from memory, including flags.
  * Makes buf->mem point to an already mapped region of zeroized memory.
@@ -1087,24 +1214,17 @@
 
 static void do_read_with_redaction(fuse_req_t req, size_t size, off_t off, fuse_file_info* fi) {
     handle* h = reinterpret_cast<handle*>(fi->fh);
-    auto overlapping_rr = h->ri->getOverlappingRedactionRanges(size, off);
 
-    if (overlapping_rr->size() <= 0) {
-        // no relevant redaction ranges for this request
+    std::vector<ReadRange> ranges;
+    h->ri->getReadRanges(off, size, &ranges);
+
+    // As an optimization, return early if there are no ranges to redact.
+    if (ranges.size() == 0) {
         do_read(req, size, off, fi);
         return;
     }
-    // the number of buffers we need, if the read doesn't start or end with
-    //  a redaction range.
-    int num_bufs = overlapping_rr->size() * 2 + 1;
-    if (overlapping_rr->front().first <= off) {
-        // the beginning of the read request is redacted
-        num_bufs--;
-    }
-    if (overlapping_rr->back().second >= off + size) {
-        // the end of the read request is redacted
-        num_bufs--;
-    }
+
+    const size_t num_bufs = ranges.size();
     auto bufvec_ptr = std::unique_ptr<fuse_bufvec, decltype(free)*>{
             reinterpret_cast<fuse_bufvec*>(
                     malloc(sizeof(fuse_bufvec) + (num_bufs - 1) * sizeof(fuse_buf))),
@@ -1116,31 +1236,13 @@
     bufvec.idx = 0;
     bufvec.off = 0;
 
-    int rr_idx = 0;
-    off_t start = off;
-    // Add a dummy redaction range to make sure we don't go out of vector
-    // limits when computing the end of the last non-redacted range.
-    // This ranges is invalid because its starting point is larger than it's ending point.
-    overlapping_rr->push_back(RedactionRange(LLONG_MAX, LLONG_MAX - 1));
-
     for (int i = 0; i < num_bufs; ++i) {
-        off_t end;
-        if (range_contains(overlapping_rr->at(rr_idx), start)) {
-            // Handle a redacted range
-            // end should be the end of the redacted range, but can't be out of
-            // the read request bounds
-            end = std::min(static_cast<off_t>(off + size - 1), overlapping_rr->at(rr_idx).second);
-            create_mem_fuse_buf(/*size*/ end - start + 1, &(bufvec.buf[i]), get_fuse(req));
-            ++rr_idx;
+        const ReadRange& range = ranges[i];
+        if (range.is_redaction) {
+            create_mem_fuse_buf(range.size, &(bufvec.buf[i]), get_fuse(req));
         } else {
-            // Handle a non-redacted range
-            // end should be right before the next redaction range starts or
-            // the end of the read request
-            end = std::min(static_cast<off_t>(off + size - 1),
-                    overlapping_rr->at(rr_idx).first - 1);
-            create_file_fuse_buf(/*size*/ end - start + 1, start, h->fd, &(bufvec.buf[i]));
+            create_file_fuse_buf(range.size, range.start, h->fd, &(bufvec.buf[i]));
         }
-        start = end + 1;
     }
 
     fuse_reply_data(req, &bufvec, static_cast<fuse_buf_copy_flags>(0));
@@ -1152,6 +1254,17 @@
     handle* h = reinterpret_cast<handle*>(fi->fh);
     struct fuse* fuse = get_fuse(req);
 
+    node* node = fuse->FromInode(ino);
+
+    if (!node->IsTransformsComplete()) {
+        if (!fuse->mp->Transform(node->BuildPath(), node->GetIoPath(), node->GetTransforms(),
+                                 h->uid)) {
+            fuse_reply_err(req, EFAULT);
+            return;
+        }
+        node->SetTransformsComplete();
+    }
+
     fuse->fadviser.Record(h->fd, size);
 
     if (h->ri->isRedactionNeeded()) {
@@ -1223,14 +1336,6 @@
     fuse_reply_write(req, size);
 }
 #endif
-static void pf_flush(fuse_req_t req,
-                     fuse_ino_t ino,
-                     struct fuse_file_info* fi) {
-    ATRACE_CALL();
-    struct fuse* fuse = get_fuse(req);
-    TRACE_NODE(nullptr, req) << "noop";
-    fuse_reply_err(req, 0);
-}
 
 static void pf_release(fuse_req_t req,
                        fuse_ino_t ino,
@@ -1601,10 +1706,24 @@
     // This prevents crashing during reads but can be a security hole if a malicious app opens an fd
     // to the file before all the EXIF content is written. We could special case reads before the
     // first close after a file has just been created.
-    handle* h = create_handle_for_node(fuse, child_path, fd, node, new RedactionInfo());
+    int keep_cache = 1;
+    handle* h = create_handle_for_node(fuse, child_path, fd, req->ctx.uid, node,
+                                       new RedactionInfo(), &keep_cache);
     fi->fh = ptr_to_id(h);
-    fi->keep_cache = 1;
+    fi->keep_cache = keep_cache;
     fi->direct_io = !h->cached;
+
+    // TODO(b/173190192) ensuring that h->cached must be enabled in order to
+    // user FUSE passthrough is a conservative rule and might be dropped as
+    // soon as demonstrated its correctness.
+    if (h->passthrough) {
+        if (!do_passthrough_enable(req, fi, fd)) {
+            PLOG(ERROR) << "Passthrough CREATE failed for " << child_path;
+            fuse_reply_err(req, EFAULT);
+            return;
+        }
+    }
+
     fuse_reply_create(req, &e, fi);
 }
 /*
@@ -1668,7 +1787,7 @@
     /*.link = pf_link,*/
     .open = pf_open, .read = pf_read,
     /*.write = pf_write,*/
-    .flush = pf_flush,
+    /*.flush = pf_flush,*/
     .release = pf_release, .fsync = pf_fsync, .opendir = pf_opendir, .readdir = pf_readdir,
     .releasedir = pf_releasedir, .fsyncdir = pf_fsyncdir, .statfs = pf_statfs,
     /*.setxattr = pf_setxattr,
@@ -1711,6 +1830,13 @@
 }
 
 bool FuseDaemon::ShouldOpenWithFuse(int fd, bool for_read, const std::string& path) {
+    if (fuse->passthrough) {
+        // Always open with FUSE if passthrough is enabled. This avoids the delicate file lock
+        // acquisition below to ensure VFS cache consistency and doesn't impact filesystem
+        // performance since read(2)/write(2) happen in the kernel
+        return true;
+    }
+
     bool use_fuse = false;
 
     if (active.load(std::memory_order_acquire)) {
@@ -1807,6 +1933,17 @@
         fuse_set_log_func(fuse_logger);
     }
 
+    uid_t userId = getuid() / PER_USER_RANGE;
+    if (userId != 0 && mp.IsAppCloneUser(userId)) {
+        // Disable dentry caching for the app clone user
+        fuse->disable_dentry_cache = true;
+    }
+
+    fuse->passthrough = android::base::GetBoolProperty("persist.sys.fuse.passthrough.enable", false);
+    if (fuse->passthrough) {
+        LOG(INFO) << "Using FUSE passthrough";
+    }
+
     struct fuse_session
             * se = fuse_session_new(&args, &ops, sizeof(ops), &fuse_default);
     if (!se) {
diff --git a/jni/MediaProviderWrapper.cpp b/jni/MediaProviderWrapper.cpp
index 04c2503..113a5ff 100644
--- a/jni/MediaProviderWrapper.cpp
+++ b/jni/MediaProviderWrapper.cpp
@@ -58,11 +58,15 @@
 
 std::unique_ptr<RedactionInfo> getRedactionInfoInternal(JNIEnv* env, jobject media_provider_object,
                                                         jmethodID mid_get_redaction_ranges,
-                                                        uid_t uid, pid_t tid, const string& path) {
+                                                        uid_t uid, pid_t tid, const string& path,
+                                                        const string& io_path) {
     ScopedLocalRef<jstring> j_path(env, env->NewStringUTF(path.c_str()));
-    ScopedLongArrayRO redaction_ranges(
-            env, static_cast<jlongArray>(env->CallObjectMethod(
-                         media_provider_object, mid_get_redaction_ranges, j_path.get(), uid, tid)));
+    ScopedLocalRef<jstring> j_io_path(env, env->NewStringUTF(io_path.c_str()));
+    ScopedLocalRef<jlongArray> redaction_ranges_local_ref(
+            env, static_cast<jlongArray>(
+                         env->CallObjectMethod(media_provider_object, mid_get_redaction_ranges,
+                                               j_path.get(), j_io_path.get(), uid, tid)));
+    ScopedLongArrayRO redaction_ranges(env, redaction_ranges_local_ref.get());
 
     if (CheckForJniException(env)) {
         return nullptr;
@@ -148,11 +152,12 @@
     return res;
 }
 
-bool isUidForPackageInternal(JNIEnv* env, jobject media_provider_object,
-                             jmethodID mid_is_uid_for_package, const string& pkg, uid_t uid) {
-    ScopedLocalRef<jstring> j_pkg(env, env->NewStringUTF(pkg.c_str()));
-    bool res = env->CallBooleanMethod(media_provider_object, mid_is_uid_for_package, j_pkg.get(),
-            uid);
+bool isUidAllowedAccessToDataOrObbPathInternal(JNIEnv* env, jobject media_provider_object,
+                                               jmethodID mid_is_uid_allowed_path_access_, uid_t uid,
+                                               const string& path) {
+    ScopedLocalRef<jstring> j_path(env, env->NewStringUTF(path.c_str()));
+    bool res = env->CallBooleanMethod(media_provider_object, mid_is_uid_allowed_path_access_, uid,
+                                      j_path.get());
 
     if (CheckForJniException(env)) {
         return false;
@@ -258,8 +263,9 @@
     media_provider_class_ = reinterpret_cast<jclass>(env->NewGlobalRef(media_provider_class_));
 
     // Cache methods - Before calling a method, make sure you cache it here
-    mid_get_redaction_ranges_ = CacheMethod(env, "getRedactionRanges", "(Ljava/lang/String;II)[J",
-                                            /*is_static*/ false);
+    mid_get_redaction_ranges_ =
+            CacheMethod(env, "getRedactionRanges", "(Ljava/lang/String;Ljava/lang/String;II)[J",
+                        /*is_static*/ false);
     mid_insert_file_ = CacheMethod(env, "insertFileIfNecessary", "(Ljava/lang/String;I)I",
                                    /*is_static*/ false);
     mid_delete_file_ = CacheMethod(env, "deleteFile", "(Ljava/lang/String;I)I", /*is_static*/ false);
@@ -276,10 +282,21 @@
                         /*is_static*/ false);
     mid_rename_ = CacheMethod(env, "rename", "(Ljava/lang/String;Ljava/lang/String;I)I",
                               /*is_static*/ false);
-    mid_is_uid_for_package_ = CacheMethod(env, "isUidForPackage", "(Ljava/lang/String;I)Z",
-                              /*is_static*/ false);
+    mid_is_uid_allowed_access_to_data_or_obb_path_ =
+            CacheMethod(env, "isUidAllowedAccessToDataOrObbPath", "(ILjava/lang/String;)Z",
+                        /*is_static*/ false);
     mid_on_file_created_ = CacheMethod(env, "onFileCreated", "(Ljava/lang/String;)V",
                                        /*is_static*/ false);
+    mid_should_allow_lookup_ = CacheMethod(env, "shouldAllowLookup", "(II)Z",
+                                           /*is_static*/ false);
+    mid_is_app_clone_user_ = CacheMethod(env, "isAppCloneUser", "(I)Z",
+                                         /*is_static*/ false);
+    mid_get_io_path_ = CacheMethod(env, "getIoPath", "(Ljava/lang/String;I)Ljava/lang/String;",
+                                   /*is_static*/ false);
+    mid_get_transforms_ = CacheMethod(env, "getTransforms", "(Ljava/lang/String;I)I",
+                                      /*is_static*/ false);
+    mid_transform_ = CacheMethod(env, "transform", "(Ljava/lang/String;Ljava/lang/String;II)Z",
+                                 /*is_static*/ false);
 }
 
 MediaProviderWrapper::~MediaProviderWrapper() {
@@ -288,8 +305,9 @@
     env->DeleteGlobalRef(media_provider_class_);
 }
 
-std::unique_ptr<RedactionInfo> MediaProviderWrapper::GetRedactionInfo(const string& path, uid_t uid,
-                                                                      pid_t tid) {
+std::unique_ptr<RedactionInfo> MediaProviderWrapper::GetRedactionInfo(const string& path,
+                                                                      const string& io_path,
+                                                                      uid_t uid, pid_t tid) {
     if (shouldBypassMediaProvider(uid) || !GetBoolProperty(kPropRedactionEnabled, true)) {
         return std::make_unique<RedactionInfo>();
     }
@@ -299,7 +317,7 @@
 
     JNIEnv* env = MaybeAttachCurrentThread();
     auto ri = getRedactionInfoInternal(env, media_provider_object_, mid_get_redaction_ranges_, uid,
-                                       tid, path);
+                                       tid, path, io_path);
     res = std::move(ri);
 
     return res;
@@ -395,13 +413,14 @@
                                     forWrite);
 }
 
-bool MediaProviderWrapper::IsUidForPackage(const string& pkg, uid_t uid) {
+bool MediaProviderWrapper::isUidAllowedAccessToDataOrObbPath(uid_t uid, const string& path) {
     if (shouldBypassMediaProvider(uid)) {
         return true;
     }
 
     JNIEnv* env = MaybeAttachCurrentThread();
-    return isUidForPackageInternal(env, media_provider_object_, mid_is_uid_for_package_, pkg, uid);
+    return isUidAllowedAccessToDataOrObbPathInternal(
+            env, media_provider_object_, mid_is_uid_allowed_access_to_data_or_obb_path_, uid, path);
 }
 
 int MediaProviderWrapper::Rename(const string& old_path, const string& new_path, uid_t uid) {
@@ -423,6 +442,73 @@
     return onFileCreatedInternal(env, media_provider_object_, mid_on_file_created_, path);
 }
 
+bool MediaProviderWrapper::ShouldAllowLookup(uid_t uid, int path_user_id) {
+    JNIEnv* env = MaybeAttachCurrentThread();
+
+    bool res = env->CallBooleanMethod(media_provider_object_, mid_should_allow_lookup_, uid,
+                                      path_user_id);
+
+    if (CheckForJniException(env)) {
+        return false;
+    }
+    return res;
+}
+
+bool MediaProviderWrapper::IsAppCloneUser(uid_t userId) {
+    JNIEnv* env = MaybeAttachCurrentThread();
+
+    bool res = env->CallBooleanMethod(media_provider_object_, mid_is_app_clone_user_, userId);
+
+    if (CheckForJniException(env)) {
+        return false;
+    }
+    return res;
+}
+
+std::string MediaProviderWrapper::GetIoPath(const std::string& path, uid_t uid) {
+    JNIEnv* env = MaybeAttachCurrentThread();
+
+    ScopedLocalRef<jstring> j_path(env, env->NewStringUTF(path.c_str()));
+    ScopedLocalRef<jstring> j_res_path(
+            env, static_cast<jstring>(env->CallObjectMethod(media_provider_object_,
+                                                            mid_get_io_path_, j_path.get(), uid)));
+    ScopedUtfChars j_res_utf(env, j_res_path.get());
+    if (CheckForJniException(env)) {
+        return "";
+    }
+
+    return string(j_res_utf.c_str());
+}
+
+int MediaProviderWrapper::GetTransforms(const std::string& path, uid_t uid) {
+    JNIEnv* env = MaybeAttachCurrentThread();
+
+    ScopedLocalRef<jstring> j_path(env, env->NewStringUTF(path.c_str()));
+    int res = env->CallIntMethod(media_provider_object_, mid_get_transforms_, j_path.get(), uid);
+
+    if (CheckForJniException(env)) {
+        return -1;
+    }
+
+    return res;
+}
+
+bool MediaProviderWrapper::Transform(const std::string& src, const std::string& dst, int transforms,
+                                     uid_t uid) {
+    JNIEnv* env = MaybeAttachCurrentThread();
+
+    ScopedLocalRef<jstring> j_src(env, env->NewStringUTF(src.c_str()));
+    ScopedLocalRef<jstring> j_dst(env, env->NewStringUTF(dst.c_str()));
+    bool res = env->CallBooleanMethod(media_provider_object_, mid_transform_, j_src.get(),
+                                      j_dst.get(), transforms, uid);
+
+    if (CheckForJniException(env)) {
+        return false;
+    }
+
+    return res;
+}
+
 /*****************************************************************************************/
 /******************************** Private member functions *******************************/
 /*****************************************************************************************/
diff --git a/jni/MediaProviderWrapper.h b/jni/MediaProviderWrapper.h
index 1f74acc..6459ff4 100644
--- a/jni/MediaProviderWrapper.h
+++ b/jni/MediaProviderWrapper.h
@@ -48,11 +48,14 @@
      * Computes and returns the RedactionInfo for a given file and UID.
      *
      * @param uid UID of the app requesting the read
-     * @param path path of the requested file
+     * @param path path of the requested file that will be used for database operations
+     * @param io_path path of the requested file that will be used for IO
      * @return RedactionInfo on success, nullptr on failure to calculate
      * redaction ranges (e.g. exception was thrown in Java world)
      */
-    std::unique_ptr<RedactionInfo> GetRedactionInfo(const std::string& path, uid_t uid, pid_t tid);
+    std::unique_ptr<RedactionInfo> GetRedactionInfo(const std::string& path,
+                                                    const std::string& io_path, uid_t uid,
+                                                    pid_t tid);
 
     /**
      * Inserts a new entry for the given path and UID.
@@ -137,13 +140,19 @@
     int IsOpendirAllowed(const std::string& path, uid_t uid, bool forWrite);
 
     /**
-     * Determines if the given package name matches its uid.
+     * Determines if one of the follows is true:
+     * 1. The package name of the given private path matches the given uid,
+          then this uid has access to private-app directories for this package.
+     * 2. The calling uid has special access to private-app directories:
+     *    * DownloadProvider and ExternalStorageProvider has access to private
+     *      app directories.
+     *    * Installer apps have access to Android/obb directories
      *
-     * @param pkg the package name of the app
      * @param uid UID of the app
+     * @param path the private path that the UID wants to access
      * @return true if it matches, otherwise return false.
      */
-    bool IsUidForPackage(const std::string& pkg, uid_t uid);
+    bool isUidAllowedAccessToDataOrObbPath(uid_t uid, const std::string& path);
 
     /**
      * Renames a file or directory to new path.
@@ -164,6 +173,30 @@
      */
     void OnFileCreated(const std::string& path);
 
+    /** Get path for actual I/O */
+    std::string GetIoPath(const std::string& path, uid_t uid);
+
+    /** Get supported transformations for path and transform actions for uid on path. */
+    int GetTransforms(const std::string& path, uid_t uid);
+
+    /** Transforms from src to dst file */
+    bool Transform(const std::string& src, const std::string& dst, int transforms, uid_t uid);
+
+    /**
+     * Determines if to allow FUSE_LOOKUP for uid. Might allow uids that don't belong to the
+     * MediaProvider user, depending on OEM configuration.
+     *
+     * @param uid linux uid to check
+     */
+    bool ShouldAllowLookup(uid_t uid, int path_user_id);
+
+    /**
+     * Determines if the passed in user ID is an app clone user (paired with user 0)
+     *
+     * @param userId the user ID to check
+     */
+    bool IsAppCloneUser(uid_t userId);
+
     /**
      * Initializes per-process static variables associated with the lifetime of
      * a managed runtime.
@@ -186,8 +219,13 @@
     jmethodID mid_is_opendir_allowed_;
     jmethodID mid_get_files_in_dir_;
     jmethodID mid_rename_;
-    jmethodID mid_is_uid_for_package_;
+    jmethodID mid_is_uid_allowed_access_to_data_or_obb_path_;
     jmethodID mid_on_file_created_;
+    jmethodID mid_should_allow_lookup_;
+    jmethodID mid_is_app_clone_user_;
+    jmethodID mid_get_io_path_;
+    jmethodID mid_get_transforms_;
+    jmethodID mid_transform_;
 
     /**
      * Auxiliary for caching MediaProvider methods.
diff --git a/jni/RedactionInfo.cpp b/jni/RedactionInfo.cpp
index 17de22e..384e59f 100644
--- a/jni/RedactionInfo.cpp
+++ b/jni/RedactionInfo.cpp
@@ -16,6 +16,8 @@
 
 #include "include/libfuse_jni/RedactionInfo.h"
 
+#include <android-base/logging.h>
+
 using std::unique_ptr;
 using std::vector;
 
@@ -28,6 +30,7 @@
  * Given ranges should be sorted, and they remain sorted.
  */
 static void mergeOverlappingRedactionRanges(vector<RedactionRange>& ranges) {
+    if (ranges.size() == 0) return;
     int newRangesSize = ranges.size();
     for (int i = 0; i < ranges.size() - 1; ++i) {
         if (ranges[i].second >= ranges[i + 1].first) {
@@ -47,14 +50,37 @@
 }
 
 /**
+ * Removes any range with zero size.
+ *
+ * If ranges are modified, it will be guaranteed to be sorted.
+ */
+static void removeZeroSizeRedactionRanges(vector<RedactionRange>& ranges) {
+    int newRangesSize = ranges.size();
+    for (int i = 0; i < ranges.size(); ++i) {
+        if (ranges[i].first == ranges[i].second) {
+            // This redaction range is of length zero, hence we don't have anything
+            // to redact in this range, so remove it from the redaction_ranges_.
+            ranges[i].first = LONG_MAX;
+            ranges[i].second = LONG_MAX;
+            newRangesSize--;
+        }
+    }
+    if (newRangesSize < ranges.size()) {
+        // Move invalid ranges to end of array
+        std::sort(ranges.begin(), ranges.end());
+        ranges.resize(newRangesSize);
+    }
+}
+
+/**
  * Determine whether the read request overlaps with the redaction ranges
  * defined by the given RedactionInfo.
  *
  * This function assumes redaction_ranges_ within RedactionInfo is sorted.
  */
 bool RedactionInfo::hasOverlapWithReadRequest(size_t size, off64_t off) const {
-    if (!isRedactionNeeded() || off > redaction_ranges_.back().second ||
-        off + size < redaction_ranges_.front().first) {
+    if (!isRedactionNeeded() || off >= redaction_ranges_.back().second ||
+        off + size <= redaction_ranges_.front().first) {
         return false;
     }
     return true;
@@ -72,6 +98,7 @@
         redaction_ranges_[i].second = static_cast<off64_t>(redaction_ranges[2 * i + 1]);
     }
     std::sort(redaction_ranges_.begin(), redaction_ranges_.end());
+    removeZeroSizeRedactionRanges(redaction_ranges_);
     mergeOverlappingRedactionRanges(redaction_ranges_);
 }
 
@@ -91,26 +118,90 @@
 unique_ptr<vector<RedactionRange>> RedactionInfo::getOverlappingRedactionRanges(size_t size,
                                                                                 off64_t off) const {
     if (hasOverlapWithReadRequest(size, off)) {
+        const off64_t start = off;
+        const off64_t end = static_cast<off64_t>(off + size);
+
         auto first_redaction = redaction_ranges_.end();
-        auto last_redaction = redaction_ranges_.end();
+        auto last_redaction = redaction_ranges_.begin();
         for (auto iter = redaction_ranges_.begin(); iter != redaction_ranges_.end(); ++iter) {
-            const RedactionRange& rr = *iter;
-            // Look for the first range that overlaps with the read request
-            if (first_redaction == redaction_ranges_.end() && off <= rr.second &&
-                off + size >= rr.first) {
-                first_redaction = iter;
-            } else if (first_redaction != redaction_ranges_.end() && off + size < rr.first) {
-                // Once we're in the read request range, we start checking if
-                // we're out of it so we can return the result to the caller
+            if (iter->second > start && iter->first < end) {
+                if (iter < first_redaction) first_redaction = iter;
+                if (iter > last_redaction) last_redaction = iter;
+            }
+
+            if (iter->first >= end) {
                 break;
             }
-            last_redaction = iter;
         }
+
         if (first_redaction != redaction_ranges_.end()) {
+            CHECK(first_redaction <= last_redaction);
             return std::make_unique<vector<RedactionRange>>(first_redaction, last_redaction + 1);
         }
     }
     return std::make_unique<vector<RedactionRange>>();
 }
+
+void RedactionInfo::getReadRanges(off64_t off, size_t size, std::vector<ReadRange>* out) const {
+    const auto rr = getOverlappingRedactionRanges(size, off);
+    const size_t num_ranges = rr->size();
+    if (num_ranges == 0) {
+        return;
+    }
+
+    const off64_t read_start = off;
+    const off64_t read_end = static_cast<off64_t>(read_start + size);
+
+    // The algorithm for computing redaction ranges is very simple.
+    // Given a set of overlapping redaction ranges [s1, e1) [s2, e2) .. [sN, eN) for a read
+    // [s, e)
+    //
+    // We can construct a series of indices that we know will be the starts of every read range
+    // that we intend to return. Then, it's relatively simple to compute the lengths of the ranges.
+    // Also note that the read ranges we return always alternate in whether they're redacting or
+    // not. i.e, we will never return two consecutive redacting ranges or non redacting ranges.
+    std::vector<off64_t> sorted_indices;
+
+    // Compute the list of indices -- this list will always contain { e1, s2, e2... sN }
+    // In addition, it may contain s or both (s and s1), depending on the start index.
+    // In addition, it may contain e or both (e and eN), depending on the end index.
+    //
+    // For a concrete example, consider ranges [10, 20) and [30, 40)
+    // For a read [0, 60) : sorted_indices will be { 0, 10, 20, 30, 40, 60 } is_first = false
+    // For a read [15, 60) : sorted_indices will be { 15, 20, 30, 40, 60 } is_first = true
+    // For a read [0, 35) : sorted_indices will be { 0, 10, 20, 30, 35 } is_first = false
+    // For a read [15, 35) : sorted_indices will be { 15, 20, 30, 35 } is_first = true
+    for (int i = 0; i < num_ranges; ++i) {
+        sorted_indices.push_back(rr->at(i).first);
+        sorted_indices.push_back(rr->at(i).second);
+    }
+
+    // Find the right position for read_start in sorted_indices
+    // Either insert at the beginning or replace s1 with read_start
+    bool is_first_range_redaction = true;
+    if (read_start < rr->at(0).first) {
+        is_first_range_redaction = false;
+        sorted_indices.insert(sorted_indices.begin(), read_start);
+    } else {
+        sorted_indices.front() = read_start;
+    }
+
+    // Find the right position for read_end in sorted_indices
+    // Either insert at the end or replace eN with read_end
+    if (read_end > rr->at(num_ranges - 1).second) {
+        sorted_indices.push_back(read_end);
+    } else {
+        sorted_indices.back() = read_end;
+    }
+
+    bool is_redaction = is_first_range_redaction;
+    for (int i = 0; i < (sorted_indices.size() - 1); ++i) {
+        const off64_t read_size = sorted_indices[i + 1] - sorted_indices[i];
+        CHECK(read_size > 0);
+        out->push_back(ReadRange(sorted_indices[i], read_size, is_redaction));
+        is_redaction = !is_redaction;
+    }
+}
+
 }  // namespace fuse
 }  // namespace mediaprovider
diff --git a/jni/RedactionInfoTest.cpp b/jni/RedactionInfoTest.cpp
index 9d98058..76eec13 100644
--- a/jni/RedactionInfoTest.cpp
+++ b/jni/RedactionInfoTest.cpp
@@ -19,6 +19,7 @@
 #include <gtest/gtest.h>
 
 #include <memory>
+#include <ostream>
 #include <vector>
 
 #include "libfuse_jni/RedactionInfo.h"
@@ -28,249 +29,355 @@
 using std::unique_ptr;
 using std::vector;
 
-unique_ptr<vector<RedactionRange>> createRedactionRangeVector(int num_rr, off64_t* rr) {
-    auto res = std::make_unique<vector<RedactionRange>>();
-    for (int i = 0; i < num_rr; ++i) {
-        res->push_back(RedactionRange(rr[2 * i], rr[2 * i + 1]));
-    }
-    return res;
+std::ostream& operator<<(std::ostream& os, const ReadRange& rr) {
+    os << "{ " << rr.start << ", " << rr.size << ", " << rr.is_redaction << " }";
+    return os;
 }
 
-/**
- * Test the case where there are no redaction ranges.
- */
 TEST(RedactionInfoTest, testNoRedactionRanges) {
     RedactionInfo info(0, nullptr);
     EXPECT_EQ(0, info.size());
     EXPECT_EQ(false, info.isRedactionNeeded());
 
-    auto overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 1000, /*off*/ 1000);
-    EXPECT_EQ(0, overlapping_rr->size());
+    std::vector<ReadRange> out;
+    info.getReadRanges(0, std::numeric_limits<size_t>::max(), &out);
+    EXPECT_EQ(0, out.size());
 }
 
-/**
- * Test the case where there is 1 redaction range.
- */
+// Test the case where there is 1 redaction range.
 TEST(RedactionInfoTest, testSingleRedactionRange) {
     off64_t ranges[2] = {
             1,
             10,
     };
+
     RedactionInfo info(1, ranges);
     EXPECT_EQ(1, info.size());
     EXPECT_EQ(true, info.isRedactionNeeded());
+
     // Overlapping ranges
-    auto overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 1000, /*off*/ 0);
-    EXPECT_EQ(*(createRedactionRangeVector(1, ranges)), *overlapping_rr);
+    std::vector<ReadRange> out;
+    info.getReadRanges(0, 1000, &out);  // read offsets [0, 1000)
+    EXPECT_EQ(3, out.size());
+    EXPECT_EQ(ReadRange(0, 1, false), out[0]);
+    EXPECT_EQ(ReadRange(1, 9, true), out[1]);
+    EXPECT_EQ(ReadRange(10, 990, false), out[2]);
 
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 5, /*off*/ 0);
-    EXPECT_EQ(*(createRedactionRangeVector(1, ranges)), *overlapping_rr);
+    out.clear();
+    info.getReadRanges(0, 5, &out);  // read offsets [0, 5)
+    EXPECT_EQ(2, out.size());
+    EXPECT_EQ(ReadRange(0, 1, false), out[0]);  // offsets: [0, 1) len = 1
+    EXPECT_EQ(ReadRange(1, 4, true), out[1]);   // offsets: [1, 5) len = 4
 
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 5, /*off*/ 5);
-    EXPECT_EQ(*(createRedactionRangeVector(1, ranges)), *overlapping_rr);
+    out.clear();
+    info.getReadRanges(1, 10, &out);  // read offsets [1, 11)
+    EXPECT_EQ(2, out.size());
+    EXPECT_EQ(ReadRange(1, 9, true), out[0]);    // offsets: [1, 10) len = 9
+    EXPECT_EQ(ReadRange(10, 1, false), out[1]);  // offsets: [10, 11) len = 1
 
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 10, /*off*/ 1);
-    EXPECT_EQ(*(createRedactionRangeVector(1, ranges)), *overlapping_rr);
+    // Read ranges that start or end with the boundary of the redacted area.
+    out.clear();
+    info.getReadRanges(5, 5, &out);  // read offsets [5, 10)
+    EXPECT_EQ(1, out.size());
+    EXPECT_EQ(ReadRange(5, 5, true), out[0]);  // offsets: [5, 10) len = 5
 
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 1, /*off*/ 1);
-    EXPECT_EQ(*(createRedactionRangeVector(1, ranges)), *overlapping_rr);
+    out.clear();
+    info.getReadRanges(1, 5, &out);  // read offsets [1, 6)
+    EXPECT_EQ(1, out.size());
+    EXPECT_EQ(ReadRange(1, 5, true), out[0]);  // offsets: [1, 6) len = 5
 
-    // Non-overlapping range
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 100, /*off*/ 11);
-    EXPECT_EQ(*(createRedactionRangeVector(0, nullptr)), *overlapping_rr);
+    // Read ranges adjoining the redacted area.
+    out.clear();
+    info.getReadRanges(10, 10, &out);  // read offsets [10, 20)
+    EXPECT_EQ(0, out.size());
 
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 1, /*off*/ 11);
-    EXPECT_EQ(*(createRedactionRangeVector(0, nullptr)), *overlapping_rr);
+    out.clear();
+    info.getReadRanges(0, 1, &out);  // read offsets [0, 1)
+    EXPECT_EQ(0, out.size());
+
+    // Read Range outside the redacted area.
+    out.clear();
+    info.getReadRanges(200, 10, &out);  // read offsets [200, 210)
+    EXPECT_EQ(0, out.size());
 }
 
-/**
- * Test the case where the redaction ranges don't require sorting or merging
- */
+// Multiple redaction ranges within a given area.
 TEST(RedactionInfoTest, testSortedAndNonOverlappingRedactionRanges) {
-    off64_t ranges[6] = {
-            1, 10, 15, 21, 32, 40,
-    };
+    // [10, 20), [30, 40), [40, 50)
+    off64_t ranges[4] = {10, 20, 30, 40};
+
+    RedactionInfo info = RedactionInfo(2, ranges);
+    EXPECT_EQ(2, info.size());
+    EXPECT_EQ(true, info.isRedactionNeeded());
+
+    std::vector<ReadRange> out;
+    info.getReadRanges(0, 40, &out);  // read offsets [0, 40)
+    EXPECT_EQ(4, out.size());
+    EXPECT_EQ(ReadRange(0, 10, false), out[0]);   // offsets: [0, 10) len = 10
+    EXPECT_EQ(ReadRange(10, 10, true), out[1]);   // offsets: [10, 20) len = 10
+    EXPECT_EQ(ReadRange(20, 10, false), out[2]);  // offsets: [20, 30) len = 10
+    EXPECT_EQ(ReadRange(30, 10, true), out[3]);   // offsets [30, 40) len = 10
+
+    // Read request straddling two ranges.
+    out.clear();
+    info.getReadRanges(5, 30, &out);  // read offsets [5, 35)
+    EXPECT_EQ(4, out.size());
+    EXPECT_EQ(ReadRange(5, 5, false), out[0]);    // offsets: [5, 10) len = 5
+    EXPECT_EQ(ReadRange(10, 10, true), out[1]);   // offsets: [10, 20) len = 10
+    EXPECT_EQ(ReadRange(20, 10, false), out[2]);  // offsets: [20, 30) len = 10
+    EXPECT_EQ(ReadRange(30, 5, true), out[3]);    // offsets [30, 35) len = 5
+
+    // Read request overlapping first range only.
+    out.clear();
+    info.getReadRanges(5, 10, &out);  // read offsets [5, 15)
+    EXPECT_EQ(2, out.size());
+    EXPECT_EQ(ReadRange(5, 5, false), out[0]);  // offsets: [5, 10) len = 5
+    EXPECT_EQ(ReadRange(10, 5, true), out[1]);  // offsets: [10, 15) len = 5
+
+    // Read request overlapping last range only.
+    out.clear();
+    info.getReadRanges(35, 10, &out);  // read offsets [35, 45)
+    EXPECT_EQ(2, out.size());
+    EXPECT_EQ(ReadRange(35, 5, true), out[0]);   // offsets: [35, 40) len = 5
+    EXPECT_EQ(ReadRange(40, 5, false), out[1]);  // offsets: [40, 45) len = 5
+
+    // Read request overlapping no ranges.
+    out.clear();
+    info.getReadRanges(0, 10, &out);  // read offsets [0, 10)
+    EXPECT_EQ(0, out.size());
+    out.clear();
+    info.getReadRanges(21, 5, &out);  // read offsets [21, 26)
+    EXPECT_EQ(0, out.size());
+    out.clear();
+    info.getReadRanges(40, 10, &out);  // read offsets [40, 50)
+    EXPECT_EQ(0, out.size());
+}
+
+// Multiple redaction ranges overlapping with read range.
+TEST(RedactionInfoTest, testReadRangeOverlappingWithRedactionRanges) {
+    // [10, 20), [30, 40)
+    off64_t ranges[4] = {10, 20, 30, 40};
+
+    RedactionInfo info = RedactionInfo(2, ranges);
+    EXPECT_EQ(2, info.size());
+    EXPECT_EQ(true, info.isRedactionNeeded());
+
+    std::vector<ReadRange> out;
+    // Read request overlaps with end of the ranges.
+    info.getReadRanges(20, 20, &out);  // read offsets [20, 40)
+    EXPECT_EQ(2, out.size());
+    EXPECT_EQ(ReadRange(20, 10, false), out[0]);  // offsets: [20, 30) len = 10
+    EXPECT_EQ(ReadRange(30, 10, true), out[1]);   // offsets: [30, 40) len = 10
+
+    // Read request overlapping with start of the ranges
+    out.clear();
+    info.getReadRanges(10, 20, &out);  // read offsets [10, 30)
+    EXPECT_EQ(2, out.size());
+    EXPECT_EQ(ReadRange(10, 10, true), out[0]);   // offsets: [10, 20) len = 10
+    EXPECT_EQ(ReadRange(20, 10, false), out[1]);  // offsets: [20, 30) len = 10
+
+    // Read request overlaps with start of one and end of other range.
+    out.clear();
+    info.getReadRanges(10, 30, &out);  // read offsets [10, 40)
+    EXPECT_EQ(3, out.size());
+    EXPECT_EQ(ReadRange(10, 10, true), out[0]);   // offsets: [10, 20) len = 10
+    EXPECT_EQ(ReadRange(20, 10, false), out[1]);  // offsets: [20, 30) len = 10
+    EXPECT_EQ(ReadRange(30, 10, true), out[2]);   // offsets: [30, 40) len = 10
+
+    // Read request overlaps with end of one and start of other range.
+    out.clear();
+    info.getReadRanges(20, 10, &out);  // read offsets [20, 30)
+    EXPECT_EQ(0, out.size());
+}
+
+TEST(RedactionInfoTest, testRedactionRangesSorted) {
+    off64_t ranges[6] = {30, 40, 50, 60, 10, 20};
 
     RedactionInfo info = RedactionInfo(3, ranges);
     EXPECT_EQ(3, info.size());
     EXPECT_EQ(true, info.isRedactionNeeded());
 
-    // Read request strictly contains all ranges: [0, 49]
-    auto overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 50, /*off*/ 0);
-    off64_t expected1[] = {
-            1, 10, 15, 21, 32, 40,
-    };
-    EXPECT_EQ(*(createRedactionRangeVector(3, expected1)), *overlapping_rr);
+    std::vector<ReadRange> out;
+    info.getReadRanges(0, 60, &out);  // read offsets [0, 60)
+    EXPECT_EQ(6, out.size());
+    EXPECT_EQ(ReadRange(0, 10, false), out[0]);   // offsets: [0, 10) len = 10
+    EXPECT_EQ(ReadRange(10, 10, true), out[1]);   // offsets: [10, 20) len = 10
+    EXPECT_EQ(ReadRange(20, 10, false), out[2]);  // offsets: [20, 30) len = 10
+    EXPECT_EQ(ReadRange(30, 10, true), out[3]);   // offsets [30, 40) len = 10
+    EXPECT_EQ(ReadRange(40, 10, false), out[4]);  // offsets [40, 50) len = 10
+    EXPECT_EQ(ReadRange(50, 10, true), out[5]);   // offsets [50, 60) len = 10
 
-    // Read request strictly contains a subset of the ranges: [15, 40]
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 26, /*off*/ 15);
-    off64_t expected2[] = {
-            15,
-            21,
-            32,
-            40,
-    };
-    EXPECT_EQ(*(createRedactionRangeVector(2, expected2)), *overlapping_rr);
+    // Read request overlapping first range only.
+    out.clear();
+    info.getReadRanges(5, 10, &out);  // read offsets [5, 15)
+    EXPECT_EQ(2, out.size());
+    EXPECT_EQ(ReadRange(5, 5, false), out[0]);  // offsets: [5, 10) len = 5
+    EXPECT_EQ(ReadRange(10, 5, true), out[1]);  // offsets: [10, 15) len = 5
 
-    // Read request intersects with a subset of the ranges" [16, 32]
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 17, /*off*/ 16);
-    EXPECT_EQ(*(createRedactionRangeVector(2, expected2)), *overlapping_rr);
+    // Read request overlapping last range only.
+    out.clear();
+    info.getReadRanges(55, 10, &out);  // read offsets [55, 65)
+    EXPECT_EQ(2, out.size());
+    EXPECT_EQ(ReadRange(55, 5, true), out[0]);   // offsets: [55, 60) len = 5
+    EXPECT_EQ(ReadRange(60, 5, false), out[1]);  // offsets: [60, 65) len = 5
+
+    // Read request overlapping no ranges.
+    out.clear();
+    info.getReadRanges(0, 10, &out);  // read offsets [0, 10)
+    EXPECT_EQ(0, out.size());
+    out.clear();
+    info.getReadRanges(60, 10, &out);  // read offsets [60, 70)
+    EXPECT_EQ(0, out.size());
 }
 
-/**
- * Test the case where the redaction ranges require sorting
- */
-TEST(RedactionInfoTest, testSortRedactionRanges) {
-    off64_t ranges[6] = {
-            1, 10, 32, 40, 15, 21,
-    };
-
-    RedactionInfo info = RedactionInfo(3, ranges);
-    EXPECT_EQ(3, info.size());
-    EXPECT_EQ(true, info.isRedactionNeeded());
-
-    // Read request strictly contains all ranges: [0, 49]
-    auto overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 50, /*off*/ 0);
-    off64_t expected1[] = {
-            1, 10, 15, 21, 32, 40,
-    };
-    EXPECT_EQ(*(createRedactionRangeVector(3, expected1)), *overlapping_rr);
-
-    // Read request strictly contains a subset of the ranges: [15, 40]
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 26, /*off*/ 15);
-    off64_t expected2[] = {
-            15,
-            21,
-            32,
-            40,
-    };
-    EXPECT_EQ(*(createRedactionRangeVector(2, expected2)), *overlapping_rr);
-
-    // Read request intersects with a subset of the ranges" [16, 32]
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 17, /*off*/ 16);
-    EXPECT_EQ(*(createRedactionRangeVector(2, expected2)), *overlapping_rr);
-}
-
-/**
- * Test the case where the redaction ranges require sorting or merging
- */
+// Test that the ranges are both sorted and merged
 TEST(RedactionInfoTest, testSortAndMergeRedactionRanges) {
-    off64_t ranges[8] = {
-            35, 40, 1, 10, 32, 35, 15, 21,
-    };
+    // Ranges are: [10, 20), [25, 40), [50, 60)
+    off64_t ranges[8] = {30, 40, 10, 20, 25, 30, 50, 60};
 
     RedactionInfo info = RedactionInfo(4, ranges);
     EXPECT_EQ(3, info.size());
     EXPECT_EQ(true, info.isRedactionNeeded());
 
-    // Read request strictly contains all ranges: [0, 49]
-    auto overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 50, /*off*/ 0);
-    off64_t expected1[] = {
-            1, 10, 15, 21, 32, 40,
-    };
-    EXPECT_EQ(*(createRedactionRangeVector(3, expected1)), *overlapping_rr);
-
-    // Read request strictly contains a subset of the ranges: [15, 40]
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 26, /*off*/ 15);
-    off64_t expected2[] = {
-            15,
-            21,
-            32,
-            40,
-    };
-    EXPECT_EQ(*(createRedactionRangeVector(2, expected2)), *overlapping_rr);
-
-    // Read request intersects with a subset of the ranges" [16, 32]
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 17, /*off*/ 16);
-    EXPECT_EQ(*(createRedactionRangeVector(2, expected2)), *overlapping_rr);
+    std::vector<ReadRange> out;
+    info.getReadRanges(0, 60, &out);  // read offsets [0, 60)
+    EXPECT_EQ(6, out.size());
+    EXPECT_EQ(ReadRange(0, 10, false), out[0]);   // offsets: [0, 10) len = 10
+    EXPECT_EQ(ReadRange(10, 10, true), out[1]);   // offsets: [10, 20) len = 10
+    EXPECT_EQ(ReadRange(20, 5, false), out[2]);   // offsets: [20, 25) len = 5
+    EXPECT_EQ(ReadRange(25, 15, true), out[3]);   // offsets [25, 40) len = 15
+    EXPECT_EQ(ReadRange(40, 10, false), out[4]);  // offsets [40, 50) len = 10
+    EXPECT_EQ(ReadRange(50, 10, true), out[5]);   // offsets [50, 60) len = 10
 }
 
-/**
- * Test the case where the redaction ranges all merge into the first range
- */
-TEST(RedactionInfoTest, testMergeAllRangesIntoTheFirstRange) {
-    off64_t ranges[10] = {
-            1, 100, 2, 99, 3, 98, 4, 97, 3, 15,
-    };
+// Test that the ranges are both sorted and merged when there's an overlap.
+//
+// TODO: Can this ever happen ? Will we ever be in a state where we need to
+// redact exif attributes that have overlapping ranges ?
+TEST(RedactionInfoTest, testSortAndMergeRedactionRanges_overlap) {
+    // Ranges are: [10, 20), [25, 40), [50, 60)
+    off64_t ranges[8] = {30, 40, 10, 20, 25, 34, 50, 60};
 
-    RedactionInfo info = RedactionInfo(5, ranges);
-    EXPECT_EQ(1, info.size());
+    RedactionInfo info = RedactionInfo(4, ranges);
+    EXPECT_EQ(3, info.size());
     EXPECT_EQ(true, info.isRedactionNeeded());
 
-    // Read request equals the range: [1, 100]
-    auto overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 100, /*off*/ 1);
-    off64_t expected[] = {1, 100};
-    EXPECT_EQ(*(createRedactionRangeVector(1, expected)), *overlapping_rr);
-
-    // Read request is contained in the range: [15, 40]
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 26, /*off*/ 15);
-    EXPECT_EQ(*(createRedactionRangeVector(1, expected)), *overlapping_rr);
-
-    // Read request that strictly contains all of the redaction ranges
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 1000, /*off*/ 0);
-    EXPECT_EQ(*(createRedactionRangeVector(1, expected)), *overlapping_rr);
+    std::vector<ReadRange> out;
+    info.getReadRanges(0, 60, &out);  // read offsets [0, 60)
+    EXPECT_EQ(6, out.size());
+    EXPECT_EQ(ReadRange(0, 10, false), out[0]);   // offsets: [0, 10) len = 10
+    EXPECT_EQ(ReadRange(10, 10, true), out[1]);   // offsets: [10, 20) len = 10
+    EXPECT_EQ(ReadRange(20, 5, false), out[2]);   // offsets: [20, 25) len = 5
+    EXPECT_EQ(ReadRange(25, 15, true), out[3]);   // offsets [25, 40) len = 15
+    EXPECT_EQ(ReadRange(40, 10, false), out[4]);  // offsets [40, 50) len = 10
+    EXPECT_EQ(ReadRange(50, 10, true), out[5]);   // offsets [50, 60) len = 10
 }
 
-/**
- * Test the case where the redaction ranges all merge into the last range
- */
-TEST(RedactionInfoTest, testMergeAllRangesIntoTheLastRange) {
-    off64_t ranges[10] = {
-            4, 96, 3, 97, 2, 98, 1, 99, 0, 100,
-    };
+// WARNING: The tests below assume that merging of ranges happen during
+// object construction (which is asserted by the check on |info.size()|.
+// Therefore, we don't write redundant tests for boundary conditions that
+// we've covered above. If this ever changes, these tests need to be expanded.
+TEST(RedactionInfoTest, testMergeAllRangesIntoSingleRange) {
+    // Ranges are: [8, 24)
+    off64_t ranges[8] = {10, 20, 8, 14, 14, 24, 12, 16};
 
-    RedactionInfo info = RedactionInfo(5, ranges);
+    RedactionInfo info = RedactionInfo(4, ranges);
     EXPECT_EQ(1, info.size());
     EXPECT_EQ(true, info.isRedactionNeeded());
 
-    // Read request equals the range: [0, 100]
-    auto overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 100, /*off*/ 0);
-    off64_t expected[] = {0, 100};
-    EXPECT_EQ(*(createRedactionRangeVector(1, expected)), *overlapping_rr);
+    std::vector<ReadRange> out;
+    info.getReadRanges(0, 30, &out);  // read offsets [0, 30)
+    EXPECT_EQ(3, out.size());
+    EXPECT_EQ(ReadRange(0, 8, false), out[0]);   // offsets: [0, 8) len = 8
+    EXPECT_EQ(ReadRange(8, 16, true), out[1]);   // offsets: [8, 24) len = 16
+    EXPECT_EQ(ReadRange(24, 6, false), out[2]);  // offsets: [24, 30) len = 6
 
-    // Read request is contained in the range: [15, 40]
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 26, /*off*/ 15);
-    EXPECT_EQ(*(createRedactionRangeVector(1, expected)), *overlapping_rr);
+    // Ranges are: [85, 100)
+    off64_t ranges2[10] = {90, 95, 95, 100, 85, 91, 92, 94, 99, 100};
+    info = RedactionInfo(5, ranges2);
+    EXPECT_EQ(1, info.size());
+    EXPECT_EQ(true, info.isRedactionNeeded());
 
-    // Read request that strictly contains all of the redaction ranges
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 1000, /*off*/ 0);
-    EXPECT_EQ(*(createRedactionRangeVector(1, expected)), *overlapping_rr);
+    out.clear();
+    info.getReadRanges(80, 30, &out);  // read offsets [80, 110)
+    EXPECT_EQ(3, out.size());
+    EXPECT_EQ(ReadRange(80, 5, false), out[0]);    // offsets: [80, 85) len = 5
+    EXPECT_EQ(ReadRange(85, 15, true), out[1]);    // offsets: [85, 100) len = 15
+    EXPECT_EQ(ReadRange(100, 10, false), out[2]);  // offsets: [100, 110) len = 10
 }
 
-/**
- * Test the case where the redaction ranges progressively merge
- */
-TEST(RedactionInfoTest, testMergeAllRangesProgressively) {
-    off64_t ranges[10] = {
-            1, 11, 2, 12, 3, 13, 4, 14, 5, 15,
-    };
+TEST(RedactionInfoTest, testMergeMultipleRanges) {
+    // Ranges are: [10, 30), [60, 80)
+    off64_t ranges[8] = {20, 30, 10, 20, 70, 80, 60, 70};
 
-    RedactionInfo info = RedactionInfo(5, ranges);
-    EXPECT_EQ(1, info.size());
+    RedactionInfo info = RedactionInfo(4, ranges);
+    EXPECT_EQ(2, info.size());
     EXPECT_EQ(true, info.isRedactionNeeded());
 
-    // Read request equals the range: [1, 15]
-    auto overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 15, /*off*/ 1);
-    off64_t expected[] = {1, 15};
-    EXPECT_EQ(*(createRedactionRangeVector(1, expected)), *overlapping_rr);
+    std::vector<ReadRange> out;
+    info.getReadRanges(0, 100, &out);  // read offsets [0, 100)
+    EXPECT_EQ(5, out.size());
+    EXPECT_EQ(ReadRange(0, 10, false), out[0]);   // offsets: [0, 10) len = 10
+    EXPECT_EQ(ReadRange(10, 20, true), out[1]);   // offsets: [10, 30) len = 20
+    EXPECT_EQ(ReadRange(30, 30, false), out[2]);  // offsets: [30, 60) len = 30
+    EXPECT_EQ(ReadRange(60, 20, true), out[3]);   // offsets [60, 80) len = 20
+    EXPECT_EQ(ReadRange(80, 20, false), out[4]);  // offsets [80, 100) len = 20
+}
 
-    // Read request is contained in the range: [2, 12]
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 10, /*off*/ 2);
-    EXPECT_EQ(*(createRedactionRangeVector(1, expected)), *overlapping_rr);
+// Redaction ranges of size zero.
+TEST(RedactionInfoTest, testRedactionRangesZeroSize) {
+    // [10, 20), [30, 40)
+    off64_t ranges[6] = {10, 20, 30, 40, 25, 25};
 
-    // Read request that strictly contains all of the redaction ranges
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 100, /*off*/ 0);
-    EXPECT_EQ(*(createRedactionRangeVector(1, expected)), *overlapping_rr);
-
-    off64_t reverse_rr[10] = {
-            5, 15, 4, 14, 3, 13, 2, 12, 1, 11,
-    };
-
-    RedactionInfo reverse_info = RedactionInfo(5, reverse_rr);
-    EXPECT_EQ(1, info.size());
+    RedactionInfo info = RedactionInfo(3, ranges);
+    EXPECT_EQ(2, info.size());
     EXPECT_EQ(true, info.isRedactionNeeded());
 
-    // Read request equals the range: [1, 15]
-    overlapping_rr = info.getOverlappingRedactionRanges(/*size*/ 15, /*off*/ 1);
-    EXPECT_EQ(*(createRedactionRangeVector(1, expected)), *overlapping_rr);
+    // Normal read request, should skip range with zero size
+    std::vector<ReadRange> out;
+    info.getReadRanges(0, 40, &out);  // read offsets [0, 40)
+    EXPECT_EQ(4, out.size());
+    EXPECT_EQ(ReadRange(0, 10, false), out[0]);   // offsets: [0, 10) len = 10
+    EXPECT_EQ(ReadRange(10, 10, true), out[1]);   // offsets: [10, 20) len = 10
+    EXPECT_EQ(ReadRange(20, 10, false), out[2]);  // offsets: [20, 30) len = 10
+    EXPECT_EQ(ReadRange(30, 10, true), out[3]);   // offsets [30, 40) len = 10
+
+    // Read request starting at offset overlapping with zero size range.
+    out.clear();
+    info.getReadRanges(25, 10, &out);  // read offsets [25, 35)
+    EXPECT_EQ(2, out.size());
+    EXPECT_EQ(ReadRange(25, 5, false), out[0]);  // offsets: [25, 30) len = 5
+    EXPECT_EQ(ReadRange(30, 5, true), out[1]);   // offsets [30, 35) len = 5
+
+    // 1 byte read request starting at offset overlapping with zero size range.
+    out.clear();
+    info.getReadRanges(25, 1, &out);  // read offsets [25, 26)
+    EXPECT_EQ(0, out.size());
+
+    // Read request ending at offset overlapping with zero size range.
+    out.clear();
+    info.getReadRanges(0, 25, &out);  // read offsets [0, 25)
+    EXPECT_EQ(3, out.size());
+    EXPECT_EQ(ReadRange(0, 10, false), out[0]);  // offsets: [0, 10) len = 10
+    EXPECT_EQ(ReadRange(10, 10, true), out[1]);  // offsets: [10, 20) len = 10
+    EXPECT_EQ(ReadRange(20, 5, false), out[2]);  // offsets: [20, 25) len = 10
+
+    // Read request that includes only zero size range
+    out.clear();
+    info.getReadRanges(20, 10, &out);  // read offsets [20, 27)
+    EXPECT_EQ(0, out.size());
+}
+
+// Single redaction range with zero size
+TEST(RedactionInfoTest, testSingleRedactionRangesZeroSize) {
+    off64_t ranges[2] = {10, 10};
+
+    RedactionInfo info = RedactionInfo(1, ranges);
+    EXPECT_EQ(0, info.size());
+    EXPECT_EQ(false, info.isRedactionNeeded());
+
+    // Normal read request, should skip range with zero size
+    std::vector<ReadRange> out;
+    info.getReadRanges(0, 40, &out);  // read offsets [0, 40)
+    EXPECT_EQ(0, out.size());
 }
diff --git a/jni/include/libfuse_jni/RedactionInfo.h b/jni/include/libfuse_jni/RedactionInfo.h
index 5218e28..fe475cb 100644
--- a/jni/include/libfuse_jni/RedactionInfo.h
+++ b/jni/include/libfuse_jni/RedactionInfo.h
@@ -17,19 +17,31 @@
 #ifndef MEDIA_PROVIDER_FUSE_REDACTIONINFO_H_
 #define MEDIA_PROVIDER_FUSE_REDACTIONINFO_H_
 
+#include <ostream>
 #include <vector>
 
 namespace mediaprovider {
 namespace fuse {
 
 /**
- * Type that represents a single redaction range within a file.
- * first is the offset of the first byte in the redaction range within the file
- * second is the offset of the last byte in the redaction range within the file
- * Ranges are inclusive.
+ * Type that represents a single redaction range within a file. Contains
+ * a pair of offsets in the file, [start, end).
  */
 typedef std::pair<off64_t, off64_t> RedactionRange;
 
+class ReadRange {
+  public:
+    ReadRange(off64_t s, size_t l, bool r) : start(s), size(l), is_redaction(r) {}
+
+    const off64_t start;
+    const size_t size;
+    const bool is_redaction;
+
+    bool operator==(const ReadRange& rhs) const {
+        return start == rhs.start && size == rhs.size && is_redaction == rhs.is_redaction;
+    }
+};
+
 class RedactionInfo {
   public:
     /**
@@ -55,6 +67,23 @@
      * Calls d'tor for redactionRanges (vector).
      */
     ~RedactionInfo() = default;
+
+    /**
+     * Returns a set of ranges to fulfill a read request starting at |off| of size
+     * |size|.
+     */
+    void getReadRanges(off64_t off, size_t size, std::vector<ReadRange>* out) const;
+
+    /**
+     * Returns whether any ranges need to be redacted.
+     */
+    bool isRedactionNeeded() const;
+    /**
+     * Returns number of redaction ranges.
+     */
+    int size() const;
+
+  private:
     /**
      * Calculates the redaction ranges that overlap with a given read request.
      * The read request is defined by its size and the offset of its first byte.
@@ -70,16 +99,6 @@
      */
     std::unique_ptr<std::vector<RedactionRange>> getOverlappingRedactionRanges(size_t size,
                                                                                off64_t off) const;
-    /**
-     * Returns whether any ranges need to be redacted.
-     */
-    bool isRedactionNeeded() const;
-    /**
-     * Returns number of redaction ranges.
-     */
-    int size() const;
-
-  private:
     std::vector<RedactionRange> redaction_ranges_;
     void processRedactionRanges(int redaction_ranges_num, const off64_t* redaction_ranges);
     bool hasOverlapWithReadRequest(size_t size, off64_t off) const;
diff --git a/jni/node-inl.h b/jni/node-inl.h
index 364a327..aa067be 100644
--- a/jni/node-inl.h
+++ b/jni/node-inl.h
@@ -19,6 +19,7 @@
 
 #include <android-base/logging.h>
 
+#include <atomic>
 #include <cstdint>
 #include <limits>
 #include <list>
@@ -40,13 +41,16 @@
 namespace fuse {
 
 struct handle {
-    explicit handle(int fd, const RedactionInfo* ri, bool cached) : fd(fd), ri(ri), cached(cached) {
+    explicit handle(int fd, const RedactionInfo* ri, bool cached, bool passthrough, uid_t uid)
+        : fd(fd), ri(ri), cached(cached), passthrough(passthrough), uid(uid) {
         CHECK(ri != nullptr);
     }
 
     const int fd;
     const std::unique_ptr<const RedactionInfo> ri;
     const bool cached;
+    const bool passthrough;
+    const uid_t uid;
 
     ~handle() { close(fd); }
 };
@@ -114,13 +118,14 @@
 class node {
   public:
     // Creates a new node with the specified parent, name and lock.
-    static node* Create(node* parent, const std::string& name, std::recursive_mutex* lock,
+    static node* Create(node* parent, const std::string& name, const std::string& io_path,
+                        bool transforms_complete, const int transforms, std::recursive_mutex* lock,
                         NodeTracker* tracker) {
         // Place the entire constructor under a critical section to make sure
         // node creation, tracking (if enabled) and the addition to a parent are
         // atomic.
         std::lock_guard<std::recursive_mutex> guard(*lock);
-        return new node(parent, name, lock, tracker);
+        return new node(parent, name, io_path, transforms_complete, transforms, lock, tracker);
     }
 
     // Creates a new root node. Root nodes have no parents by definition
@@ -128,7 +133,7 @@
     static node* CreateRoot(const std::string& path, std::recursive_mutex* lock,
                             NodeTracker* tracker) {
         std::lock_guard<std::recursive_mutex> guard(*lock);
-        node* root = new node(nullptr, path, lock, tracker);
+        node* root = new node(nullptr, path, path, true, 0, lock, tracker);
 
         // The root always has one extra reference to avoid it being
         // accidentally collected.
@@ -176,36 +181,40 @@
 
     // Looks up a direct descendant of this node by name. If |acquire| is true,
     // also Acquire the node before returning a reference to it.
-    node* LookupChildByName(const std::string& name, bool acquire) const {
-        std::lock_guard<std::recursive_mutex> guard(*lock_);
-
-        // lower_bound will give us the first child with strcasecmp(child->name, name) >=0.
-        // For more context see comment on the NodeCompare struct.
-        auto start = children_.lower_bound(std::make_pair(name, 0));
-        // upper_bound will give us the first child with strcasecmp(child->name, name) > 0
-        auto end =
-                children_.upper_bound(std::make_pair(name, std::numeric_limits<uintptr_t>::max()));
-        for (auto it = start; it != end; it++) {
-            node* child = *it;
-            if (!child->deleted_) {
+    node* LookupChildByName(const std::string& name, bool acquire, const int transforms = 0) const {
+        return ForChild(name, [acquire, transforms](node* child) {
+            if (child->transforms_ == transforms) {
                 if (acquire) {
                     child->Acquire();
                 }
-                return child;
+                return true;
             }
-        }
-        return nullptr;
+            return false;
+        });
     }
 
-    // Marks this node as deleted. It is still associated with its parent, and
-    // all open handles etc. to this node are preserved until its refcount goes
+    // Marks this node children as deleted. They are still associated with their parent, and
+    // all open handles etc. to the deleted nodes are preserved until their refcount goes
     // to zero.
+    void SetDeletedForChild(const std::string& name) {
+        ForChild(name, [](node* child) {
+            child->SetDeleted();
+            return false;
+        });
+    }
+
     void SetDeleted() {
         std::lock_guard<std::recursive_mutex> guard(*lock_);
-
         deleted_ = true;
     }
 
+    void RenameChild(const std::string& old_name, const std::string& new_name, node* new_parent) {
+        ForChild(old_name, [=](node* child) {
+            child->Rename(new_name, new_parent);
+            return false;
+        });
+    }
+
     void Rename(const std::string& name, node* new_parent) {
         std::lock_guard<std::recursive_mutex> guard(*lock_);
 
@@ -252,6 +261,16 @@
         return name_;
     }
 
+    const std::string& GetIoPath() const { return io_path_; }
+
+    int GetTransforms() const { return transforms_; }
+
+    bool IsTransformsComplete() const {
+        return transforms_complete_.load(std::memory_order_acquire);
+    }
+
+    void SetTransformsComplete() { transforms_complete_.store(true, std::memory_order_release); }
+
     node* GetParent() const {
         std::lock_guard<std::recursive_mutex> guard(*lock_);
         return parent_;
@@ -282,6 +301,26 @@
         return false;
     }
 
+    bool HasCaseInsensitiveMatch() const {
+        std::lock_guard<std::recursive_mutex> guard(*lock_);
+        return has_case_insensitive_match_;
+    }
+
+    void SetCaseInsensitiveMatch() {
+        std::lock_guard<std::recursive_mutex> guard(*lock_);
+        has_case_insensitive_match_ = true;
+    }
+
+    bool HasRedactedCache() const {
+        std::lock_guard<std::recursive_mutex> guard(*lock_);
+        return has_redacted_cache_;
+    }
+
+    void SetRedactedCache(bool state) {
+        std::lock_guard<std::recursive_mutex> guard(*lock_);
+        has_redacted_cache_ = state;
+    }
+
     inline void AddDirHandle(dirhandle* d) {
         std::lock_guard<std::recursive_mutex> guard(*lock_);
 
@@ -305,10 +344,16 @@
     static const node* LookupAbsolutePath(const node* root, const std::string& absolute_path);
 
   private:
-    node(node* parent, const std::string& name, std::recursive_mutex* lock, NodeTracker* tracker)
+    node(node* parent, const std::string& name, const std::string& io_path, bool transforms_complete,
+         const int transforms, std::recursive_mutex* lock, NodeTracker* tracker)
         : name_(name),
+          io_path_(io_path),
+          transforms_complete_(transforms_complete),
+          transforms_(transforms),
           refcount_(0),
           parent_(nullptr),
+          has_redacted_cache_(false),
+          has_case_insensitive_match_(false),
           deleted_(false),
           lock_(lock),
           tracker_(tracker) {
@@ -359,6 +404,32 @@
         }
     }
 
+    // Finds *all* non-deleted nodes matching |name| and runs the function |callback| on each
+    // node until |callback| returns true.
+    // When |callback| returns true, the matched node is returned
+    node* ForChild(const std::string& name, const std::function<bool(node*)>& callback) const {
+        std::lock_guard<std::recursive_mutex> guard(*lock_);
+
+        // lower_bound will give us the first child with strcasecmp(child->name, name) >=0.
+        // For more context see comment on the NodeCompare struct.
+        auto start = children_.lower_bound(std::make_pair(name, 0));
+        // upper_bound will give us the first child with strcasecmp(child->name, name) > 0
+        auto end =
+                children_.upper_bound(std::make_pair(name, std::numeric_limits<uintptr_t>::max()));
+
+        // Make a copy of the matches because calling callback might modify the list which will
+        // cause issues while iterating over them.
+        std::vector<node*> children(start, end);
+
+        for (node* child : children) {
+            if (!child->deleted_ && callback(child)) {
+                return child;
+            }
+        }
+
+        return nullptr;
+    }
+
     // A custom heterogeneous comparator used for set of this node's children_ to speed up child
     // node by name lookups.
     //
@@ -405,6 +476,15 @@
 
     // The name of this node. Non-const because it can change during renames.
     std::string name_;
+    // Filesystem path that will be used for IO (if it is non-empty) instead of node->BuildPath
+    const std::string io_path_;
+    // Whether any transforms required on |io_path_| are complete.
+    // If false, might need to call a node transform function with |transforms| below
+    std::atomic_bool transforms_complete_;
+    // Opaque flags that determine the 'supported' and 'required' transforms to perform on node
+    // before IO. These flags should not be interpreted in native but should be passed as part
+    // of a transform function and if successful, |transforms_complete_| should be set to true
+    const int transforms_;
     // The reference count for this node. Guarded by |lock_|.
     uint32_t refcount_;
     // Set of children of this node. All of them contain a back reference
@@ -416,6 +496,8 @@
     std::vector<std::unique_ptr<handle>> handles_;
     // List of directory handles associated with this node. Guarded by |lock_|.
     std::vector<std::unique_ptr<dirhandle>> dirhandles_;
+    bool has_redacted_cache_;
+    bool has_case_insensitive_match_;
     bool deleted_;
     std::recursive_mutex* lock_;
 
diff --git a/jni/node_test.cpp b/jni/node_test.cpp
index 357cea8..8c3406e 100644
--- a/jni/node_test.cpp
+++ b/jni/node_test.cpp
@@ -31,8 +31,14 @@
 
     typedef std::unique_ptr<node, decltype(&NodeTest::destroy)> unique_node_ptr;
 
-    unique_node_ptr CreateNode(node* parent, const std::string& path) {
-        return unique_node_ptr(node::Create(parent, path, &lock_, &tracker_), &NodeTest::destroy);
+    unique_node_ptr CreateNode(node* parent, const std::string& path, const int transforms = 0) {
+        return unique_node_ptr(node::Create(parent, path, "", true, transforms, &lock_, &tracker_),
+                               &NodeTest::destroy);
+    }
+
+    static class node* ForChild(class node* node, const std::string& name,
+                                const std::function<bool(class node*)>& callback) {
+        return node->ForChild(name, callback);
     }
 
     // Expose NodeCompare for testing.
@@ -61,7 +67,7 @@
 }
 
 TEST_F(NodeTest, TestRelease) {
-    node* node = node::Create(nullptr, "/path", &lock_, &tracker_);
+    node* node = node::Create(nullptr, "/path", "", true, 0, &lock_, &tracker_);
     acquire(node);
     acquire(node);
     ASSERT_EQ(3, GetRefCount(node));
@@ -77,7 +83,7 @@
     ASSERT_TRUE(node->Release(2));
 }
 
-TEST_F(NodeTest, TestRenameWithName) {
+TEST_F(NodeTest, TestRenameName) {
     unique_node_ptr parent = CreateNode(nullptr, "/path");
 
     unique_node_ptr child = CreateNode(parent.get(), "subdir");
@@ -94,7 +100,7 @@
     ASSERT_EQ(1, GetRefCount(child.get()));
 }
 
-TEST_F(NodeTest, TestRenameWithParent) {
+TEST_F(NodeTest, TestRenameParent) {
     unique_node_ptr parent1 = CreateNode(nullptr, "/path1");
     unique_node_ptr parent2 = CreateNode(nullptr, "/path2");
 
@@ -113,7 +119,7 @@
     ASSERT_EQ(1, GetRefCount(child.get()));
 }
 
-TEST_F(NodeTest, TestRenameWithNameAndParent) {
+TEST_F(NodeTest, TestRenameNameAndParent) {
     unique_node_ptr parent1 = CreateNode(nullptr, "/path1");
     unique_node_ptr parent2 = CreateNode(nullptr, "/path2");
 
@@ -133,6 +139,101 @@
     ASSERT_EQ(1, GetRefCount(child.get()));
 }
 
+TEST_F(NodeTest, TestRenameNameForChild) {
+    unique_node_ptr parent = CreateNode(nullptr, "/path");
+
+    unique_node_ptr child0 = CreateNode(parent.get(), "subdir", 0 /* transforms */);
+    unique_node_ptr child1 = CreateNode(parent.get(), "subdir", 1 /* transforms */);
+    ASSERT_EQ(3, GetRefCount(parent.get()));
+    ASSERT_EQ(child0.get(),
+              parent->LookupChildByName("subdir", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(child1.get(),
+              parent->LookupChildByName("subdir", false /* acquire */, 1 /* transforms */));
+
+    parent->RenameChild("subdir", "subdir_new", parent.get());
+
+    ASSERT_EQ(3, GetRefCount(parent.get()));
+    ASSERT_EQ(nullptr,
+              parent->LookupChildByName("subdir", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(nullptr,
+              parent->LookupChildByName("subdir", false /* acquire */, 1 /* transforms */));
+    ASSERT_EQ(child0.get(),
+              parent->LookupChildByName("subdir_new", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(child1.get(),
+              parent->LookupChildByName("subdir_new", false /* acquire */, 1 /* transforms */));
+
+    ASSERT_EQ("/path/subdir_new", child0->BuildPath());
+    ASSERT_EQ("/path/subdir_new", child1->BuildPath());
+    ASSERT_EQ(1, GetRefCount(child0.get()));
+    ASSERT_EQ(1, GetRefCount(child1.get()));
+}
+
+TEST_F(NodeTest, TestRenameParentForChild) {
+    unique_node_ptr parent1 = CreateNode(nullptr, "/path1");
+    unique_node_ptr parent2 = CreateNode(nullptr, "/path2");
+
+    unique_node_ptr child0 = CreateNode(parent1.get(), "subdir", 0 /* transforms */);
+    unique_node_ptr child1 = CreateNode(parent1.get(), "subdir", 1 /* transforms */);
+    ASSERT_EQ(3, GetRefCount(parent1.get()));
+    ASSERT_EQ(child0.get(),
+              parent1->LookupChildByName("subdir", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(child1.get(),
+              parent1->LookupChildByName("subdir", false /* acquire */, 1 /* transforms */));
+
+    parent1->RenameChild("subdir", "subdir", parent2.get());
+    ASSERT_EQ(1, GetRefCount(parent1.get()));
+    ASSERT_EQ(nullptr,
+              parent1->LookupChildByName("subdir", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(nullptr,
+              parent1->LookupChildByName("subdir", false /* acquire */, 1 /* transforms */));
+
+    ASSERT_EQ(3, GetRefCount(parent2.get()));
+    ASSERT_EQ(child0.get(),
+              parent2->LookupChildByName("subdir", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(child1.get(),
+              parent2->LookupChildByName("subdir", false /* acquire */, 1 /* transforms */));
+
+    ASSERT_EQ("/path2/subdir", child0->BuildPath());
+    ASSERT_EQ("/path2/subdir", child1->BuildPath());
+    ASSERT_EQ(1, GetRefCount(child0.get()));
+    ASSERT_EQ(1, GetRefCount(child1.get()));
+}
+
+TEST_F(NodeTest, TestRenameNameAndParentForChild) {
+    unique_node_ptr parent1 = CreateNode(nullptr, "/path1");
+    unique_node_ptr parent2 = CreateNode(nullptr, "/path2");
+
+    unique_node_ptr child0 = CreateNode(parent1.get(), "subdir", 0 /* transforms */);
+    unique_node_ptr child1 = CreateNode(parent1.get(), "subdir", 1 /* transforms */);
+    ASSERT_EQ(3, GetRefCount(parent1.get()));
+    ASSERT_EQ(child0.get(),
+              parent1->LookupChildByName("subdir", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(child1.get(),
+              parent1->LookupChildByName("subdir", false /* acquire */, 1 /* transforms */));
+
+    parent1->RenameChild("subdir", "subdir_new", parent2.get());
+    ASSERT_EQ(1, GetRefCount(parent1.get()));
+    ASSERT_EQ(nullptr,
+              parent1->LookupChildByName("subdir", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(nullptr,
+              parent1->LookupChildByName("subdir_new", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(nullptr,
+              parent1->LookupChildByName("subdir", false /* acquire */, 1 /* transforms */));
+    ASSERT_EQ(nullptr,
+              parent1->LookupChildByName("subdir_new", false /* acquire */, 1 /* transforms */));
+
+    ASSERT_EQ(3, GetRefCount(parent2.get()));
+    ASSERT_EQ(nullptr,
+              parent1->LookupChildByName("subdir_new", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(nullptr,
+              parent1->LookupChildByName("subdir_new", false /* acquire */, 1 /* transforms */));
+
+    ASSERT_EQ("/path2/subdir_new", child0->BuildPath());
+    ASSERT_EQ("/path2/subdir_new", child1->BuildPath());
+    ASSERT_EQ(1, GetRefCount(child0.get()));
+    ASSERT_EQ(1, GetRefCount(child1.get()));
+}
+
 TEST_F(NodeTest, TestBuildPath) {
     unique_node_ptr parent = CreateNode(nullptr, "/path");
     ASSERT_EQ("/path", parent->BuildPath());
@@ -156,14 +257,30 @@
     ASSERT_EQ(nullptr, parent->LookupChildByName("subdir", false /* acquire */));
 }
 
+TEST_F(NodeTest, TestSetDeletedForChild) {
+    unique_node_ptr parent = CreateNode(nullptr, "/path");
+    unique_node_ptr child0 = CreateNode(parent.get(), "subdir", 0 /* transforms */);
+    unique_node_ptr child1 = CreateNode(parent.get(), "subdir", 1 /* transforms */);
+
+    ASSERT_EQ(child0.get(),
+              parent->LookupChildByName("subdir", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(child1.get(),
+              parent->LookupChildByName("subdir", false /* acquire */, 1 /* transforms */));
+    parent->SetDeletedForChild("subdir");
+    ASSERT_EQ(nullptr,
+              parent->LookupChildByName("subdir", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(nullptr,
+              parent->LookupChildByName("subdir", false /* acquire */, 1 /* transforms */));
+}
+
 TEST_F(NodeTest, DeleteTree) {
     unique_node_ptr parent = CreateNode(nullptr, "/path");
 
     // This is the tree that we intend to delete.
-    node* child = node::Create(parent.get(), "subdir", &lock_, &tracker_);
-    node::Create(child, "s1", &lock_, &tracker_);
-    node* subchild2 = node::Create(child, "s2", &lock_, &tracker_);
-    node::Create(subchild2, "sc2", &lock_, &tracker_);
+    node* child = node::Create(parent.get(), "subdir", "", true, 0, &lock_, &tracker_);
+    node::Create(child, "s1", "", true, 0, &lock_, &tracker_);
+    node* subchild2 = node::Create(child, "s2", "", true, 0, &lock_, &tracker_);
+    node::Create(subchild2, "sc2", "", true, 0, &lock_, &tracker_);
 
     ASSERT_EQ(child, parent->LookupChildByName("subdir", false /* acquire */));
     node::DeleteTree(child);
@@ -178,6 +295,20 @@
     ASSERT_EQ(nullptr, parent->LookupChildByName("", false /* acquire */));
 }
 
+TEST_F(NodeTest, LookupChildByName_transforms) {
+    unique_node_ptr parent = CreateNode(nullptr, "/path");
+    unique_node_ptr child0 = CreateNode(parent.get(), "subdir", 0 /* transforms */);
+    unique_node_ptr child1 = CreateNode(parent.get(), "subdir", 1 /* transforms */);
+
+    ASSERT_EQ(child0.get(), parent->LookupChildByName("subdir", false /* acquire */));
+    ASSERT_EQ(child0.get(),
+              parent->LookupChildByName("subdir", false /* acquire */, 0 /* transforms */));
+    ASSERT_EQ(child1.get(),
+              parent->LookupChildByName("subdir", false /* acquire */, 1 /* transforms */));
+    ASSERT_EQ(nullptr,
+              parent->LookupChildByName("subdir", false /* acquire */, 2 /* transforms */));
+}
+
 TEST_F(NodeTest, LookupChildByName_refcounts) {
     unique_node_ptr parent = CreateNode(nullptr, "/path");
     unique_node_ptr child = CreateNode(parent.get(), "subdir");
@@ -217,7 +348,8 @@
 TEST_F(NodeTest, AddDestroyHandle) {
     unique_node_ptr node = CreateNode(nullptr, "/path");
 
-    handle* h = new handle(-1, new mediaprovider::fuse::RedactionInfo, true /* cached */);
+    handle* h = new handle(-1, new mediaprovider::fuse::RedactionInfo, true /* cached */,
+                           false /* passthrough */, 0 /* uid */);
     node->AddHandle(h);
     ASSERT_TRUE(node->HasCachedHandle());
 
@@ -228,8 +360,8 @@
     // the node in question.
     EXPECT_DEATH(node->DestroyHandle(h), "");
     EXPECT_DEATH(node->DestroyHandle(nullptr), "");
-    std::unique_ptr<handle> h2(
-            new handle(-1, new mediaprovider::fuse::RedactionInfo, true /* cached */));
+    std::unique_ptr<handle> h2(new handle(-1, new mediaprovider::fuse::RedactionInfo,
+                                          true /* cached */, false /* passthrough */, 0 /* uid */));
     EXPECT_DEATH(node->DestroyHandle(h2.get()), "");
 }
 
@@ -318,3 +450,44 @@
     test_fn("bAr", bar1.get(), bar2.get());
     test_fn("BaZ", baz1.get(), baz2.get());
 }
+
+TEST_F(NodeTest, ForChild) {
+    unique_node_ptr parent = CreateNode(nullptr, "/path");
+    unique_node_ptr foo1 = CreateNode(parent.get(), "FoO");
+    unique_node_ptr foo2 = CreateNode(parent.get(), "fOo");
+    unique_node_ptr foo3 = CreateNode(parent.get(), "foo");
+    foo3->SetDeleted();
+
+    std::vector<node*> match_all;
+    auto test_fn_match_all = [&](node* child) {
+        match_all.push_back(child);
+        return false;
+    };
+
+    std::vector<node*> match_first;
+    auto test_fn_match_first = [&](node* child) {
+        match_first.push_back(child);
+        return true;
+    };
+
+    std::vector<node*> match_none;
+    auto test_fn_match_none = [&](node* child) {
+        match_none.push_back(child);
+        return false;
+    };
+
+    node* node_all = ForChild(parent.get(), "foo", test_fn_match_all);
+    ASSERT_EQ(nullptr, node_all);
+    ASSERT_EQ(2, match_all.size());
+    ASSERT_EQ(std::min(foo1.get(), foo2.get()), match_all[0]);
+    ASSERT_EQ(std::max(foo1.get(), foo2.get()), match_all[1]);
+
+    node* node_first = ForChild(parent.get(), "foo", test_fn_match_first);
+    ASSERT_EQ(std::min(foo1.get(), foo2.get()), node_first);
+    ASSERT_EQ(1, match_first.size());
+    ASSERT_EQ(std::min(foo1.get(), foo2.get()), match_first[0]);
+
+    node* node_none = ForChild(parent.get(), "bar", test_fn_match_none);
+    ASSERT_EQ(nullptr, node_none);
+    ASSERT_TRUE(match_none.empty());
+}
diff --git a/logging.sh b/logging.sh
index fd2a3a5..c1143ce 100755
--- a/logging.sh
+++ b/logging.sh
@@ -6,6 +6,7 @@
 then
     adb shell setprop log.tag.MediaProvider VERBOSE
     adb shell setprop log.tag.ModernMediaScanner VERBOSE
+    adb shell setprop log.tag.TranscodeHelper VERBOSE
     adb shell setprop log.tag.FuseDaemon DEBUG
     adb shell setprop log.tag.libfuse DEBUG
 else
@@ -20,6 +21,7 @@
     adb shell setprop log.tag.SQLiteQueryBuilder VERBOSE
     adb shell setprop log.tag.FuseDaemon VERBOSE
     adb shell setprop log.tag.libfuse VERBOSE
+    adb shell setprop log.tag.TranscodeHelper VERBOSE
     adb shell setprop persist.sys.fuse.log true
 else
     adb shell setprop log.tag.SQLiteQueryBuilder INFO
diff --git a/res/layout/photo_picker.xml b/res/layout/photo_picker.xml
new file mode 100644
index 0000000..073a8bd
--- /dev/null
+++ b/res/layout/photo_picker.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2020 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.
+  -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              xmlns:app="http://schemas.android.com/apk/res-auto"
+              xmlns:tools="http://schemas.android.com/tools"
+              android:orientation="vertical"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              tools:context=".MainActivity">
+
+    <Button
+        android:id="@+id/button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Give up"
+        />
+
+    <ListView
+        android:id="@+id/names_list"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        />
+
+</LinearLayout>
diff --git a/res/raw/transcode_compat_manifest b/res/raw/transcode_compat_manifest
new file mode 100644
index 0000000..541dd0e
--- /dev/null
+++ b/res/raw/transcode_compat_manifest
@@ -0,0 +1,47 @@
+com.google.android.GoogleCamera,1
+com.google.android.apps.nbu.files,1
+com.instagram.android,1
+com.whatsapp,1
+com.google.android.apps.photos,1
+com.linecorp.b612.android,1
+im.thebot.messenger,1
+com.tencent.mm,1
+com.skype.raider,1
+com.facebook.katana,1
+com.facebook.orca,1
+com.imo.android.imous,1
+com.snapchat.android,1
+com.google.android.talk,1
+com.twitter.android,1
+com.zhiliaoapp.musically,1
+com.nexstreaming.app.kinemasterfree,1
+com.magisto,1
+com.google.android.apps.tachyon,1
+com.kwai.bulldog,1
+com.funcamerastudio.videomaker,1
+com.avcrbt.funimate,1
+com.wondershare.filmorago,1
+com.vivashow.share.video.chat,1
+com.xvideostudio.videoeditor,1
+com.camerasideas.instashot,1
+com.gaana,1
+com.barfi.fun.videos,1
+com.hike.chat.stickers,1
+com.next.innovation.takatak,1
+com.stupeflix.replay,1
+com.sand.airdroid,1
+com.metago.astro,1
+pl.solidexplore2,1
+mobi.fileexplorer,1
+com.dewmobile.kuaiya.play,1
+com.amaze.filemanager,1
+in.mohalla.sharechat,1
+com.adobe.premiererush.videoeditor,1
+com.amazon.drive,1
+com.box.android,1
+com.microsoft.skydrive,1
+com.dropbox.android,1
+org.videolan.vlc,1
+com.Slack,1
+com.android.externalstorage,1
+us.zoom.videomeetings,1
\ No newline at end of file
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 3978c89..09a1296 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Gaan voort"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Laat toe"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Weier"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Plus <xliff:g id="COUNT_1">^1</xliff:g> bykomende items</item>
       <item quantity="one">Plus <xliff:g id="COUNT_0">^1</xliff:g> bykomende item</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Maak programkas skoon met <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> wil \'n paar tydelike lêers uitvee. As jy aanvaar, kan dit battery- of datagebruik verhoog."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Vee tydelike programlêers uit"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> wil \'n paar tydelike lêers uitvee. Dit kan verhoogde batterygebruik of sellulêre data tot gevolg hê."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Vee tans tydelike programlêers uit …"</string>
+    <string name="clear" msgid="5524638938415865915">"Vee uit"</string>
     <string name="allow" msgid="8885707816848569619">"Laat toe"</string>
     <string name="deny" msgid="6040983710442068936">"Weier"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> klanklêers te verander?</item>
-      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie klanklêer te verander?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> oudiolêers te wysig?</item>
+      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie oudiolêer te wysig?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> video\'s te verander?</item>
-      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie video te verander?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> video\'s te wysig?</item>
+      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie video te wysig?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> foto\'s te verander?</item>
-      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie foto te verander?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> foto\'s te wysig?</item>
+      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie foto te wysig?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> items te verander?</item>
-      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie item te verander?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> items te wysig?</item>
+      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie item te wysig?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Verander"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Kanselleer"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> klanklêers na die asblik toe skuif?</item>
-      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie klanklêer na die asblik toe skuif?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> oudiolêers na die asblik toe te skuif?</item>
+      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie oudiolêer na die asblik toe te skuif?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Hierdie klanklêers sal na <xliff:g id="DURATION_1">^3</xliff:g> dae permanent uitgevee word</item>
-      <item quantity="one">Hierdie klanklêer sal na <xliff:g id="DURATION_0">^3</xliff:g> dae permanent uitgevee word</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> video\'s na die asblik toe skuif?</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> video\'s na die asblik toe te skuif?</item>
       <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie video na die asblik toe skuif?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Hierdie video\'s sal na <xliff:g id="DURATION_1">^3</xliff:g> dae permanent uitgevee word</item>
-      <item quantity="one">Hierdie video sal na <xliff:g id="DURATION_0">^3</xliff:g> dae permanent uitgevee word</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> foto\'s na die asblik toe skuif?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> foto\'s na die asblik toe te skuif?</item>
       <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie foto na die asblik toe skuif?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Hierdie foto\'s sal na <xliff:g id="DURATION_1">^3</xliff:g> dae permanent uitgevee word</item>
-      <item quantity="one">Hierdie foto sal na <xliff:g id="DURATION_0">^3</xliff:g> dae permanent uitgevee word</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> items na die asblik toe skuif?</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> items na die asblik toe te skuif?</item>
       <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie item na die asblik toe skuif?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Hierdie items sal na <xliff:g id="DURATION_1">^3</xliff:g> dae permanent uitgevee word</item>
-      <item quantity="one">Hierdie item sal na <xliff:g id="DURATION_0">^3</xliff:g> dae permanent uitgevee word</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> oudiolêers uit die asblik uit te skuif?</item>
+      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie oudiolêer uit die asblik uit te skuif?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Skuif asblik toe"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Kanselleer"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> klanklêers uit die asblik uit te skuif?</item>
-      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie klanklêer uit die asblik uit te skuif?</item>
-    </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> video\'s uit die asblik uit te skuif?</item>
       <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie video uit die asblik uit te skuif?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> foto\'s uit die asblik uit te skuif?</item>
       <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie foto uit die asblik uit te skuif?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> items uit die asblik uit te skuif?</item>
       <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie item uit die asblik uit te skuif?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Skuif uit asblik uit"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Kanselleer"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> klanklêers uit te vee?</item>
-      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie klanklêer uit te vee?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> oudiolêers uit te vee?</item>
+      <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie oudiolêer uit te vee?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> video\'s uit te vee?</item>
       <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie video uit te vee?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> foto\'s uit te vee?</item>
       <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie foto uit te vee?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other">Laat <xliff:g id="APP_NAME_1">^1</xliff:g> toe om <xliff:g id="COUNT">^2</xliff:g> items uit te vee?</item>
       <item quantity="one">Laat <xliff:g id="APP_NAME_0">^1</xliff:g> toe om hierdie item uit te vee?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Vee uit"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Kanselleer"</string>
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index c017397..1a62bf5 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"ቀጥል"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"ፍቀድ"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"ከልክል"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">እንዲሁም <xliff:g id="COUNT_1">^1</xliff:g> ተጨማሪ ንጥሎች</item>
       <item quantity="other">እንዲሁም <xliff:g id="COUNT_1">^1</xliff:g> ተጨማሪ ንጥሎች</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"የ<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> የመተግበሪያ መሸጎጫ ይጽዳ?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> አንዳንድ ጊዜያዊ ፋይሎችን ማጽዳት ይፈልጋል። መቀበል የባትሪ ወይም የውሂብ አጠቃቀምን ሊጨምር ይችላል።"</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"ጊዜያዊ የመተግበሪያ ፋይሎች ይጸዱ?"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> አንዳንድ ጊዜያዊ ፋይሎችን ማጽዳት ይፈልጋል። ይህ የበለጠ የባትሪ ኃይል ወይም የተንቀሳቃሽ ስልክ ውሂብ ፍጆታን ሊጨምር ይችላል።"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"ጊዜያዊ የመተግበሪያ ፋይሎችን በማጽዳት ላይ…"</string>
+    <string name="clear" msgid="5524638938415865915">"አጽዳ"</string>
     <string name="allow" msgid="8885707816848569619">"ፍቀድ"</string>
     <string name="deny" msgid="6040983710442068936">"ከልክል"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎችን እንዲለውጥ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎችን እንዲለውጥ ይፈቀድ?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎችን እንዲቀይር ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎችን እንዲቀይር ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን እንዲለውጥ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን እንዲለውጥ ይፈቀድ?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን እንዲቀይር ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን እንዲቀይር ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን እንዲለውጥ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን እንዲለውጥ ይፈቀድ?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን እንዲቀይር ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን እንዲቀይር ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን እንዲለውጥ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን እንዲለውጥ ይፈቀድ?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን እንዲቀይር ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን እንዲቀይር ይፈቀድለት?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"ለውጥ"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"ይቅር"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎች ወደ መጣያ እንዲያንቀሳቅስ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎች ወደ መጣያ እንዲያንቀሳቅስ ይፈቀድ?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎችን ወደ መጣያ እንዲወስድ ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎችን ወደ መጣያ እንዲወስድ ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">እነዚህ ኦዲዮ ፋይሎች ከ<xliff:g id="DURATION_1">^3</xliff:g> ቀናት በኋላ በቋሚነት ይሰረዛሉ</item>
-      <item quantity="other">እነዚህ ኦዲዮ ፋይሎች ከ<xliff:g id="DURATION_1">^3</xliff:g> ቀናት በኋላ በቋሚነት ይሰረዛሉ</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን ወደ መጣያ እንዲወስድ ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን ወደ መጣያ እንዲወስድ ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን ወደ መጣያ እንዲያንቀሳቅስ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን ወደ መጣያ እንዲያንቀሳቅስ ይፈቀድ?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን ወደ መጣያ እንዲወስድ ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን ወደ መጣያ እንዲወስድ ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">እነዚህ ቪዲዮዎች ከ<xliff:g id="DURATION_1">^3</xliff:g> ቀናት በቋሚነት ይሰረዛሉ</item>
-      <item quantity="other">እነዚህ ቪዲዮዎች ከ<xliff:g id="DURATION_1">^3</xliff:g> ቀናት በቋሚነት ይሰረዛሉ</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን ወደ መጣያ እንዲወስድ ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን ወደ መጣያ እንዲወስድ ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን ወደ መጣያ እንዲያንቀሳቅስ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን ወደ መጣያ እንዲያንቀሳቅስ ይፈቀድ?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎችን ከመጣያ እንዲያስወጣ ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎችን ከመጣያ እንዲያስወጣ ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">እነዚህ ፎቶዎች ከ<xliff:g id="DURATION_1">^3</xliff:g> ቀናት በቋሚነት ይሰረዛሉ</item>
-      <item quantity="other">እነዚህ ፎቶዎች ከ<xliff:g id="DURATION_1">^3</xliff:g> ቀናት በቋሚነት ይሰረዛሉ</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን ከመጣያ እንዲያስወጣ ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን ከመጣያ እንዲያስወጣ ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን ወደ መጣያ ያንቀሳቅስ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን ወደ መጣያ ያንቀሳቅስ?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን ከመጣያ እንዲያስወጣ ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን ከመጣያ እንዲያስወጣ ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">እነዚህ ንጥሎች ከ<xliff:g id="DURATION_1">^3</xliff:g> ቀናት በቋሚነት ይሰረዛሉ</item>
-      <item quantity="other">እነዚህ ንጥሎች ከ<xliff:g id="DURATION_1">^3</xliff:g> ቀናት በቋሚነት ይሰረዛሉ</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን ከመጣያ እንዲያስወጣ ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን ከመጣያ እንዲያስወጣ ይፈቀድለት?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ወደ መጣያ አንቀሳቅስ"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"ይቅር"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎች ከመጣያ አውጥቶ እንዲያንቀሳቅስ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎች ከመጣያ አውጥቶ እንዲያንቀሳቅስ ይፈቀድ?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> የኦዲዮ ፋይሎችን እንዲሰረዝ ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> የኦዲዮ ፋይሎችን እንዲሰረዝ ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎች ከመጣያ አውጥቶ እንዲያንቀሳቅስ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎች ከመጣያ አውጥቶ እንዲያንቀሳቅስ ይፈቀድ?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን እንዲሰረዝ ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን እንዲሰረዝ ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎች ከመጣያ አውጥቶ እንዲያንቀሳቅስ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎች ከመጣያ አውጥቶ እንዲያንቀሳቅስ ይፈቀድ?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን እንዲሰረዝ ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን እንዲሰረዝ ይፈቀድለት?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን ከመጣያ አውጥቶ እንዲያንቀሳቅስ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን ከመጣያ አውጥቶ እንዲያንቀሳቅስ ይፈቀድ?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን እንዲሰረዝ ይፈቀድለት?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን እንዲሰረዝ ይፈቀድለት?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ከመጣያው አውጣ"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"ይቅር"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎችን እንዲሰርዝ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ኦዲዮ ፋይሎችን እንዲሰርዝ ይፈቀድ?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን እንዲሰርዝ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ቪዲዮዎችን እንዲሰርዝ ይፈቀድ?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን እንዲሰርዝ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ፎቶዎችን እንዲሰርዝ ይፈቀድ?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን እንዲሰርዝ ይፈቀድ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ንጥሎችን እንዲሰርዝ ይፈቀድ?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"ሰርዝ"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"ይቅር"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 86b3ec8..c5d7cea 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -23,13 +23,20 @@
     <string name="unknown" msgid="2059049215682829375">"غير معروف"</string>
     <string name="root_images" msgid="5861633549189045666">"الصور"</string>
     <string name="root_videos" msgid="8792703517064649453">"الفيديوهات"</string>
-    <string name="root_audio" msgid="3505830755201326018">"الصوت"</string>
+    <string name="root_audio" msgid="3505830755201326018">"صوتيات"</string>
     <string name="root_documents" msgid="3829103301363849237">"المستندات"</string>
     <string name="permission_required" msgid="1460820436132943754">"مطلوب الحصول على إذن لتعديل هذا العنصر أو حذفه."</string>
     <string name="permission_required_action" msgid="706370952366113539">"متابعة"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"سماح"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"رفض"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="zero">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="two">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="few">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="many">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="zero">و<xliff:g id="COUNT_1">^1</xliff:g> عنصر إضافي</item>
       <item quantity="two">وعنصران إضافيان (<xliff:g id="COUNT_1">^1</xliff:g>)</item>
@@ -38,65 +45,53 @@
       <item quantity="other">و<xliff:g id="COUNT_1">^1</xliff:g> عنصر إضافي</item>
       <item quantity="one">وعنصر إضافي واحد (<xliff:g id="COUNT_0">^1</xliff:g>)</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> ملف صوت؟</item>
-      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير ملفَي صوت (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
-      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> ملفات صوت؟</item>
-      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> ملف صوت؟</item>
-      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> ملف صوت؟</item>
-      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بتغيير ملف الصوت هذا؟</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"محو ملفات التطبيق المؤقتة"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"يريد تطبيق <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> محو بعض الملفات المؤقتة. قد يؤدي هذا إلى زيادة استهلاك شحن البطارية أو بيانات شبكة الجوّال."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"جارٍ محو ملفات التطبيق المؤقتة…"</string>
+    <string name="clear" msgid="5524638938415865915">"محو"</string>
+    <string name="allow" msgid="8885707816848569619">"سماح"</string>
+    <string name="deny" msgid="6040983710442068936">"رفض"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> ملف صوتي؟</item>
+      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل ملفين صوتيين (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
+      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> ملفات صوتية؟</item>
+      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> ملفًا صوتيًا؟</item>
+      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> ملف صوتي؟</item>
+      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بتعديل هذا الملف الصوتي؟</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> فيديو؟</item>
-      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير فيديوهين (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
-      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> فيديوهات؟</item>
-      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> فيديو؟</item>
-      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> فيديو؟</item>
-      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بتغيير هذا الفيديو؟</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> فيديو؟</item>
+      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل فيديوهين (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
+      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> فيديوهات؟</item>
+      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> فيديو؟</item>
+      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> فيديو؟</item>
+      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بتعديل هذا الفيديو؟</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> صورة؟</item>
-      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير صورتين (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
-      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> صور؟</item>
-      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> صورة؟</item>
-      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> صورة؟</item>
-      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بتغيير هذه الصورة؟</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> صورة؟</item>
+      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل صورتين (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
+      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> صور؟</item>
+      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> صورة؟</item>
+      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> صورة؟</item>
+      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بتعديل هذه الصورة؟</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> عنصر؟</item>
-      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير عنصرين (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
-      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> عناصر؟</item>
-      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> عنصرًا؟</item>
-      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتغيير<xliff:g id="COUNT">^2</xliff:g> عنصر؟</item>
-      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بتغيير هذا العنصر؟</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> عنصر؟</item>
+      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل عنصرين (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
+      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> عناصر؟</item>
+      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> عنصرًا؟</item>
+      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بتعديل <xliff:g id="COUNT">^2</xliff:g> عنصر؟</item>
+      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بتعديل هذا العنصر؟</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"تغيير"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"إلغاء"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملف صوت إلى المهملات؟</item>
-      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل ملفَي صوت (<xliff:g id="COUNT">^2</xliff:g>) إلى المهملات؟</item>
-      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملفات صوت إلى المهملات؟</item>
-      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملف صوت إلى المهملات؟</item>
-      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملف صوت إلى المهملات؟</item>
-      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بنقل ملف الصوت هذا إلى المهملات؟</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملف صوتي إلى المهملات؟</item>
+      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل ملفين صوتيين (<xliff:g id="COUNT">^2</xliff:g>) إلى المهملات؟</item>
+      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملفات صوتية إلى المهملات؟</item>
+      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملفًا صوتية إلى المهملات؟</item>
+      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملف صوتي إلى المهملات؟</item>
+      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بنقل هذا الملف الصوتي إلى المهملات؟</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="zero">سيتم حذف ملفات الصوت هذه نهائيًا بعد <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="two">سيتم حذف ملفين الصوت هذين نهائيًا بعد <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="few">سيتم حذف ملفات الصوت هذه نهائيًا بعد <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="many">سيتم حذف ملفات الصوت هذه نهائيًا بعد <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="other">سيتم حذف ملفات الصوت هذه نهائيًا بعد <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="one">سيتم حذف ملف الصوت هذا نهائيًا بعد <xliff:g id="DURATION_0">^3</xliff:g> يوم.</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> فيديو إلى المهملات؟</item>
       <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل فيديوهين (<xliff:g id="COUNT">^2</xliff:g>) إلى المهملات؟</item>
       <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> فيديوهات إلى المهملات؟</item>
@@ -104,15 +99,7 @@
       <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> فيديو إلى المهملات؟</item>
       <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بنقل هذا الفيديو إلى المهملات؟</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="zero">سيتم حذف هذه الفيديوهات نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="two">سيتم حذف هذين الفيديوهين نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="few">سيتم حذف هذه الفيديوهات نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="many">سيتم حذف هذه الفيديوهات نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="other">سيتم حذف هذه الفيديوهات نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="one">سيتم حذف هذا الفيديو نهائيًا بعد مرور <xliff:g id="DURATION_0">^3</xliff:g> يوم.</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> صورة إلى المهملات؟</item>
       <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل صورتين (<xliff:g id="COUNT">^2</xliff:g>) إلى المهملات؟</item>
       <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> صور إلى المهملات؟</item>
@@ -120,15 +107,7 @@
       <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> صورة إلى المهملات؟</item>
       <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بنقل هذه الصورة إلى المهملات؟</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="zero">سيتم حذف هذه الصور نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="two">سيتم حذف هاتين الصورتين نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="few">سيتم حذف هذه الصور نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="many">سيتم حذف هذه الصور نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="other">سيتم حذف هذه الصور نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="one">سيتم حذف هذه الصورة نهائيًا بعد مرور <xliff:g id="DURATION_0">^3</xliff:g> يوم.</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> عنصر إلى المهملات؟</item>
       <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل عنصرين (<xliff:g id="COUNT">^2</xliff:g>) إلى المهملات؟</item>
       <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> عناصر إلى المهملات؟</item>
@@ -136,25 +115,15 @@
       <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> عنصر إلى المهملات؟</item>
       <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بنقل هذا العنصر إلى المهملات؟</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="zero">سيتم حذف هذه العناصر نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="two">سيتم حذف هذين العنصرين نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="few">سيتم حذف هذه العناصر نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="many">سيتم حذف هذه العناصر نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="other">سيتم حذف هذه العناصر نهائيًا بعد مرور <xliff:g id="DURATION_1">^3</xliff:g> يوم.</item>
-      <item quantity="one">سيتم حذف هذا العنصر نهائيًا بعد مرور <xliff:g id="DURATION_0">^3</xliff:g> يوم.</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملف صوتي خارج المهملات؟</item>
+      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل ملفين صوتيين (<xliff:g id="COUNT">^2</xliff:g>) خارج المهملات؟</item>
+      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملفات صوتية خارج المهملات؟</item>
+      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملفًا صوتيًا خارج المهملات؟</item>
+      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملف صوتي خارج المهملات؟</item>
+      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بنقل الملف الصوتي هذا خارج المهملات؟</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"نقل إلى المهملات"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"إلغاء"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملف صوت خارج المهملات؟</item>
-      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل ملفي صوت (<xliff:g id="COUNT">^2</xliff:g>) خارج المهملات؟</item>
-      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملفات صوت خارج المهملات؟</item>
-      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملف صوت خارج المهملات؟</item>
-      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> ملف صوت خارج المهملات؟</item>
-      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بنقل ملف الصوت هذا خارج المهملات؟</item>
-    </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> فيديو خارج المهملات؟</item>
       <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل فيديوهين (<xliff:g id="COUNT">^2</xliff:g>) خارج المهملات؟</item>
       <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> فيديوهات خارج المهملات؟</item>
@@ -162,7 +131,7 @@
       <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> فيديو خارج المهملات؟</item>
       <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بنقل هذا الفيديو خارج المهملات؟</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> صورة خارج المهملات؟</item>
       <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل صورتين (<xliff:g id="COUNT">^2</xliff:g>) خارج المهملات؟</item>
       <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> صور خارج المهملات؟</item>
@@ -170,7 +139,7 @@
       <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> صورة خارج المهملات؟</item>
       <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بنقل هذه الصورة خارج المهملات؟</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> عنصر خارج المهملات؟</item>
       <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل عنصرين (<xliff:g id="COUNT">^2</xliff:g>) خارج المهملات؟</item>
       <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> عناصر خارج المهملات؟</item>
@@ -178,17 +147,15 @@
       <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بنقل <xliff:g id="COUNT">^2</xliff:g> عنصر خارج المهملات؟</item>
       <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بنقل هذا العنصر خارج المهملات؟</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"نقل خارج المهملات"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"إلغاء"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> ملف صوت؟</item>
-      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف ملفَي صوت (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
-      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> ملفات صوت؟</item>
-      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> ملف صوت؟</item>
-      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> ملف صوت؟</item>
-      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بحذف ملف الصوت هذا؟</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> ملف صوتي؟</item>
+      <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف ملفين صوتيين (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
+      <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> ملفات صوتية؟</item>
+      <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> ملفًا صوتيًا؟</item>
+      <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> ملف صوتي؟</item>
+      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بحذف هذا الملف الصوتي؟</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> فيديو؟</item>
       <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف فيديوهين (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
       <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> فيديوهات؟</item>
@@ -196,15 +163,15 @@
       <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> فيديو؟</item>
       <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بحذف هذا الفيديو؟</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> صورة؟</item>
       <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف صورتين (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
       <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> صور؟</item>
       <item quantity="many">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> صورة؟</item>
       <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> صورة؟</item>
-      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بحذف هذه الصورة؟</item>
+      <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بحذف صورة واحدة؟</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="zero">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> عنصر؟</item>
       <item quantity="two">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف عنصرين (<xliff:g id="COUNT">^2</xliff:g>)؟</item>
       <item quantity="few">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> عناصر؟</item>
@@ -212,6 +179,4 @@
       <item quantity="other">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_1">^1</xliff:g> بحذف <xliff:g id="COUNT">^2</xliff:g> عنصر؟</item>
       <item quantity="one">هل تريد السماح لتطبيق <xliff:g id="APP_NAME_0">^1</xliff:g> بحذف هذا العنصر؟</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"حذف"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"إلغاء"</string>
 </resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 7141216..35449a8 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -21,7 +21,7 @@
     <string name="app_label" msgid="9035307001052716210">"মিডিয়া সঞ্চয়াগাৰ"</string>
     <string name="artist_label" msgid="8105600993099120273">"শিল্পী"</string>
     <string name="unknown" msgid="2059049215682829375">"অজ্ঞাত"</string>
-    <string name="root_images" msgid="5861633549189045666">"প্ৰতিচ্ছবিসমূহ"</string>
+    <string name="root_images" msgid="5861633549189045666">"Images"</string>
     <string name="root_videos" msgid="8792703517064649453">"ভিডিঅ\'সমূহ"</string>
     <string name="root_audio" msgid="3505830755201326018">"অডিঅ’"</string>
     <string name="root_documents" msgid="3829103301363849237">"নথিপত্র"</string>
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"অব্যাহত ৰাখক"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"অনুমতি দিয়ক"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"অস্বীকাৰ কৰক"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g> টা</item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g> টা</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">আৰু <xliff:g id="COUNT_1">^1</xliff:g> টা অতিৰিক্ত বস্তু</item>
       <item quantity="other">আৰু <xliff:g id="COUNT_1">^1</xliff:g> টা অতিৰিক্ত বস্তু</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল সলনি কৰিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল সলনি কৰিবলৈ দিবনে?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"অস্থায়ী এপ্‌ ফাইলসমূহ মচক"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>এ কিছুমান অস্থায়ী ফাইল মচিব বিচাৰিছে। ইয়াৰ ফলত বেটাৰী অথবা চেলুলাৰ ডেটাৰ ব্যৱহাৰ বৃদ্ধি হ’ব পাৰে।"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"অস্থায়ী এপ্‌ ফাইলসমূহ মচি থকা হৈছে…"</string>
+    <string name="clear" msgid="5524638938415865915">"মচক"</string>
+    <string name="allow" msgid="8885707816848569619">"অনুমতি দিয়ক"</string>
+    <string name="deny" msgid="6040983710442068936">"অস্বীকাৰ কৰক"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল সংশোধন কৰিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল সংশোধন কৰিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ সলনি কৰিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ সলনি কৰিবলৈ দিবনে?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ সংশোধন কৰিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ সংশোধন কৰিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ সলনি কৰিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ সলনি কৰিবলৈ দিবনে?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ সংশোধন কৰিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ সংশোধন কৰিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু সলনি কৰিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু সলনি কৰিবলৈ দিবনে?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু সংশোধন কৰিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু সংশোধন কৰিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"সলনি কৰক"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"বাতিল কৰক"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">এই অডিঅ’ ফাইলসমূহ <xliff:g id="DURATION_1">^3</xliff:g> দিনৰ পাছত স্থায়ীভাৱে মচা হ’ব</item>
-      <item quantity="other">এই অডিঅ’ ফাইলসমূহ <xliff:g id="DURATION_1">^3</xliff:g> দিনৰ পাছত স্থায়ীভাৱে মচা হ’ব</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">এই ভিডিঅ’সমূহ <xliff:g id="DURATION_1">^3</xliff:g> দিনৰ পাছত স্থায়ীভাৱে মচা হ’ব</item>
-      <item quantity="other">এই ভিডিঅ’সমূহ <xliff:g id="DURATION_1">^3</xliff:g> দিনৰ পাছত স্থায়ীভাৱে মচা হ’ব</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">এই ফট’কেইখন <xliff:g id="DURATION_1">^3</xliff:g> দিনৰ পাছত স্থায়ীভাৱে মচা হ’ব</item>
-      <item quantity="other">এই ফট’কেইখন <xliff:g id="DURATION_1">^3</xliff:g> দিনৰ পাছত স্থায়ীভাৱে মচা হ’ব</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু ট্ৰেশ্বলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">এই বস্তুকেইটা <xliff:g id="DURATION_1">^3</xliff:g> দিনৰ পাছত স্থায়ীভাৱে মচা হ’ব</item>
-      <item quantity="other">এই বস্তুকেইটা <xliff:g id="DURATION_1">^3</xliff:g> দিনৰ পাছত স্থায়ীভাৱে মচা হ’ব</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ট্ৰেশ্বলৈ স্থানান্তৰ কৰক"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"বাতিল কৰক"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল মচিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল মচিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ মচিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ মচিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ মচিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ মচিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু ট্ৰেশ্বৰ পৰা বাহিৰলৈ স্থানান্তৰ কৰিবলৈ দিবনে?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু মচিবলৈ অনুমতি দিবনে?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু মচিবলৈ অনুমতি দিবনে?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ট্ৰেশ্বৰ পৰা বাহিৰলৈ নিয়ক"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"বাতিল কৰক"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল মচিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা অডিঅ’ ফাইল মচিবলৈ দিবনে?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ মচিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা ভিডিঅ’ মচিবলৈ দিবনে?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ মচিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> খন ফট’ মচিবলৈ দিবনে?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু মচিবলৈ দিবনে?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ক <xliff:g id="COUNT">^2</xliff:g> টা বস্তু মচিবলৈ দিবনে?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"মচক"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"বাতিল কৰক"</string>
 </resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 9956d93..a8d2ab3 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Davam edin"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"İcazə verin"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Rədd edin"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Üstəgəl <xliff:g id="COUNT_1">^1</xliff:g> əlavə element</item>
       <item quantity="one">Üstəgəl <xliff:g id="COUNT_0">^1</xliff:g> əlavə element</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> audio faylı dəyişsin?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu audio faylını dəyişsin?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Müvəqqəti tətbiq fayllarını silin"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> bəzi müvəqqəti faylları silmək istəyir. Bu, batareya və ya mobil data istifadəsinin artmasına səbəb ola bilər."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Müvəqqəti tətbiq faylları silinir…"</string>
+    <string name="clear" msgid="5524638938415865915">"Silin"</string>
+    <string name="allow" msgid="8885707816848569619">"İcazə verin"</string>
+    <string name="deny" msgid="6040983710442068936">"Rədd edin"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> audio fayla dəyişiklik etmək icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu audio fayla dəyişiklik etmək icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> videonu dəyişsin?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu videonu dəyişsin?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> videoya dəyişiklik etmək icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu videoya dəyişiklik etmək icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> fotonu dəyişsin?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu fotonu dəyişsin?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> fotoya dəyişiklik etmək icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu fotoya dəyişiklik etmək icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> elementi dəyişsin?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu elementi dəyişsin?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> elementə dəyişiklik etmək icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu elementə dəyişiklik etmək icazəsi verilsin?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Dəyişin"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Ləğv edin"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> audio faylı zibil qutusuna köçürsün?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu audio faylı zibil qutusuna köçürsün?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> audio faylı zibil qutusuna köçürmək icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu audio faylı zibil qutusuna köçürmək icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Bu audio fayllar <xliff:g id="DURATION_1">^3</xliff:g> gün sonra həmişəlik silinəcək</item>
-      <item quantity="one">Bu audio fayl <xliff:g id="DURATION_0">^3</xliff:g> gün sonra həmişəlik silinəcək</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> videonu zibil qutusuna köçürmək icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu videonu zibil qutusuna köçürmək icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> videonu zibil qutusuna köçürsün?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu videonu zibil qutusuna köçürsün?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> fotonu zibil qutusuna köçürmək icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu fotonu zibil qutusuna köçürmək icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Bu videolar <xliff:g id="DURATION_1">^3</xliff:g> gün sonra həmişəlik silinəcək</item>
-      <item quantity="one">Bu video <xliff:g id="DURATION_0">^3</xliff:g> gün sonra həmişəlik silinəcək</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> elementi zibil qutusuna köçürmək icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu elementi zibil qutusuna köçürmək icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> fotonu zibil qutusuna köçürsün?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu fotonu zibil qutusuna köçürsün?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> audio faylı zibil qutusundan çıxarmaq icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu audio faylı zibil qutusundan çıxarmaq icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Bu fotolar <xliff:g id="DURATION_1">^3</xliff:g> gün sonra həmişəlik silinəcək</item>
-      <item quantity="one">Bu foto <xliff:g id="DURATION_0">^3</xliff:g> gün sonra həmişəlik silinəcək</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> videonu zibil qutusundan çıxarmaq icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu videonu zibil qutusundan çıxarmaq icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> elementi zibil qutusuna köçürsün?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu elementi zibil qutusuna köçürsün?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> fotonu zibil qutusundan çıxarmaq icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu fotonu zibil qutusundan çıxarmaq icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Bu elementlər <xliff:g id="DURATION_1">^3</xliff:g> gün sonra həmişəlik silinəcək</item>
-      <item quantity="one">Bu element <xliff:g id="DURATION_0">^3</xliff:g> gün sonra həmişəlik silinəcək</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> elementi zibil qutusundan çıxarmaq icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu elementi zibil qutusundan çıxarmaq icazəsi verilsin?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Zibil qutusuna köçürün"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Ləğv edin"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> audio faylı zibil qutusundan çıxarsın?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu audio faylı zibil qutusundan çıxarsın?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> audio faylı silmək icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu audio faylı silmək icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> videonu zibil qutusundan çıxarsın?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu videonu zibil qutusundan çıxarsın?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> videonu silmək icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu videonu silmək icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> fotonu zibil qutusundan çıxarsın?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu fotonu zibil qutusundan çıxarsın?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> fotonu silmək icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu fotonu silmək icazəsi verilsin?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> elementi zibil qutusundan çıxarsın?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu elementi zibil qutusundan çıxarsın?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> tətbiqinə <xliff:g id="COUNT">^2</xliff:g> elementi silmək icazəsi verilsin?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> tətbiqinə bu elementi silmək icazəsi verilsin?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Zibil qutusundan çıxarın"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Ləğv edin"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> audio faylı silsin?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu audio faylını silsin?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> videonu silsin?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu videonu silsin?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> fotonu silsin?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu fotonu silsin?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> elementi silsin?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu elementi silsin?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Silin"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Ləğv edin"</string>
 </resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 4110e83..9756151 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -29,122 +29,100 @@
     <string name="permission_required_action" msgid="706370952366113539">"Nastavi"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Dozvoli"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Odbij"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">i još <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="few">i još <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">i još <xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">I još <xliff:g id="COUNT_1">^1</xliff:g> stavka</item>
       <item quantity="few">I još <xliff:g id="COUNT_1">^1</xliff:g> stavke</item>
       <item quantity="other">I još <xliff:g id="COUNT_1">^1</xliff:g> stavki</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Želite da obrišete keš aplikacije uz <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> želi da obriše neke privremene datoteke. Prihvatanje može da poveća potrošnju baterije ili podataka."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Obrišite privremene datoteke aplikacija"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> želi da obriše neke privremene datoteke. Ovo može da dovede do povećane potrošnje baterije ili mobilnih podataka."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Brišu se privremene datoteke aplikacija…"</string>
+    <string name="clear" msgid="5524638938415865915">"Obriši"</string>
     <string name="allow" msgid="8885707816848569619">"Dozvoli"</string>
     <string name="deny" msgid="6040983710442068936">"Odbij"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> promeni <xliff:g id="COUNT">^2</xliff:g> audio datoteku?</item>
-      <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> promeni <xliff:g id="COUNT">^2</xliff:g> audio datoteke?</item>
-      <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> promeni <xliff:g id="COUNT">^2</xliff:g> audio datoteka?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izmeni <xliff:g id="COUNT">^2</xliff:g> audio datoteku?</item>
+      <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izmeni <xliff:g id="COUNT">^2</xliff:g> audio datoteke?</item>
+      <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izmeni <xliff:g id="COUNT">^2</xliff:g> audio datoteka?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> promeni <xliff:g id="COUNT">^2</xliff:g> video?</item>
-      <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> promeni <xliff:g id="COUNT">^2</xliff:g> video snimka?</item>
-      <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> promeni <xliff:g id="COUNT">^2</xliff:g> video snimaka?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izmeni <xliff:g id="COUNT">^2</xliff:g> video?</item>
+      <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izmeni <xliff:g id="COUNT">^2</xliff:g> video snimka?</item>
+      <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izmeni <xliff:g id="COUNT">^2</xliff:g> video snimaka?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> promeni <xliff:g id="COUNT">^2</xliff:g> sliku?</item>
-      <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> promeni <xliff:g id="COUNT">^2</xliff:g> slike?</item>
-      <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> promeni <xliff:g id="COUNT">^2</xliff:g> slika?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izmeni <xliff:g id="COUNT">^2</xliff:g> sliku?</item>
+      <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izmeni <xliff:g id="COUNT">^2</xliff:g> slike?</item>
+      <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izmeni <xliff:g id="COUNT">^2</xliff:g> slika?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> promeni <xliff:g id="COUNT">^2</xliff:g> stavku?</item>
-      <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> promeni <xliff:g id="COUNT">^2</xliff:g> stavke?</item>
-      <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> promeni <xliff:g id="COUNT">^2</xliff:g> stavki?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izmeni <xliff:g id="COUNT">^2</xliff:g> stavku?</item>
+      <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izmeni <xliff:g id="COUNT">^2</xliff:g> stavke?</item>
+      <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izmeni <xliff:g id="COUNT">^2</xliff:g> stavki?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Promeni"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Otkaži"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> audio datoteku u otpad?</item>
       <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> audio datoteke u otpad?</item>
       <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> audio datoteka u otpad?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Ove audio datoteke se trajno brišu za <xliff:g id="DURATION_1">^3</xliff:g> dan</item>
-      <item quantity="few">Ove audio datoteke se trajno brišu za <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-      <item quantity="other">Ove audio datoteke se trajno brišu za <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> video u otpad?</item>
       <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> video snimka u otpad?</item>
       <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> video snimaka u otpad?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Ovi video snimci se trajno brišu za <xliff:g id="DURATION_1">^3</xliff:g> dan</item>
-      <item quantity="few">Ovi video snimci se trajno brišu za <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-      <item quantity="other">Ovi video snimci se trajno brišu za <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> sliku u otpad?</item>
       <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> slike u otpad?</item>
       <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> slika u otpad?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Ove slike se trajno brišu za <xliff:g id="DURATION_1">^3</xliff:g> dan</item>
-      <item quantity="few">Ove slike se trajno brišu za <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-      <item quantity="other">Ove slike se trajno brišu za <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> stavku u otpad?</item>
       <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> stavke u otpad?</item>
       <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> stavki u otpad?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Ove stavke se trajno brišu za <xliff:g id="DURATION_1">^3</xliff:g> dan</item>
-      <item quantity="few">Ove stavke se trajno brišu za <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-      <item quantity="other">Ove stavke se trajno brišu za <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Premesti u otpad"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Otkaži"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> audio datoteku iz otpada?</item>
       <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> audio datoteke iz otpada?</item>
       <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> audio datoteka iz otpada?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> video iz otpada?</item>
       <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> video snimka iz otpada?</item>
       <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> video snimaka iz otpada?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> sliku iz otpada?</item>
       <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> slike iz otpada?</item>
       <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> slika iz otpada?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> stavku iz otpada?</item>
       <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> stavke iz otpada?</item>
       <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> premesti <xliff:g id="COUNT">^2</xliff:g> stavki iz otpada?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Premesti iz otpada"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Otkaži"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> audio datoteku?</item>
-      <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> audio datoteke?</item>
+      <item quantity="few">Želite li da dozvolite <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> audio datoteke?</item>
       <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> audio datoteka?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> video?</item>
       <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> video snimka?</item>
       <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> video snimaka?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> sliku?</item>
       <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> slike?</item>
       <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> slika?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> stavku?</item>
       <item quantity="few">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> stavke?</item>
       <item quantity="other">Želite li da dozvolite da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> stavki?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Izbriši"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Otkaži"</string>
 </resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index dcc2212..58bffee 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -29,147 +29,118 @@
     <string name="permission_required_action" msgid="706370952366113539">"Працягнуць"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Дазволіць"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Адмовіць"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="few">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="many">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Плюс <xliff:g id="COUNT_1">^1</xliff:g> дадатковы элемент</item>
       <item quantity="few">Плюс <xliff:g id="COUNT_1">^1</xliff:g> дадатковыя элементы</item>
       <item quantity="many">Плюс <xliff:g id="COUNT_1">^1</xliff:g> дадатковых элементаў</item>
       <item quantity="other">Плюс <xliff:g id="COUNT_1">^1</xliff:g> дадатковага элемента</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Ачысціць часовыя файлы праграм"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> запытвае дазвол на выдаленне некаторых часовых файлаў. У сувязі з гэтым можа павялічыцца ўзровень выкарыстання акумулятара ці памер сотавай перадачы даных."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Выдаляюцца часовыя файлы праграм…"</string>
+    <string name="clear" msgid="5524638938415865915">"Ачысціць"</string>
+    <string name="allow" msgid="8885707816848569619">"Дазволіць"</string>
+    <string name="deny" msgid="6040983710442068936">"Адмовіць"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайл?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайлы?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайлаў?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайла?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> відэа?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> відэа?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> відэа?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> відэа?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> фота?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> фота?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> фота?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> фота?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> элемент?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> элементы?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> элементаў?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" змяніць <xliff:g id="COUNT">^2</xliff:g> элемента?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Змяніць"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Скасаваць"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайл у сметніцу?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайлы ў сметніцу?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайлаў у сметніцу?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайла ў сметніцу?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Гэтыя аўдыяфайлы будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дзень</item>
-      <item quantity="few">Гэтыя аўдыяфайлы будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дні</item>
-      <item quantity="many">Гэтыя аўдыяфайлы будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дзён</item>
-      <item quantity="other">Гэтыя аўдыяфайлы будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дня</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> відэа ў сметніцу?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> відэа ў сметніцу?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> відэа ў сметніцу?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> відэа ў сметніцу?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Гэтыя відэа будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дзень</item>
-      <item quantity="few">Гэтыя відэа будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дні</item>
-      <item quantity="many">Гэтыя відэа будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дзён</item>
-      <item quantity="other">Гэтыя відэа будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дня</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> фота ў сметніцу?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> фота ў сметніцу?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> фота ў сметніцу?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> фота ў сметніцу?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Гэтыя фота будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дзень</item>
-      <item quantity="few">Гэтыя фота будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дні</item>
-      <item quantity="many">Гэтыя фота будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дзён</item>
-      <item quantity="other">Гэтыя фота будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дня</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> элемент у сметніцу?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> элементы ў сметніцу?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> элементаў у сметніцу?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> элемента ў сметніцу?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Гэтыя элементы будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дзень</item>
-      <item quantity="few">Гэтыя элементы будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дні</item>
-      <item quantity="many">Гэтыя элементы будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дзён</item>
-      <item quantity="other">Гэтыя элементы будуць выдалены без магчымасці аднаўлення праз <xliff:g id="DURATION_1">^3</xliff:g> дня</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Перамясціць у сметніцу"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Скасаваць"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайл са сметніцы?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайлы са сметніцы?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайлаў са сметніцы?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайла са сметніцы?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> відэа са сметніцы?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> відэа са сметніцы?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> відэа са сметніцы?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> відэа са сметніцы?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> фота са сметніцы?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> фота са сметніцы?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> фота са сметніцы?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> фота са сметніцы?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> элемент са сметніцы?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> элементы са сметніцы?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> элементаў са сметніцы?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" перамясціць <xliff:g id="COUNT">^2</xliff:g> элемента са сметніцы?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Перамясціць са сметніцы"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Скасаваць"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайл?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайлы?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайлаў?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> аўдыяфайла?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> відэа?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> відэа?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> відэа?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> відэа?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> фота?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> фота?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> фота?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> фота?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> элемент?</item>
       <item quantity="few">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> элементы?</item>
       <item quantity="many">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> элементаў?</item>
       <item quantity="other">Дазволіць праграме \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" выдаліць <xliff:g id="COUNT">^2</xliff:g> элемента?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Выдаліць"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Скасаваць"</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index c3a5fdd..b576228 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Напред"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Разрешаване"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Отказ"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+ <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+ <xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">И още <xliff:g id="COUNT_1">^1</xliff:g> допълнителни елемента</item>
       <item quantity="one">И още <xliff:g id="COUNT_0">^1</xliff:g> допълнителен елемент</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да промени <xliff:g id="COUNT">^2</xliff:g> аудиофайла?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да промени този аудиофайл?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Изчистване на временните файлове на приложенията"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> иска да изчисти някои временни файлове. Това може да доведе до увеличено използване на батерията или мобилните данни."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Временните файлове на приложенията се изчистват…"</string>
+    <string name="clear" msgid="5524638938415865915">"Изчистване"</string>
+    <string name="allow" msgid="8885707816848569619">"Разрешаване"</string>
+    <string name="deny" msgid="6040983710442068936">"Отказ"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да промени <xliff:g id="COUNT">^2</xliff:g> аудиофайла?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да промени този аудиофайл?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да промени <xliff:g id="COUNT">^2</xliff:g> видеоклипа?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да промени този видеоклип?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да промени <xliff:g id="COUNT">^2</xliff:g> видеоклипа?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да промени този видеоклип?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да промени <xliff:g id="COUNT">^2</xliff:g> снимки?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да промени тази снимка?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да промени <xliff:g id="COUNT">^2</xliff:g> снимки?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да промени тази снимка?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да промени <xliff:g id="COUNT">^2</xliff:g> елемента?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да промени този елемент?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да промени <xliff:g id="COUNT">^2</xliff:g> елемента?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да промени този елемент?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Промяна"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Отказ"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> аудиофайла в кошчето?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести този аудиофайл в кошчето?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> аудиофайла в кошчето?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести този аудиофайл в кошчето?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Тези аудиофайлове ще бъдат изтрити за постоянно след <xliff:g id="DURATION_1">^3</xliff:g> дни</item>
-      <item quantity="one">Този аудиофайл ще бъде изтрит за постоянно след <xliff:g id="DURATION_0">^3</xliff:g> дни</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> видеоклипа в кошчето?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести този видеоклип в кошчето?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> видеоклипа в кошчето?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести този видеоклип в кошчето?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> снимки в кошчето?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести тази снимка в кошчето?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Тези видеоклипове ще бъдат изтрити за постоянно след <xliff:g id="DURATION_1">^3</xliff:g> дни</item>
-      <item quantity="one">Този видеоклип ще бъде изтрит за постоянно след <xliff:g id="DURATION_0">^3</xliff:g> дни</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> елемента в кошчето?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести този елемент в кошчето?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> снимки в кошчето?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести тази снимка в кошчето?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> аудиофайла извън кошчето?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести този аудиофайл извън кошчето?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Тези снимки ще бъдат изтрити за постоянно след <xliff:g id="DURATION_1">^3</xliff:g> дни</item>
-      <item quantity="one">Тази снимка ще бъде изтрита за постоянно след <xliff:g id="DURATION_0">^3</xliff:g> дни</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> видеоклипа извън кошчето?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести този видеоклип извън кошчето?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> елемента в кошчето?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести този елемент в кошчето?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> снимки извън кошчето?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести тази снимка извън кошчето?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Тези елементи ще бъдат изтрити за постоянно след <xliff:g id="DURATION_1">^3</xliff:g> дни</item>
-      <item quantity="one">Този елемент ще бъде изтрит за постоянно след <xliff:g id="DURATION_0">^3</xliff:g> дни</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> елемента извън кошчето?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести този елемент извън кошчето?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Преместване в кошчето"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Отказ"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> аудиофайла извън кошчето?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести този аудиофайл извън кошчето?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да изтрие <xliff:g id="COUNT">^2</xliff:g> аудиофайла?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да изтрие този аудиофайл?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> видеоклипа извън кошчето?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести този видеоклип извън кошчето?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да изтрие <xliff:g id="COUNT">^2</xliff:g> видеоклипа?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да изтрие този видеоклип?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> снимки извън кошчето?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести тази снимка извън кошчето?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да изтрие <xliff:g id="COUNT">^2</xliff:g> снимки?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да изтрие тази снимка?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> елемента извън кошчето?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да премести този елемент извън кошчето?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Да се разреши ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да изтрие <xliff:g id="COUNT">^2</xliff:g> елемента?</item>
+      <item quantity="one">Да се разреши ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да изтрие този елемент?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Преместване извън кошчето"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Отказ"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да изтрие <xliff:g id="COUNT">^2</xliff:g> аудиофайла?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да изтрие този аудиофайл?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да изтрие <xliff:g id="COUNT">^2</xliff:g> видеоклипa?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да изтрие този видеоклип?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да изтрие <xliff:g id="COUNT">^2</xliff:g> снимки?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да изтрие тази снимка?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Разрешавате ли на <xliff:g id="APP_NAME_1">^1</xliff:g> да изтрие <xliff:g id="COUNT">^2</xliff:g> елемента?</item>
-      <item quantity="one">Разрешавате ли на <xliff:g id="APP_NAME_0">^1</xliff:g> да изтрие този елемент?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Изтриване"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Отказ"</string>
 </resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index b30a06e..4b02f68 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -21,7 +21,7 @@
     <string name="app_label" msgid="9035307001052716210">"মিডিয়া স্টোরেজ"</string>
     <string name="artist_label" msgid="8105600993099120273">"শিল্পী"</string>
     <string name="unknown" msgid="2059049215682829375">"অজানা"</string>
-    <string name="root_images" msgid="5861633549189045666">"ছবি"</string>
+    <string name="root_images" msgid="5861633549189045666">"Images"</string>
     <string name="root_videos" msgid="8792703517064649453">"ভিডিও"</string>
     <string name="root_audio" msgid="3505830755201326018">"অডিও"</string>
     <string name="root_documents" msgid="3829103301363849237">"ডকুমেন্ট"</string>
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"চালিয়ে যান"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"অনুমতি দিন"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"খারিজ করুন"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g>টি</item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g>টি</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">এছাড়াও <xliff:g id="COUNT_1">^1</xliff:g>টি অতিরিক্ত আইটেম</item>
       <item quantity="other">এছাড়াও <xliff:g id="COUNT_1">^1</xliff:g>টি অতিরিক্ত আইটেম</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল পরিবর্তন করার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল পরিবর্তন করার অনুমতি দিতে চান?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"অস্থায়ী অ্যাপ ফাইলগুলি খালি করুন"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> কিছু অস্থায়ী ফাইলকে মুছে দিতে চায়। এর ফলে, ব্যাটারি বা মোবাইল ডেটা বেশি খরচ হতে পারে।"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"অস্থায়ী অ্যাপ ফাইল মুছে ফেলা হচ্ছে…"</string>
+    <string name="clear" msgid="5524638938415865915">"সরান"</string>
+    <string name="allow" msgid="8885707816848569619">"অনুমতি দিন"</string>
+    <string name="deny" msgid="6040983710442068936">"বাতিল করুন"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল পরিবর্তন করার অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল পরিবর্তন করার অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও পরিবর্তন করার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও পরিবর্তন করার অনুমতি দিতে চান?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও পরিবর্তন করার অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও পরিবর্তন করার অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ফটো পরিবর্তন করার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ফটো পরিবর্তন করার অনুমতি দিতে চান?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ফটো পরিবর্তন করার অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ফটো পরিবর্তন করার অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম পরিবর্তন করার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম পরিবর্তন করার অনুমতি দিতে চান?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম পরিবর্তন করার অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম পরিবর্তন করার অনুমতি দিতে চান?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"পরিবর্তন করুন"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"বাতিল করুন"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল ট্র্যাশে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল ট্র্যাশে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল ট্র্যাশ ফোল্ডারে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল ট্র্যাশ ফোল্ডারে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">এই অডিও ফাইলগুলি <xliff:g id="DURATION_1">^3</xliff:g> দিন পরে স্থায়ীভাবে মুছে ফেলা হবে</item>
-      <item quantity="other">এই অডিও ফাইলগুলি <xliff:g id="DURATION_1">^3</xliff:g> দিন পরে স্থায়ীভাবে মুছে ফেলা হবে</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও ট্র্যাশ ফোল্ডারে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও ট্র্যাশ ফোল্ডারে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও ট্র্যাশে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও ট্র্যাশে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ফটো ট্র্যাশ ফোল্ডারে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ফটো ট্র্যাশ ফোল্ডারে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">এই ভিডিওগুলি <xliff:g id="DURATION_1">^3</xliff:g> দিন পরে স্থায়ীভাবে মুছে ফেলা হবে</item>
-      <item quantity="other">এই ভিডিওগুলি <xliff:g id="DURATION_1">^3</xliff:g> দিন পরে স্থায়ীভাবে মুছে ফেলা হবে</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম ট্র্যাশ ফোল্ডারে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম ট্র্যাশ ফোল্ডারে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ফটো ট্র্যাশে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ফটো ট্র্যাশে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল ট্র্যাশ ফোল্ডার থেকে সরানোর অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল ট্র্যাশ ফোল্ডার থেকে সরানোর অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">এই ফটোগুলি <xliff:g id="DURATION_1">^3</xliff:g> দিন পরে স্থায়ীভাবে মুছে ফেলা হবে</item>
-      <item quantity="other">এই ফটোগুলি <xliff:g id="DURATION_1">^3</xliff:g> দিন পরে স্থায়ীভাবে মুছে ফেলা হবে</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও ট্র্যাশ ফোল্ডার থেকে সরানোর অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও ট্র্যাশ ফোল্ডার থেকে সরানোর অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম ট্র্যাশে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম ট্র্যাশে সরিয়ে দেওয়ার অনুমতি দিতে চান?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ফটো ট্র্যাশ ফোল্ডার থেকে সরানোর অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ফটো ট্র্যাশ ফোল্ডার থেকে সরানোর অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">এই আইটেমগুলি <xliff:g id="DURATION_1">^3</xliff:g> দিন পরে স্থায়ীভাবে মুছে ফেলা হবে</item>
-      <item quantity="other">এই আইটেমগুলি <xliff:g id="DURATION_1">^3</xliff:g> দিন পরে স্থায়ীভাবে মুছে ফেলা হবে</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম ট্র্যাশ ফোল্ডার থেকে সরানোর অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম ট্র্যাশ ফোল্ডার থেকে সরানোর অনুমতি দিতে চান?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ট্র্যাশে সরান"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"বাতিল করুন"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল ট্র্যাশ থেকে সরিয়ে আনার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল ট্র্যাশ থেকে সরিয়ে আনার অনুমতি দিতে চান?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল মুছে দেওয়ার অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল মুছে দেওয়ার অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও ট্র্যাশ থেকে সরিয়ে আনার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও ট্র্যাশ থেকে সরিয়ে আনার অনুমতি দিতে চান?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও মুছে দেওয়ার অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও মুছে দেওয়ার অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ফটো ট্র্যাশ থেকে সরিয়ে আনার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ফটো ট্র্যাশ থেকে সরিয়ে আনার অনুমতি দিতে চান?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ফটো মুছে দেওয়ার অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি ফটো মুছে দেওয়ার অনুমতি দিতে চান?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম ট্র্যাশ থেকে সরিয়ে আনার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম ট্র্যাশ থেকে সরিয়ে আনার অনুমতি দিতে চান?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম মুছে দেওয়ার অনুমতি দিতে চান?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-কে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম মুছে দেওয়ার অনুমতি দিতে চান?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ট্র্যাশ থেকে সরিয়ে আনুন"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"বাতিল করুন"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল মুছে ফেলার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি অডিও ফাইল মুছে ফেলার অনুমতি দিতে চান?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও মুছে ফেলার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ভিডিও মুছে ফেলার অনুমতি দিতে চান?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ফটো মুছে ফেলার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি ফটো মুছে ফেলার অনুমতি দিতে চান?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম মুছে ফেলার অনুমতি দিতে চান?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> অ্যাপটিকে <xliff:g id="COUNT">^2</xliff:g>টি আইটেম মুছে ফেলার অনুমতি দিতে চান?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"মুছুন"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"বাতিল করুন"</string>
 </resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index f4c6e06..9f89481 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -29,126 +29,100 @@
     <string name="permission_required_action" msgid="706370952366113539">"Nastavi"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Dozvoli"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Odbij"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="few">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Još <xliff:g id="COUNT_1">^1</xliff:g> dodatna stavka</item>
       <item quantity="few">Još <xliff:g id="COUNT_1">^1</xliff:g> dodatne stavke</item>
       <item quantity="other">Još <xliff:g id="COUNT_1">^1</xliff:g> dodatnih stavki</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> promijeni <xliff:g id="COUNT">^2</xliff:g> audio fajl?</item>
-      <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> promijeni <xliff:g id="COUNT">^2</xliff:g> audio fajla?</item>
-      <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> promijeni <xliff:g id="COUNT">^2</xliff:g> audio fajlova?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Brisanje privremenih fajlova aplikacija"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"Aplikacija <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> želi obrisati neke privremene fajlove. Ovo može dovesti do povećanog korištenja baterije ili prijenosa podataka na mobilnoj mreži."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Brisanje privremenih fajlova aplikacije…"</string>
+    <string name="clear" msgid="5524638938415865915">"Obriši"</string>
+    <string name="allow" msgid="8885707816848569619">"Dozvoli"</string>
+    <string name="deny" msgid="6040983710442068936">"Odbij"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izmijeni <xliff:g id="COUNT">^2</xliff:g> audio fajl?</item>
+      <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izmijeni <xliff:g id="COUNT">^2</xliff:g> audio fajla?</item>
+      <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izmijeni <xliff:g id="COUNT">^2</xliff:g> audio fajlova?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> promijeni <xliff:g id="COUNT">^2</xliff:g> videozapis?</item>
-      <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> promijeni <xliff:g id="COUNT">^2</xliff:g> videozapisa?</item>
-      <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> promijeni <xliff:g id="COUNT">^2</xliff:g> videozapisa?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izmijeni <xliff:g id="COUNT">^2</xliff:g> videozapis?</item>
+      <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izmijeni <xliff:g id="COUNT">^2</xliff:g> videozapisa?</item>
+      <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izmijeni <xliff:g id="COUNT">^2</xliff:g> videozapisa?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> promijeni <xliff:g id="COUNT">^2</xliff:g> fotografiju?</item>
-      <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> promijeni <xliff:g id="COUNT">^2</xliff:g> fotografije?</item>
-      <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> promijeni <xliff:g id="COUNT">^2</xliff:g> fotografija?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izmijeni <xliff:g id="COUNT">^2</xliff:g> fotografiju?</item>
+      <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izmijeni <xliff:g id="COUNT">^2</xliff:g> fotografije?</item>
+      <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izmijeni <xliff:g id="COUNT">^2</xliff:g> fotografija?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> promijeni <xliff:g id="COUNT">^2</xliff:g> stavku?</item>
-      <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> promijeni <xliff:g id="COUNT">^2</xliff:g> stavke?</item>
-      <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> promijeni <xliff:g id="COUNT">^2</xliff:g> stavki?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izmijeni <xliff:g id="COUNT">^2</xliff:g> stavku?</item>
+      <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izmijeni <xliff:g id="COUNT">^2</xliff:g> stavke?</item>
+      <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izmijeni <xliff:g id="COUNT">^2</xliff:g> stavki?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Promijeni"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Otkaži"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> audio fajl u otpad?</item>
       <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> audio fajla u otpad?</item>
       <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> audio fajlova u otpad?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Ovi audio fajlovi će se trajno izbrisati nakon <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-      <item quantity="few">Ovi audio fajlovi će se trajno izbrisati nakon <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-      <item quantity="other">Ovi audio fajlovi će se trajno izbrisati nakon <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> videozapis u otpad?</item>
       <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> videozapisa u otpad?</item>
       <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> videozapisa u otpad?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Ovi videozapisi će se trajno izbrisati nakon <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-      <item quantity="few">Ovi videozapisi će se trajno izbrisati nakon <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-      <item quantity="other">Ovi videozapisi će se trajno izbrisati nakon <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> fotografiju u otpad?</item>
       <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> fotografije u otpad?</item>
       <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> fotografija u otpad?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Ove fotografije će se trajno izbrisati nakon <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-      <item quantity="few">Ove fotografije će se trajno izbrisati nakon <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-      <item quantity="other">Ove fotografije će se trajno izbrisati nakon <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> stavku u otpad?</item>
       <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> stavke u otpad?</item>
       <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> stavki u otpad?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Ove stavke će se trajno izbrisati nakon <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-      <item quantity="few">Ove stavke će se trajno izbrisati nakon <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-      <item quantity="other">Ove stavke će se trajno izbrisati nakon <xliff:g id="DURATION_1">^3</xliff:g> dana</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Premjesti u otpad"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Otkaži"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> audio fajl iz otpada?</item>
       <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> audio fajla iz otpada?</item>
       <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> audio fajlova iz otpada?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> videozapis iz otpada?</item>
       <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> videozapisa iz otpada?</item>
       <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> videozapisa iz otpada?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> fotografiju iz otpada?</item>
       <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> fotografije iz otpada?</item>
       <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> fotografija iz otpada?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> stavku iz otpada?</item>
       <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> stavke iz otpada?</item>
       <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> premjesti <xliff:g id="COUNT">^2</xliff:g> stavki iz otpada?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Premjesti iz otpada"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Otkaži"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> audio fajl?</item>
       <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> audio fajla?</item>
       <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> audio fajlova?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> videozapis?</item>
       <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> videozapisa?</item>
       <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> videozapisa?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> fotografiju?</item>
       <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> fotografije?</item>
       <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> fotografija?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> stavku?</item>
       <item quantity="few">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> stavke?</item>
       <item quantity="other">Dozvoliti da <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> stavki?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Izbriši"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Otkaži"</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index bd86598..184a9b9 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continua"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Permet"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Denega"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other"><xliff:g id="COUNT_1">^1</xliff:g> més</item>
+      <item quantity="one"><xliff:g id="COUNT_0">^1</xliff:g> més</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other"><xliff:g id="COUNT_1">^1</xliff:g> elements addicionals més</item>
       <item quantity="one"><xliff:g id="COUNT_0">^1</xliff:g> element addicional més</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Esborra fitxers temporals d\'aplicacions"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> vol esborrar alguns fitxers temporals. Això pot suposar un augment de l\'ús de la bateria o de les dades mòbils."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"S\'estan esborrant els fitxers temporals d\'aplicacions…"</string>
+    <string name="clear" msgid="5524638938415865915">"Esborra"</string>
+    <string name="allow" msgid="8885707816848569619">"Permet"</string>
+    <string name="deny" msgid="6040983710442068936">"Denega"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> modifiqui <xliff:g id="COUNT">^2</xliff:g> fitxers d\'àudio?</item>
       <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> modifiqui aquest fitxer d\'àudio?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> modifiqui <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
       <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> modifiqui aquest vídeo?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> modifiqui <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
       <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> modifiqui aquesta foto?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> modifiqui <xliff:g id="COUNT">^2</xliff:g> elements?</item>
       <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> modifiqui aquest element?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Modifica"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Cancel·la"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> mogui <xliff:g id="COUNT">^2</xliff:g> fitxers d\'àudio a la paperera?</item>
       <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> mogui aquest fitxer d\'àudio a la paperera?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Aquests fitxers d\'àudio se suprimiran permanentment d\'aquí a <xliff:g id="DURATION_1">^3</xliff:g> dies</item>
-      <item quantity="one">Aquest fitxer d\'àudio se suprimirà permanentment d\'aquí a <xliff:g id="DURATION_0">^3</xliff:g> dies</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> mogui <xliff:g id="COUNT">^2</xliff:g> vídeos a la paperera?</item>
       <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> mogui aquest vídeo a la paperera?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Aquests vídeos se suprimiran permanentment d\'aquí a <xliff:g id="DURATION_1">^3</xliff:g> dies</item>
-      <item quantity="one">Aquest vídeo se suprimirà permanentment d\'aquí a <xliff:g id="DURATION_0">^3</xliff:g> dies</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> mogui <xliff:g id="COUNT">^2</xliff:g> fotos a la paperera?</item>
       <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> mogui aquesta foto a la paperera?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Aquestes fotos se suprimiran permanentment d\'aquí a <xliff:g id="DURATION_1">^3</xliff:g> dies</item>
-      <item quantity="one">Aquesta foto se suprimirà permanentment d\'aquí a <xliff:g id="DURATION_0">^3</xliff:g> dies</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> mogui <xliff:g id="COUNT">^2</xliff:g> elements a la paperera?</item>
       <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> mogui aquest element a la paperera?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Aquests elements se suprimiran permanentment d\'aquí a <xliff:g id="DURATION_1">^3</xliff:g> dies</item>
-      <item quantity="one">Aquest element se suprimirà permanentment d\'aquí a <xliff:g id="DURATION_0">^3</xliff:g> dies</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> tregui <xliff:g id="COUNT">^2</xliff:g> fitxers d\'àudio de la paperera?</item>
+      <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> tregui aquest fitxer d\'àudio de la paperera?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Mou a la paperera"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Cancel·la"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> mogui <xliff:g id="COUNT">^2</xliff:g> fitxers d\'àudio de la paperera?</item>
-      <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> mogui aquest fitxer d\'àudio de la paperera?</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> tregui <xliff:g id="COUNT">^2</xliff:g> vídeos de la paperera?</item>
+      <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> tregui aquest vídeo de la paperera?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> mogui <xliff:g id="COUNT">^2</xliff:g> vídeos de la paperera?</item>
-      <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> mogui aquest vídeo de la paperera?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> tregui <xliff:g id="COUNT">^2</xliff:g> fotos de la paperera?</item>
+      <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> tregui aquesta foto de la paperera?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> mogui <xliff:g id="COUNT">^2</xliff:g> fotos de la paperera?</item>
-      <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> mogui aquesta foto de la paperera?</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> tregui <xliff:g id="COUNT">^2</xliff:g> elements de la paperera?</item>
+      <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> tregui aquest element de la paperera?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> mogui <xliff:g id="COUNT">^2</xliff:g> elements de la paperera?</item>
-      <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> mogui aquest element de la paperera?</item>
-    </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Treu de la paperera"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Cancel·la"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> suprimeixi <xliff:g id="COUNT">^2</xliff:g> fitxers d\'àudio?</item>
       <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> suprimeixi aquest fitxer d\'àudio?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> suprimeixi <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
       <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> suprimeixi aquest vídeo?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> suprimeixi <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
       <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> suprimeixi aquesta foto?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other">Vols permetre que <xliff:g id="APP_NAME_1">^1</xliff:g> suprimeixi <xliff:g id="COUNT">^2</xliff:g> elements?</item>
       <item quantity="one">Vols permetre que <xliff:g id="APP_NAME_0">^1</xliff:g> suprimeixi aquest element?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Suprimeix"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Cancel·la"</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 6cff580..3fa3e40 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -29,147 +29,118 @@
     <string name="permission_required_action" msgid="706370952366113539">"Pokračovat"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Povolit"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Zamítnout"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="few">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="many">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="few">Plus <xliff:g id="COUNT_1">^1</xliff:g> další položky</item>
       <item quantity="many">Plus <xliff:g id="COUNT_1">^1</xliff:g> další položky</item>
       <item quantity="other">Plus <xliff:g id="COUNT_1">^1</xliff:g> dalších položek</item>
       <item quantity="one">Plus <xliff:g id="COUNT_0">^1</xliff:g> další položka</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> změnit <xliff:g id="COUNT">^2</xliff:g> zvukové soubory?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> změnit <xliff:g id="COUNT">^2</xliff:g> zvukového souboru?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> změnit <xliff:g id="COUNT">^2</xliff:g> zvukových souborů?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> změnit tento zvukový soubor?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Vymazání dočasných souborů aplikací"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"Aplikace <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> chce vymazat nějaké dočasné soubory. Tato akce může vést ke zvýšenému využití baterie nebo mobilních dat."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Mazání dočasných souborů aplikace…"</string>
+    <string name="clear" msgid="5524638938415865915">"Vymazat"</string>
+    <string name="allow" msgid="8885707816848569619">"Povolit"</string>
+    <string name="deny" msgid="6040983710442068936">"Zakázat"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> upravit <xliff:g id="COUNT">^2</xliff:g> zvukové soubory?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> upravit <xliff:g id="COUNT">^2</xliff:g> zvukového souboru?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> upravit <xliff:g id="COUNT">^2</xliff:g> zvukových souborů?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> upravit tento zvukový soubor?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> změnit <xliff:g id="COUNT">^2</xliff:g> videa?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> změnit <xliff:g id="COUNT">^2</xliff:g> videa?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> změnit <xliff:g id="COUNT">^2</xliff:g> videí?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> změnit toto video?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> upravit <xliff:g id="COUNT">^2</xliff:g> videa?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> upravit <xliff:g id="COUNT">^2</xliff:g> videa?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> upravit <xliff:g id="COUNT">^2</xliff:g> videí?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> upravit toto video?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> změnit <xliff:g id="COUNT">^2</xliff:g> fotky?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> změnit <xliff:g id="COUNT">^2</xliff:g> fotky?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> změnit <xliff:g id="COUNT">^2</xliff:g> fotek?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> změnit tuto fotku?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> upravit <xliff:g id="COUNT">^2</xliff:g> fotky?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> upravit <xliff:g id="COUNT">^2</xliff:g> fotky?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> upravit <xliff:g id="COUNT">^2</xliff:g> fotek?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> upravit tuto fotku?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> změnit <xliff:g id="COUNT">^2</xliff:g> položky?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> změnit <xliff:g id="COUNT">^2</xliff:g> položky?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> změnit <xliff:g id="COUNT">^2</xliff:g> položek?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> změnit tuto položku?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> upravit <xliff:g id="COUNT">^2</xliff:g> položky?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> upravit <xliff:g id="COUNT">^2</xliff:g> položky?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> upravit <xliff:g id="COUNT">^2</xliff:g> položek?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> upravit tuto položku?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Změnit"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Zrušit"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> zvukové soubory do koše?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> zvukového souboru do koše?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> zvukových souborů do koše?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> přesunout tento zvukový soubor do koše?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> zvukové soubory do koše?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> zvukového souboru do koše?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> zvukových souborů do koše?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> přesunout tento zvukový soubor do koše?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="few">Tyto zvukové soubory budou za následující počet dní trvale smazány: <xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="many">Tyto zvukové soubory budou za následující počet dní trvale smazány: <xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="other">Tyto zvukové soubory budou za následující počet dní trvale smazány: <xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="one">Tento zvukový soubor bude za následující počet dní trvale smazán: <xliff:g id="DURATION_0">^3</xliff:g></item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> videa do koše?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> videa do koše?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> videí do koše?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> přesunout toto video do koše?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> videa do koše?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> videa do koše?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> videí do koše?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> přesunout toto video do koše?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> fotky do koše?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> fotky do koše?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> fotek do koše?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> přesunout tuto fotku do koše?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="few">Tato videa budou za následující počet dní trvale smazána: <xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="many">Tato videa budou za následující počet dní trvale smazána: <xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="other">Tato videa budou za následující počet dní trvale smazána: <xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="one">Toto video bude za následující počet dní trvale smazáno: <xliff:g id="DURATION_0">^3</xliff:g>.</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> položky do koše?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> položky do koše?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> položek do koše?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> přesunout tuto položku do koše?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> fotky do koše?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> fotky do koše?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> fotek do koše?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> přesunout tuto fotku do koše?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> zvukové soubory z koše?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> zvukového souboru z koše?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> zvukových souborů z koše?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> vyjmout tento zvukový soubor z koše?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="few">Tyto fotky budou za následující počet dní trvale smazány: <xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="many">Tyto fotky budou za následující počet dní trvale smazány: <xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="other">Tyto fotky budou za následující počet dní trvale smazány: <xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="one">Tato fotka bude za následující počet dní trvale smazána: <xliff:g id="DURATION_0">^3</xliff:g>.</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> videa z koše?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> videa z koše?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> videí z koše?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> vyjmout toto video z koše?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> položky do koše?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> položky do koše?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> přesunout <xliff:g id="COUNT">^2</xliff:g> položek do koše?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> přesunout tuto položku do koše?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> fotky z koše?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> fotky z koše?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> fotek z koše?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> vyjmout tuto fotku z koše?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="few">Tyto položky budou za následující počet dní trvale smazány: <xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="many">Tyto položky budou za následující počet dní trvale smazány: <xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="other">Tyto položky budou za následující počet dní trvale smazány: <xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="one">Tato položka bude za následující počet dní trvale smazána: <xliff:g id="DURATION_0">^3</xliff:g>.</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> položky z koše?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> položky z koše?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> položek z koše?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> vyjmout tuto položku z koše?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Přesunout do koše"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Zrušit"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> zvukové soubory z koše?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> zvukového souboru z koše?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> zvukových souborů z koše?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> vyjmout tento zvukový soubor z koše?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> zvukové soubory?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> zvukového souboru?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> zvukových souborů?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> smazat tento zvukový soubor?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> videa z koše?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> videa z koše?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> videí z koše?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> vyjmout toto video z koše?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> videa?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> videa?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> videí?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> smazat toto video?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> fotky z koše?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> fotky z koše?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> fotek z koše?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> vyjmout tuto fotku z koše?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> fotky?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> fotky?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> fotek?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> smazat tuto fotku?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> položky z koše?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> položky z koše?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> vyjmout <xliff:g id="COUNT">^2</xliff:g> položek z koše?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> vyjmout tuto položku z koše?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="few">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> položky?</item>
+      <item quantity="many">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> položky?</item>
+      <item quantity="other">Povolit aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> položek?</item>
+      <item quantity="one">Povolit aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> smazat tuto položku?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Vyjmout z koše"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Zrušit"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> zvukové soubory?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> zvukového souboru?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> zvukových souborů?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> smazat tento zvukový soubor?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> videa?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> videa?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> videí?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> smazat toto video?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> fotky?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> fotky?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> fotek?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> smazat tuto fotku?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="few">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> položky?</item>
-      <item quantity="many">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> položky?</item>
-      <item quantity="other">Nechat aplikaci <xliff:g id="APP_NAME_1">^1</xliff:g> smazat <xliff:g id="COUNT">^2</xliff:g> položek?</item>
-      <item quantity="one">Nechat aplikaci <xliff:g id="APP_NAME_0">^1</xliff:g> smazat tuto položku?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Smazat"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Zrušit"</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index ad185d7..96ee522 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -19,7 +19,7 @@
     <string name="uid_label" msgid="8421971615411294156">"Medier"</string>
     <string name="storage_description" msgid="4081716890357580107">"Lokalt lager"</string>
     <string name="app_label" msgid="9035307001052716210">"Medielagring"</string>
-    <string name="artist_label" msgid="8105600993099120273">"Musiker"</string>
+    <string name="artist_label" msgid="8105600993099120273">"Kunstner"</string>
     <string name="unknown" msgid="2059049215682829375">"Ukendt"</string>
     <string name="root_images" msgid="5861633549189045666">"Billeder"</string>
     <string name="root_videos" msgid="8792703517064649453">"Videoer"</string>
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Fortsæt"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Tillad"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Afvis"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Plus <xliff:g id="COUNT_1">^1</xliff:g> andet element</item>
       <item quantity="other">Plus <xliff:g id="COUNT_1">^1</xliff:g> andre elementer</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Ryd midlertidige appfiler"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> vil gerne rydde nogle midlertidige filer. Dette kan resultere i øget forbrug af batteri eller mobildata."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Rydder midlertidige appfiler…"</string>
+    <string name="clear" msgid="5524638938415865915">"Ryd"</string>
+    <string name="allow" msgid="8885707816848569619">"Tillad"</string>
+    <string name="deny" msgid="6040983710442068936">"Afvis"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at ændre <xliff:g id="COUNT">^2</xliff:g> lydfil?</item>
       <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at ændre <xliff:g id="COUNT">^2</xliff:g> lydfiler?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at ændre <xliff:g id="COUNT">^2</xliff:g> video?</item>
       <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at ændre <xliff:g id="COUNT">^2</xliff:g> videoer?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at ændre <xliff:g id="COUNT">^2</xliff:g> billede?</item>
       <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at ændre <xliff:g id="COUNT">^2</xliff:g> billeder?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at ændre <xliff:g id="COUNT">^2</xliff:g> element?</item>
       <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at ændre <xliff:g id="COUNT">^2</xliff:g> elementer?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Rediger"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Annuller"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> lydfil til papirkurven?</item>
       <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> lydfiler til papirkurven?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Denne lydfil bliver slettet permanent efter <xliff:g id="DURATION_1">^3</xliff:g> dag</item>
-      <item quantity="other">Disse lydfiler bliver slettet permanent efter <xliff:g id="DURATION_1">^3</xliff:g> dage</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> video til papirkurven?</item>
       <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> videoer til papirkurven?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Denne video bliver slettet permanent efter <xliff:g id="DURATION_1">^3</xliff:g> dag</item>
-      <item quantity="other">Disse videoer bliver slettet permanent efter <xliff:g id="DURATION_1">^3</xliff:g> dage</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> billede til papirkurven?</item>
       <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> billeder til papirkurven?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Dette billede bliver slettet permanent efter <xliff:g id="DURATION_1">^3</xliff:g> dag</item>
-      <item quantity="other">Disse billeder bliver slettet permanent efter <xliff:g id="DURATION_1">^3</xliff:g> dage</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> element til papirkurven?</item>
       <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> elementer til papirkurven?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Dette element bliver slettet permanent efter <xliff:g id="DURATION_1">^3</xliff:g> dag</item>
-      <item quantity="other">Disse elementer bliver slettet permanent efter <xliff:g id="DURATION_1">^3</xliff:g> dage</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> lydfil ud af papirkurven?</item>
+      <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> lydfiler ud af papirkurven?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Flyt til papirkurven"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Annuller"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> lydfil væk fra papirkurven?</item>
-      <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> lydfiler væk fra papirkurven?</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> video ud af papirkurven?</item>
+      <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> videoer ud af papirkurven?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> video væk fra papirkurven?</item>
-      <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> videoer væk fra papirkurven?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> billede ud af papirkurven?</item>
+      <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> billeder ud af papirkurven?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> billede væk fra papirkurven?</item>
-      <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> billeder væk fra papirkurven?</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> element ud af papirkurven?</item>
+      <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> elementer ud af papirkurven?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> element væk fra papirkurven?</item>
-      <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at flytte <xliff:g id="COUNT">^2</xliff:g> elementer væk fra papirkurven?</item>
-    </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Flyt væk fra papirkurven"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Annuller"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at slette <xliff:g id="COUNT">^2</xliff:g> lydfil?</item>
       <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at slette <xliff:g id="COUNT">^2</xliff:g> lydfiler?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at slette <xliff:g id="COUNT">^2</xliff:g> video?</item>
       <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at slette <xliff:g id="COUNT">^2</xliff:g> videoer?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at slette <xliff:g id="COUNT">^2</xliff:g> billede?</item>
       <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at slette <xliff:g id="COUNT">^2</xliff:g> billeder?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at slette <xliff:g id="COUNT">^2</xliff:g> element?</item>
       <item quantity="other">Vil du give <xliff:g id="APP_NAME_1">^1</xliff:g> tilladelse til at slette <xliff:g id="COUNT">^2</xliff:g> elementer?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Slet"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Annuller"</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 7f23dcb..8b19ff5 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Weiter"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Zulassen"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Ablehnen"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+ <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+ <xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other"><xliff:g id="COUNT_1">^1</xliff:g> weitere Elemente</item>
       <item quantity="one"><xliff:g id="COUNT_0">^1</xliff:g> weiteres Element</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Audiodateien von <xliff:g id="APP_NAME_1">^1</xliff:g> ändern lassen?</item>
-      <item quantity="one">Diese Audiodatei von <xliff:g id="APP_NAME_0">^1</xliff:g> ändern lassen?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Temporäre App-Dateien löschen"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> möchte einige temporäre Dateien löschen. Dadurch können Akkuverbrauch und mobile Datennutzung steigen."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Temporäre App-Dateien werden gelöscht…"</string>
+    <string name="clear" msgid="5524638938415865915">"Löschen"</string>
+    <string name="allow" msgid="8885707816848569619">"Zulassen"</string>
+    <string name="deny" msgid="6040983710442068936">"Ablehnen"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Audiodateien ändern?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> diese Audiodatei ändern?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Videos von <xliff:g id="APP_NAME_1">^1</xliff:g> ändern lassen?</item>
-      <item quantity="one">Dieses Video von <xliff:g id="APP_NAME_0">^1</xliff:g> ändern lassen?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Videos ändern?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> dieses Video ändern?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Fotos von <xliff:g id="APP_NAME_1">^1</xliff:g> ändern lassen?</item>
-      <item quantity="one">Dieses Foto von <xliff:g id="APP_NAME_0">^1</xliff:g> ändern lassen?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Fotos ändern?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> dieses Foto ändern?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Elemente von <xliff:g id="APP_NAME_1">^1</xliff:g> ändern lassen?</item>
-      <item quantity="one">Dieses Element von <xliff:g id="APP_NAME_0">^1</xliff:g> ändern lassen?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Elemente ändern?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> dieses Element ändern?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Ändern"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Abbrechen"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Audiodateien von <xliff:g id="APP_NAME_1">^1</xliff:g> in den Papierkorb verschieben lassen?</item>
-      <item quantity="one">Diese Audiodatei von <xliff:g id="APP_NAME_0">^1</xliff:g> in den Papierkorb verschieben lassen?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Audiodateien in den Papierkorb verschieben?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> diese Audiodatei in den Papierkorb verschieben?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Diese Audiodateien werden nach <xliff:g id="DURATION_1">^3</xliff:g> Tagen endgültig gelöscht</item>
-      <item quantity="one">Diese Audiodatei wird nach <xliff:g id="DURATION_0">^3</xliff:g> Tagen endgültig gelöscht</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Videos in den Papierkorb verschieben?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> dieses Video in den Papierkorb verschieben?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Videos von <xliff:g id="APP_NAME_1">^1</xliff:g> in den Papierkorb verschieben lassen?</item>
-      <item quantity="one">Dieses Video von <xliff:g id="APP_NAME_0">^1</xliff:g> in den Papierkorb verschieben lassen?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Fotos in den Papierkorb verschieben?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> dieses Foto in den Papierkorb verschieben?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Diese Videos werden nach <xliff:g id="DURATION_1">^3</xliff:g> Tagen endgültig gelöscht</item>
-      <item quantity="one">Dieses Video wird nach <xliff:g id="DURATION_0">^3</xliff:g> Tagen endgültig gelöscht</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Elemente in den Papierkorb verschieben?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> dieses Element in den Papierkorb verschieben?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Fotos von <xliff:g id="APP_NAME_1">^1</xliff:g> in den Papierkorb verschieben lassen?</item>
-      <item quantity="one">Dieses Foto von <xliff:g id="APP_NAME_0">^1</xliff:g> in den Papierkorb verschieben lassen?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Audiodateien aus dem Papierkorb verschieben?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> diese Audiodatei aus dem Papierkorb verschieben?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Diese Fotos werden nach <xliff:g id="DURATION_1">^3</xliff:g> Tagen endgültig gelöscht</item>
-      <item quantity="one">Dieses Foto wird nach <xliff:g id="DURATION_0">^3</xliff:g> Tagen endgültig gelöscht</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Videos aus dem Papierkorb verschieben?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> dieses Video aus dem Papierkorb verschieben?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Elemente von <xliff:g id="APP_NAME_1">^1</xliff:g> in den Papierkorb verschieben lassen?</item>
-      <item quantity="one">Dieses Element von <xliff:g id="APP_NAME_0">^1</xliff:g> in den Papierkorb verschieben lassen?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Fotos aus dem Papierkorb verschieben?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> dieses Foto aus dem Papierkorb verschieben?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Diese Elemente werden nach <xliff:g id="DURATION_1">^3</xliff:g> Tagen endgültig gelöscht</item>
-      <item quantity="one">Dieses Element wird nach <xliff:g id="DURATION_0">^3</xliff:g> Tagen endgültig gelöscht</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Elemente aus dem Papierkorb wiederherstellen?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> dieses Element aus dem Papierkorb verschieben?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"In den Papierkorb"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Abbrechen"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Audiodateien von <xliff:g id="APP_NAME_1">^1</xliff:g> aus dem Papierkorb wiederherstellen lassen?</item>
-      <item quantity="one">Diese Audiodatei von <xliff:g id="APP_NAME_0">^1</xliff:g> aus dem Papierkorb wiederherstellen lassen?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Audiodateien löschen?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> diese Audiodatei löschen?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Videos von <xliff:g id="APP_NAME_1">^1</xliff:g> aus dem Papierkorb wiederherstellen lassen?</item>
-      <item quantity="one">Dieses Video von <xliff:g id="APP_NAME_0">^1</xliff:g> aus dem Papierkorb wiederherstellen lassen?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Videos löschen?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> dieses Video löschen?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Fotos von <xliff:g id="APP_NAME_1">^1</xliff:g> aus dem Papierkorb wiederherstellen lassen?</item>
-      <item quantity="one">Dieses Foto von <xliff:g id="APP_NAME_0">^1</xliff:g> aus dem Papierkorb wiederherstellen lassen?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Fotos löschen?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> dieses Foto löschen?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Elemente von <xliff:g id="APP_NAME_1">^1</xliff:g> aus dem Papierkorb wiederherstellen lassen?</item>
-      <item quantity="one">Dieses Element von <xliff:g id="APP_NAME_0">^1</xliff:g> aus dem Papierkorb wiederherstellen lassen?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Darf <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> Elemente löschen?</item>
+      <item quantity="one">Darf <xliff:g id="APP_NAME_0">^1</xliff:g> dieses Element löschen?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Aus Papierkorb wiederherstellen"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Abbrechen"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Audiodateien von <xliff:g id="APP_NAME_1">^1</xliff:g> löschen lassen?</item>
-      <item quantity="one">Diese Audiodatei von <xliff:g id="APP_NAME_0">^1</xliff:g> löschen lassen?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Videos von <xliff:g id="APP_NAME_1">^1</xliff:g> löschen lassen?</item>
-      <item quantity="one">Dieses Video von <xliff:g id="APP_NAME_0">^1</xliff:g> löschen lassen?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Fotos von <xliff:g id="APP_NAME_1">^1</xliff:g> löschen lassen?</item>
-      <item quantity="one">Dieses Foto von <xliff:g id="APP_NAME_0">^1</xliff:g> löschen lassen?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> Elemente von <xliff:g id="APP_NAME_1">^1</xliff:g> löschen lassen?</item>
-      <item quantity="one">Dieses Element von <xliff:g id="APP_NAME_0">^1</xliff:g> löschen lassen?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Löschen"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Abbrechen"</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index c00e7c9..7045ca0 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Συνέχεια"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Να επιτρέπεται"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Να μην επιτρέπεται"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Συν <xliff:g id="COUNT_1">^1</xliff:g> επιπλέον στοιχεία</item>
       <item quantity="one">Συν <xliff:g id="COUNT_0">^1</xliff:g> επιπλέον στοιχείο</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η αλλαγή <xliff:g id="COUNT">^2</xliff:g> αρχείων ήχου;</item>
-      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η αλλαγή αυτού του αρχείου ήχου;</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Διαγραφή προσωρινών αρχείων εφαρμογών"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"Η εφαρμογή <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> θέλει να διαγράψει ορισμένα προσωρινά αρχεία. Αυτό μπορεί να οδηγήσει σε αυξημένη χρήση μπαταριών ή δεδομένων κινητής τηλεφωνίας."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Διαγραφή προσωρινών αρχείων εφαρμογών…"</string>
+    <string name="clear" msgid="5524638938415865915">"Διαγραφή"</string>
+    <string name="allow" msgid="8885707816848569619">"Να επιτρέπεται"</string>
+    <string name="deny" msgid="6040983710442068936">"Απόρριψη"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η τροποποίηση <xliff:g id="COUNT">^2</xliff:g> αρχείων ήχου;</item>
+      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η τροποποίηση αυτού του αρχείου ήχου;</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η αλλαγή <xliff:g id="COUNT">^2</xliff:g> βίντεο;</item>
-      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η αλλαγή αυτού βίντεο;</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η τροποποίηση <xliff:g id="COUNT">^2</xliff:g> βίντεο;</item>
+      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η τροποποίηση αυτού του βίντεο;</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η αλλαγή <xliff:g id="COUNT">^2</xliff:g> φωτογραφιών;</item>
-      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η αλλαγή αυτής της φωτογραφίας;</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η τροποποίηση <xliff:g id="COUNT">^2</xliff:g> φωτογραφιών;</item>
+      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η τροποποίηση αυτής της φωτογραφίας;</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η αλλαγή <xliff:g id="COUNT">^2</xliff:g> στοιχείων;</item>
-      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η αλλαγή αυτού του στοιχείου;</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η τροποποίηση <xliff:g id="COUNT">^2</xliff:g> στοιχείων;</item>
+      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η τροποποίηση αυτού του στοιχείου;</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Αλλαγή"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Ακύρωση"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η μετακίνηση <xliff:g id="COUNT">^2</xliff:g> αρχείων ήχου στον κάδο;</item>
       <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η μετακίνηση αυτού του αρχείου ήχου στον κάδο;</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Αυτά τα αρχεία ήχου θα διαγραφούν οριστικά μετά από <xliff:g id="DURATION_1">^3</xliff:g> ημέρες.</item>
-      <item quantity="one">Αυτό το αρχείο ήχου θα διαγραφεί οριστικά μετά από <xliff:g id="DURATION_0">^3</xliff:g> ημέρες.</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η μετακίνηση <xliff:g id="COUNT">^2</xliff:g> βίντεο στον κάδο;</item>
       <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η μετακίνηση αυτού του βίντεο στον κάδο;</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Αυτά τα βίντεο θα διαγραφούν οριστικά μετά από <xliff:g id="DURATION_1">^3</xliff:g> ημέρες.</item>
-      <item quantity="one">Αυτό το βίντεο θα διαγραφεί οριστικά μετά από <xliff:g id="DURATION_0">^3</xliff:g> ημέρες.</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η μετακίνηση <xliff:g id="COUNT">^2</xliff:g> φωτογραφιών στον κάδο;</item>
       <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η μετακίνηση αυτής της φωτογραφίας στον κάδο;</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Αυτές οι φωτογραφίες θα διαγραφούν οριστικά μετά από <xliff:g id="DURATION_1">^3</xliff:g> ημέρες.</item>
-      <item quantity="one">Αυτή η φωτογραφία θα διαγραφεί οριστικά μετά από <xliff:g id="DURATION_0">^3</xliff:g> ημέρες.</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η μετακίνηση <xliff:g id="COUNT">^2</xliff:g> στοιχείων στον κάδο;</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η μετακίνηση <xliff:g id="COUNT">^2</xliff:g> των στοιχείων στον κάδο;</item>
       <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η μετακίνηση αυτού του στοιχείου στον κάδο;</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Αυτά τα στοιχεία θα διαγραφούν οριστικά μετά από <xliff:g id="DURATION_1">^3</xliff:g> ημέρες.</item>
-      <item quantity="one">Αυτό το στοιχείο θα διαγραφεί οριστικά μετά από <xliff:g id="DURATION_0">^3</xliff:g> ημέρες.</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η μετακίνηση <xliff:g id="COUNT">^2</xliff:g> αρχείων ήχου από τον κάδο;</item>
+      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η μετακίνηση αυτού του αρχείου ήχου από τον κάδο;</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Μετακίνηση στον κάδο"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Ακύρωση"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η αφαίρεση <xliff:g id="COUNT">^2</xliff:g> αρχείων ήχου από τον κάδο;</item>
-      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η αφαίρεση αυτού του αρχείου ήχου από τον κάδο;</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η μετακίνηση <xliff:g id="COUNT">^2</xliff:g> βίντεο από τον κάδο;</item>
+      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η μετακίνηση αυτού του βίντεο από τον κάδο;</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η αφαίρεση <xliff:g id="COUNT">^2</xliff:g> βίντεο από τον κάδο;</item>
-      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η αφαίρεση αυτού του βίντεο από τον κάδο;</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η μετακίνηση <xliff:g id="COUNT">^2</xliff:g> φωτογραφιών από τον κάδο;</item>
+      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η μετακίνηση αυτής της φωτογραφίας από τον κάδο;</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η αφαίρεση <xliff:g id="COUNT">^2</xliff:g> φωτογραφιών από τον κάδο;</item>
-      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η αφαίρεση αυτής της φωτογραφίας από τον κάδο;</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η μετακίνηση <xliff:g id="COUNT">^2</xliff:g> στοιχείων από τον κάδο;</item>
+      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η μετακίνηση αυτού του στοιχείου από τον κάδο;</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η αφαίρεση <xliff:g id="COUNT">^2</xliff:g> στοιχείων από τον κάδο;</item>
-      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η αφαίρεση αυτού του στοιχείου από τον κάδο;</item>
-    </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Αφαίρεση από τον κάδο"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Ακύρωση"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η διαγραφή <xliff:g id="COUNT">^2</xliff:g> αρχείων ήχου;</item>
       <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η διαγραφή αυτού του αρχείου ήχου;</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η διαγραφή <xliff:g id="COUNT">^2</xliff:g> βίντεο;</item>
       <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η διαγραφή αυτού του βίντεο;</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η διαγραφή <xliff:g id="COUNT">^2</xliff:g> φωτογραφιών;</item>
-      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η διαγραφή αυτής της φωτογραφίας;</item>
+      <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η διαγραφή αυτής της φωτογραφίας:</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_1">^1</xliff:g> η διαγραφή <xliff:g id="COUNT">^2</xliff:g> στοιχείων;</item>
       <item quantity="one">Να επιτραπεί στην εφαρμογή <xliff:g id="APP_NAME_0">^1</xliff:g> η διαγραφή αυτού του στοιχείου;</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Διαγραφή"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Ακύρωση"</string>
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 5bf96c8..1205a7e 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continue"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Allow"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Deny"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Plus <xliff:g id="COUNT_1">^1</xliff:g> additional items</item>
       <item quantity="one">Plus <xliff:g id="COUNT_0">^1</xliff:g> additional item</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Clear app cache with <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> would like to clear some temporary files. Accepting may increase battery or data use."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Clear temporary app files"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> would like to clear some temporary files. This may result in an increased usage of battery or mobile data."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Clearing temporary app files…"</string>
+    <string name="clear" msgid="5524638938415865915">"Clear"</string>
     <string name="allow" msgid="8885707816848569619">"Allow"</string>
     <string name="deny" msgid="6040983710442068936">"Deny"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this audio file?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this audio file?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> videos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this video?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> videos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this video?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> photos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this photo?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> photos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this photo?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> items?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this item?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> items?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this item?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Change"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Cancel"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> audio files to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this audio file to the bin?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> audio files to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this audio file to bin?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">These audio files will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This audio file will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> videos to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this video to bin?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> videos to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this video to the bin?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> photos to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this photo to bin?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">These videos will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This video will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> items to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this item to bin?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> photos to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this photo to the bin?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> audio files out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this audio file out of bin?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">These photos will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This photo will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> videos out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this video out of bin?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> items to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this item to the bin?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> photos out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this photo out of bin?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">These items will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This item will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> items out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this item out of bin?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Move to bin"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Cancel"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> audio files out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this audio file out of the bin?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this audio file?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> videos out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this video out of the bin?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> videos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this video?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> photos out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this photo out of the bin?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> photos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this photo?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> items out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this item out of the bin?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> items?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this item?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Move out of bin"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Cancel"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this audio file?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> videos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this video?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> photos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this photo?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> items?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this item?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Delete"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Cancel"</string>
 </resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 5bf96c8..1205a7e 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continue"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Allow"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Deny"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Plus <xliff:g id="COUNT_1">^1</xliff:g> additional items</item>
       <item quantity="one">Plus <xliff:g id="COUNT_0">^1</xliff:g> additional item</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Clear app cache with <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> would like to clear some temporary files. Accepting may increase battery or data use."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Clear temporary app files"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> would like to clear some temporary files. This may result in an increased usage of battery or mobile data."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Clearing temporary app files…"</string>
+    <string name="clear" msgid="5524638938415865915">"Clear"</string>
     <string name="allow" msgid="8885707816848569619">"Allow"</string>
     <string name="deny" msgid="6040983710442068936">"Deny"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this audio file?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this audio file?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> videos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this video?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> videos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this video?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> photos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this photo?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> photos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this photo?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> items?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this item?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> items?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this item?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Change"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Cancel"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> audio files to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this audio file to the bin?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> audio files to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this audio file to bin?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">These audio files will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This audio file will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> videos to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this video to bin?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> videos to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this video to the bin?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> photos to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this photo to bin?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">These videos will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This video will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> items to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this item to bin?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> photos to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this photo to the bin?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> audio files out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this audio file out of bin?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">These photos will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This photo will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> videos out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this video out of bin?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> items to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this item to the bin?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> photos out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this photo out of bin?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">These items will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This item will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> items out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this item out of bin?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Move to bin"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Cancel"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> audio files out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this audio file out of the bin?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this audio file?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> videos out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this video out of the bin?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> videos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this video?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> photos out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this photo out of the bin?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> photos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this photo?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> items out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this item out of the bin?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> items?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this item?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Move out of bin"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Cancel"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this audio file?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> videos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this video?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> photos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this photo?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> items?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this item?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Delete"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Cancel"</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 5bf96c8..1205a7e 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continue"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Allow"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Deny"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Plus <xliff:g id="COUNT_1">^1</xliff:g> additional items</item>
       <item quantity="one">Plus <xliff:g id="COUNT_0">^1</xliff:g> additional item</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Clear app cache with <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> would like to clear some temporary files. Accepting may increase battery or data use."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Clear temporary app files"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> would like to clear some temporary files. This may result in an increased usage of battery or mobile data."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Clearing temporary app files…"</string>
+    <string name="clear" msgid="5524638938415865915">"Clear"</string>
     <string name="allow" msgid="8885707816848569619">"Allow"</string>
     <string name="deny" msgid="6040983710442068936">"Deny"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this audio file?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this audio file?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> videos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this video?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> videos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this video?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> photos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this photo?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> photos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this photo?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> items?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this item?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> items?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this item?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Change"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Cancel"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> audio files to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this audio file to the bin?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> audio files to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this audio file to bin?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">These audio files will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This audio file will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> videos to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this video to bin?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> videos to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this video to the bin?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> photos to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this photo to bin?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">These videos will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This video will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> items to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this item to bin?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> photos to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this photo to the bin?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> audio files out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this audio file out of bin?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">These photos will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This photo will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> videos out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this video out of bin?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> items to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this item to the bin?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> photos out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this photo out of bin?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">These items will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This item will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> items out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this item out of bin?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Move to bin"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Cancel"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> audio files out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this audio file out of the bin?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this audio file?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> videos out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this video out of the bin?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> videos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this video?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> photos out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this photo out of the bin?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> photos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this photo?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> items out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this item out of the bin?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> items?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this item?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Move out of bin"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Cancel"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this audio file?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> videos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this video?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> photos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this photo?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> items?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this item?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Delete"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Cancel"</string>
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 5bf96c8..1205a7e 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continue"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Allow"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Deny"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Plus <xliff:g id="COUNT_1">^1</xliff:g> additional items</item>
       <item quantity="one">Plus <xliff:g id="COUNT_0">^1</xliff:g> additional item</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Clear app cache with <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> would like to clear some temporary files. Accepting may increase battery or data use."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Clear temporary app files"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> would like to clear some temporary files. This may result in an increased usage of battery or mobile data."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Clearing temporary app files…"</string>
+    <string name="clear" msgid="5524638938415865915">"Clear"</string>
     <string name="allow" msgid="8885707816848569619">"Allow"</string>
     <string name="deny" msgid="6040983710442068936">"Deny"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this audio file?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this audio file?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> videos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this video?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> videos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this video?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> photos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this photo?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> photos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this photo?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> items?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> change this item?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> items?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to modify this item?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Change"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Cancel"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> audio files to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this audio file to the bin?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> audio files to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this audio file to bin?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">These audio files will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This audio file will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> videos to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this video to bin?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> videos to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this video to the bin?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> photos to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this photo to bin?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">These videos will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This video will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> items to bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this item to bin?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> photos to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this photo to the bin?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> audio files out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this audio file out of bin?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">These photos will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This photo will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> videos out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this video out of bin?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> items to the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this item to the bin?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> photos out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this photo out of bin?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">These items will be permanently deleted after <xliff:g id="DURATION_1">^3</xliff:g> days</item>
-      <item quantity="one">This item will be permanently deleted after <xliff:g id="DURATION_0">^3</xliff:g> days</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> items out of bin?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to move this item out of bin?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Move to bin"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Cancel"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> audio files out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this audio file out of the bin?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this audio file?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> videos out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this video out of the bin?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> videos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this video?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> photos out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this photo out of the bin?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> photos?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this photo?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> items out of the bin?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> move this item out of the bin?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> items?</item>
+      <item quantity="one">Allow <xliff:g id="APP_NAME_0">^1</xliff:g> to delete this item?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Move out of bin"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Cancel"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this audio file?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> videos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this video?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> photos?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this photo?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> items?</item>
-      <item quantity="one">Let <xliff:g id="APP_NAME_0">^1</xliff:g> delete this item?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Delete"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Cancel"</string>
 </resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index bd973e9..18ba860 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‏‎‎‏‏‎‏‏‎‎‎‏‎‎‎‏‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‎‎‎‎‏‏‎‎‎‎‎‎‏‏‎Continue‎‏‎‎‏‎"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‎‎‏‏‎‏‎‏‏‏‎‎‏‎‏‎‏‏‎‎‏‎‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‎‎‏‎‎‏‏‏‏‏‏‏‏‏‎Allow‎‏‎‎‏‎"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‏‎‏‎‎‏‎‏‏‎‎‏‎‎‎‏‎‏‎‎‏‏‎‎‏‏‏‎‏‎‎‎‎‎‎‎‏‏‎‏‎‎‏‏‏‎‎‎‏‏‏‏‎‏‎Deny‎‏‎‎‏‎"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‎‎‏‏‏‏‎‎‏‏‎‎‏‏‎‎‏‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‏‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‎‏‏‎+‎‏‎‎‏‏‎<xliff:g id="COUNT_1">^1</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‎‎‏‏‏‏‎‎‏‏‎‎‏‏‎‎‏‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‏‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‎‏‏‎+‎‏‎‎‏‏‎<xliff:g id="COUNT_0">^1</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎‏‎‎‏‏‎‎‎‎‎‏‏‏‎‏‎‎‎‎‎‏‏‏‎‎‏‎‎‏‏‎‎‎‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‎‎‎Plus ‎‏‎‎‏‏‎<xliff:g id="COUNT_1">^1</xliff:g>‎‏‎‎‏‏‏‎ additional items‎‏‎‎‏‎</item>
       <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎‏‎‎‏‏‎‎‎‎‎‏‏‏‎‏‎‎‎‎‎‏‏‏‎‎‏‎‎‏‏‎‎‎‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‎‎‎Plus ‎‏‎‎‏‏‎<xliff:g id="COUNT_0">^1</xliff:g>‎‏‎‎‏‏‏‎ additional item‎‏‎‎‏‎</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‎‎‎‎‏‏‎‎‎‎‎‏‏‎‎‏‏‎‏‏‏‎‎‎‏‏‏‎‎‎‎‎‏‏‎‎‎‏‎‎‏‎‏‏‎Clear app cache with ‎‏‎‎‏‏‎<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>‎‏‎‎‏‏‏‎?‎‏‎‎‏‎"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‏‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‎‎‎‎‎‎‎‏‏‎‎‏‏‎‎‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‏‏‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>‎‏‎‎‏‏‏‎ would like to clear some temporary files. Accepting may increase battery or data use.‎‏‎‎‏‎"</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‎‎‏‏‎‎‏‎‎‎‏‏‏‎‏‎‏‎‎‏‎‏‏‎‏‏‏‎‏‏‏‏‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‎‎Clear temporary app files‎‏‎‎‏‎"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‎‎‏‎‎‏‏‎‏‏‏‎‏‏‎‏‎‏‏‏‎‏‎‎‎‎‏‏‏‎‏‎‏‎‎‎‏‏‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>‎‏‎‎‏‏‏‎ would like to clear some temporary files. This may result in an increased usage of battery or cellular data.‎‏‎‎‏‎"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎‎‏‏‏‎‎‏‎‎‏‎‏‎‎‎‏‎‎‎‎‏‎‏‏‎‎‏‎‏‎‏‎‏‎‎‎‎‎‎‏‎‏‎‎‎‏‎Clearing temporary app files…‎‏‎‎‏‎"</string>
+    <string name="clear" msgid="5524638938415865915">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‏‎‏‎‏‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‏‎‏‎‎‎‎‎‎‎‏‏‏‎‏‏‎Clear‎‏‎‎‏‎"</string>
     <string name="allow" msgid="8885707816848569619">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‎‎‏‏‎‎‎‎‎‎‎‏‎‏‏‏‎‎‏‎‏‎‎‎‏‎‎‏‎‏‎‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎Allow‎‏‎‎‏‎"</string>
     <string name="deny" msgid="6040983710442068936">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‏‏‎‎‎‏‎‏‎‏‎‏‏‎‏‏‎‎‏‏‎‏‎‏‏‎‏‎‎‏‎‎‎‎‏‏‎‏‏‏‏‎‎‏‎‎‎‎Deny‎‏‎‎‏‎"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‎‎‎‎‎‏‎‎‏‏‎‏‎‎‎‎‎‎‎‎‏‏‎‎‎‏‏‎‏‎‏‏‎‏‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‏‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ change ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ audio files?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‎‎‎‎‎‏‎‎‏‏‎‏‎‎‎‎‎‎‎‎‏‏‎‎‎‏‏‎‏‎‏‏‎‏‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‏‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ change this audio file?‎‏‎‎‏‎</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‏‎‎‏‎‏‏‎‎‏‏‏‎‏‏‎‎‏‎‏‎‏‎‏‎‎‎‏‏‎‏‎‏‎‏‎‏‏‏‎‏‎‎‎‎‏‏‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to modify ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ audio files?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‏‎‎‏‎‏‏‎‎‏‏‏‎‏‏‎‎‏‎‏‎‏‎‏‎‎‎‏‏‎‏‎‏‎‏‎‏‏‏‎‏‎‎‎‎‏‏‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to modify this audio file?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‏‎‎‎‎‎‎‏‎‎‏‎‏‏‎‎‏‏‎‏‏‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‎‏‏‏‎‏‎‎‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ change ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ videos?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‏‎‎‎‎‎‎‏‎‎‏‎‏‏‎‎‏‏‎‏‏‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‎‏‏‏‎‏‎‎‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ change this video?‎‏‎‎‏‎</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‎‎‏‏‏‏‎‏‎‎‏‎‏‎‏‏‏‏‎‎‎‎‏‏‏‎‎‏‏‏‏‎‏‎‎‎‏‏‎‎‎‎‏‎‏‏‎‏‏‏‏‏‏‏‎‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to modify ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ videos?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‎‎‏‏‏‏‎‏‎‎‏‎‏‎‏‏‏‏‎‎‎‎‏‏‏‎‎‏‏‏‏‎‏‎‎‎‏‏‎‎‎‎‏‎‏‏‎‏‏‏‏‏‏‏‎‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to modify this video?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‎‎‏‏‎‎‏‎‏‏‎‎‏‏‎‏‏‏‎‏‎‏‎‏‎‎‏‏‏‏‎‎‏‏‎‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ change ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ photos?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‎‎‏‏‎‎‏‎‏‏‎‎‏‏‎‏‏‏‎‏‎‏‎‏‎‎‏‏‏‏‎‎‏‏‎‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ change this photo?‎‏‎‎‏‎</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‏‎‎‏‏‏‏‏‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to modify ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ photos?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‏‎‎‏‏‏‏‏‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to modify this photo?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‎‎‎‎‏‏‏‎‏‏‏‏‎‎‎‏‎‏‎‎‏‏‎‎‏‎‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‎‏‎‎‏‎‏‏‏‏‎‏‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ change ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ items?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‎‎‎‎‏‏‏‎‏‏‏‏‎‎‎‏‎‏‎‎‏‏‎‎‏‎‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‎‏‎‎‏‎‏‏‏‏‎‏‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ change this item?‎‏‎‎‏‎</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎‎‎‎‏‎‎‎‎‏‏‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‏‎‎‎‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to modify ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ items?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎‎‎‎‏‎‎‎‎‏‏‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‏‎‎‎‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to modify this item?‎‏‎‎‏‎</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‏‎‎‎‏‏‎‏‎‏‎‎‏‎‏‎‏‎‏‏‏‏‏‏‏‎‎‏‎‎Change‎‏‎‎‏‎"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‎‎‏‎‏‎‎‎‎‎‎‎‎‏‏‎‏‎‎‎‎‎‎‎‎‏‎‎‏‏‎‎‎‎‎‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‏‎Cancel‎‏‎‎‏‎"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‎‎‎‏‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‎‏‏‏‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ audio files to trash?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‎‎‎‏‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‎‏‏‏‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ move this audio file to trash?‎‏‎‎‏‎</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‎‎‏‎‎‏‏‎‎‎‎‎‏‏‏‎‎‏‏‎‎‎‎‏‎‎‎‏‎‎‎‎‏‏‏‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ audio files to trash?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‎‎‏‎‎‏‏‎‎‎‎‎‏‏‏‎‎‏‏‎‎‎‎‏‎‎‎‏‎‎‎‎‏‏‏‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to move this audio file to trash?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‏‎‏‏‎‏‏‎‏‎‏‏‏‏‎‎‎‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‏‎‏‎‎‎‏‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‎These audio files will be permanently deleted after ‎‏‎‎‏‏‎<xliff:g id="DURATION_1">^3</xliff:g>‎‏‎‎‏‏‏‎ days‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‏‎‏‏‎‏‏‎‏‎‏‏‏‏‎‎‎‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‏‎‏‎‎‎‏‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‎This audio file will be permanently deleted after ‎‏‎‎‏‏‎<xliff:g id="DURATION_0">^3</xliff:g>‎‏‎‎‏‏‏‎ days‎‏‎‎‏‎</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‎‏‎‏‎‏‏‏‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ videos to trash?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‎‏‎‏‎‏‏‏‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to move this video to trash?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‎‎‎‏‎‏‏‎‏‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‎‏‎‏‏‏‏‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‎‎‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ videos to trash?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‎‎‎‏‎‏‏‎‏‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‎‏‎‏‏‏‏‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‎‎‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ move this video to trash?‎‏‎‎‏‎</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎‏‏‎‎‎‎‎‏‏‎‏‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‎‎‏‏‎‏‏‎‎‏‎‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ photos to trash?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎‏‏‎‎‎‎‎‏‏‎‏‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‎‎‏‏‎‏‏‎‎‏‎‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to move this photo to trash?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‎‎‏‎‏‎‎‎‏‏‏‎‎‏‎‏‏‏‏‏‏‎‎‎‎‏‏‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‎‎‏‎‎These videos will be permanently deleted after ‎‏‎‎‏‏‎<xliff:g id="DURATION_1">^3</xliff:g>‎‏‎‎‏‏‏‎ days‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‎‎‏‎‏‎‎‎‏‏‏‎‎‏‎‏‏‏‏‏‏‎‎‎‎‏‏‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‎‎‏‎‎This video will be permanently deleted after ‎‏‎‎‏‏‎<xliff:g id="DURATION_0">^3</xliff:g>‎‏‎‎‏‏‏‎ days‎‏‎‎‏‎</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‎‎‎‎‎‏‎‏‎‎‏‏‏‎‏‎‎‏‎‏‏‏‏‎‏‏‏‎‏‎‏‏‏‎‏‏‏‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ items to trash?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‎‎‎‎‎‏‎‏‎‎‏‏‏‎‏‎‎‏‎‏‏‏‏‎‏‏‏‎‏‎‏‏‏‎‏‏‏‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to move this item to trash?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‏‏‎‏‎‎‎‏‎‏‏‏‎‏‏‏‏‏‎‎‏‎‏‏‎‏‎‎‏‎‎‎‎‎‎‏‏‎‏‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ photos to trash?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‏‏‎‏‎‎‎‏‎‏‏‏‎‏‏‏‏‏‎‎‏‎‏‏‎‏‎‎‏‎‎‎‎‎‎‏‏‎‏‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ move this photo to trash?‎‏‎‎‏‎</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‏‎‎‏‎‏‏‎‎‏‎‎‎‏‏‎‏‏‏‎‎‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‎‎‎‎‏‎‏‏‎‎‎‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ audio files out of trash?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‏‎‎‏‎‏‏‎‎‏‎‎‎‏‏‎‏‏‏‎‎‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‎‎‎‎‏‎‏‏‎‎‎‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to move this audio file out of trash?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‏‎‎‎‎‏‎‏‎‏‎These photos will be permanently deleted after ‎‏‎‎‏‏‎<xliff:g id="DURATION_1">^3</xliff:g>‎‏‎‎‏‏‏‎ days‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‏‎‎‎‎‏‎‏‎‏‎This photo will be permanently deleted after ‎‏‎‎‏‏‎<xliff:g id="DURATION_0">^3</xliff:g>‎‏‎‎‏‏‏‎ days‎‏‎‎‏‎</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‎‎‎‏‏‎‎‏‎‎‏‎‏‎‏‎‏‎‏‏‎‎‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ videos out of trash?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‎‎‎‏‏‎‎‏‎‎‏‎‏‎‏‎‏‎‏‏‎‎‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to move this video out of trash?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‏‏‎‏‎‏‏‏‎‏‏‏‎‎‎‏‎‎‎‎‏‏‎‎‎‏‏‎‏‎‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ items to trash?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‏‏‎‏‎‏‏‏‎‏‏‏‎‎‎‏‎‎‎‎‏‏‎‎‎‏‏‎‏‎‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ move this item to trash?‎‏‎‎‏‎</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‏‏‎‏‎‏‎‎‎‎‎‏‏‏‎‏‏‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‎‎‏‏‏‎‏‏‏‏‎‎‏‏‎‏‏‎‎‎‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ photos out of trash?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‏‏‎‏‎‏‎‎‎‎‎‏‏‏‎‏‏‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‎‎‏‏‏‎‏‏‏‏‎‎‏‏‎‏‏‎‎‎‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to move this photo out of trash?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‎‎‎‏‏‎‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‏‎‎‎‏‎‎‏‏‏‎‎‏‏‎‏‎‎‎‏‎‎‎‎‏‎‎These items will be permanently deleted after ‎‏‎‎‏‏‎<xliff:g id="DURATION_1">^3</xliff:g>‎‏‎‎‏‏‏‎ days‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‎‎‎‏‏‎‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‏‎‎‎‏‎‎‏‏‏‎‎‏‏‎‏‎‎‎‏‎‎‎‎‏‎‎This item will be permanently deleted after ‎‏‎‎‏‏‎<xliff:g id="DURATION_0">^3</xliff:g>‎‏‎‎‏‏‏‎ days‎‏‎‎‏‎</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‎‏‏‎‏‎‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‎‎‏‎‏‎‎‏‎‏‎‎‏‎‏‏‎‏‎‎‏‏‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ items out of trash?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‎‏‏‎‏‎‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‎‎‏‎‏‎‎‏‎‏‎‎‏‎‏‏‎‏‎‎‏‏‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to move this item out of trash?‎‏‎‎‏‎</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‎‎‎‏‎‏‏‎‎‎‏‎‎‎‎‎‏‏‏‏‎‏‎‏‎‏‎‎‏‎‏‎‎‏‏‎‎‏‎‎Move to trash‎‏‎‎‏‎"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‏‏‎‎‎‏‏‎‏‏‏‎‏‎‎‎‏‎‎‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‎‏‏‏‎‎‏‎‎‎‎‏‏‎‎‏‎‏‏‎Cancel‎‏‎‎‏‎"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎‏‎‏‎‎‏‎‏‎‏‎‎‎‏‏‎‏‏‏‎‎‏‎‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎‎‏‎‎‏‏‎‏‏‎‎‏‎‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ audio files out of trash?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎‏‎‏‎‎‏‎‏‎‏‎‎‎‏‏‎‏‏‏‎‎‏‎‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎‎‏‎‎‏‏‎‏‏‎‎‏‎‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ move this audio file out of trash?‎‏‎‎‏‎</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‎‏‎‏‎‏‏‏‎‏‏‎‏‏‏‎‎‎‏‏‎‏‎‏‏‏‎‏‎‏‏‏‎‎‏‎‏‏‎‏‏‎‏‏‎‏‏‎‎‏‏‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to delete ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ audio files?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‎‏‎‏‎‏‏‏‎‏‏‎‏‏‏‎‎‎‏‏‎‏‎‏‏‏‎‏‎‏‏‏‎‎‏‎‏‏‎‏‏‎‏‏‎‏‏‎‎‏‏‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to delete this audio file?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‎‏‎‏‎‎‏‏‎‎‎‏‎‎‏‎‏‎‎‎‏‏‎‎‏‎‏‎‎‎‎‎‏‎‎‏‎‏‏‏‏‏‏‎‏‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ videos out of trash?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‎‏‎‏‎‎‏‏‎‎‎‏‎‎‏‎‏‎‎‎‏‏‎‎‏‎‏‎‎‎‎‎‏‎‎‏‎‏‏‏‏‏‏‎‏‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ move this video out of trash?‎‏‎‎‏‎</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‎‎‏‏‏‏‎‎‎‎‎‏‏‏‎‏‏‎‎‎‎‎‏‎‎‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to delete ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ videos?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‎‎‏‏‏‏‎‎‎‎‎‏‏‏‎‏‏‎‎‎‎‎‏‎‎‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to delete this video?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‎‏‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‎‎‏‏‎‎‏‏‏‏‏‎‎‎‏‏‏‎‏‏‎‏‏‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ photos out of trash?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‎‏‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‎‎‏‏‎‎‏‏‏‏‏‎‎‎‏‏‏‎‏‏‎‏‏‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ move this photo out of trash?‎‏‎‎‏‎</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‎‏‎‏‏‎‎‏‎‎‎‎‎‏‏‏‎‏‏‏‏‎‎‎‏‏‏‏‎‎‎‏‏‏‏‎‏‏‏‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to delete ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ photos?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‎‏‎‏‏‎‎‏‎‎‎‎‎‏‏‏‎‏‏‏‏‎‎‎‏‏‏‏‎‎‎‏‏‏‏‎‏‏‏‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to delete this photo?‎‏‎‎‏‎</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‎‏‎‏‎‏‎‎‎‏‏‎‎‎‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ move ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ items out of trash?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‎‏‎‏‎‏‎‎‎‏‏‎‎‎‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ move this item out of trash?‎‏‎‎‏‎</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‏‎‎‏‎‎‏‏‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ to delete ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ items?‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‏‎‎‏‎‎‏‏‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ to delete this item?‎‏‎‎‏‎</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‎‎‏‎‎‎‏‏‏‎‏‎‎‏‏‏‏‏‎‎‏‏‎‏‎‏‎‏‎‎‏‎‏‏‏‎‏‏‎‎‎‎‎‎‏‏‏‎‎Move out of trash‎‏‎‎‏‎"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‏‎‎‏‎‏‎‏‎‎‎‏‎‎‏‎‎‎‎‏‏‎‏‏‎‏‏‎‎‎‎‎‏‏‏‏‏‎‏‎‏‎‏‏‏‏‎‏‎‎‎Cancel‎‏‎‎‏‎"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‏‏‏‎‏‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‏‏‎‎‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ delete ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ audio files?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‏‏‏‎‏‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‏‏‎‎‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ delete this audio file?‎‏‎‎‏‎</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‏‎‏‏‎‏‎‎‎‏‏‎‎‏‎‏‎‎‎‏‏‏‎‏‏‏‏‎‎‎‎‎‎‏‎‎‏‎‏‏‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ delete ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ videos?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‏‎‏‏‎‏‎‎‎‏‏‎‎‏‎‏‎‎‎‏‏‏‎‏‏‏‏‎‎‎‎‎‎‏‎‎‏‎‏‏‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ delete this video?‎‏‎‎‏‎</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‏‎‏‎‏‎‏‎‎‎‎‏‎‎‎‏‎‎‏‏‎‏‎‎‏‏‏‎‎‎‏‎‎‎‎‎‏‎‏‎‎‎‎‏‏‏‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ delete ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ photos?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‏‎‏‎‏‎‏‎‎‎‎‏‎‎‎‏‎‎‏‏‎‏‎‎‏‏‏‎‎‎‏‎‎‎‎‎‏‎‏‎‎‎‎‏‏‏‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ delete this photo?‎‏‎‎‏‎</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‏‎‎‎‏‎‏‎‎‎‏‏‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‎‏‎‎‏‎‏‏‏‏‎‎‎‏‎‏‎‏‎‏‎‎‎‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">^1</xliff:g>‎‏‎‎‏‏‏‎ delete ‎‏‎‎‏‏‎<xliff:g id="COUNT">^2</xliff:g>‎‏‎‎‏‏‏‎ items?‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‏‎‎‎‏‎‏‎‎‎‏‏‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‎‏‎‎‏‎‏‏‏‏‎‎‎‏‎‏‎‏‎‏‎‎‎‏‎‎Let ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">^1</xliff:g>‎‏‎‎‏‏‏‎ delete this item?‎‏‎‎‏‎</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‎‎‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‏‎‎‏‎‎‏‏‎‎Delete‎‏‎‎‏‎"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‏‎‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‎‏‎‎‏‎‏‏‎‏‎‎‎‎‎Cancel‎‏‎‎‏‎"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 71d8652..e2ffe99 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continuar"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Permitir"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Denegar"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other"><xliff:g id="COUNT_1">^1</xliff:g> más</item>
+      <item quantity="one"><xliff:g id="COUNT_0">^1</xliff:g> más</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other"><xliff:g id="COUNT_1">^1</xliff:g> elementos adicionales</item>
       <item quantity="one"><xliff:g id="COUNT_0">^1</xliff:g> elemento adicional</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> cambie <xliff:g id="COUNT">^2</xliff:g> archivos de audio?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> cambie este archivo de audio?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Borra archivos temporales de apps"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> quiere borrar algunos archivos temporales, lo que podría ocasionar un mayor uso de la batería o los datos móviles."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Borrando archivos temporales de apps…"</string>
+    <string name="clear" msgid="5524638938415865915">"Borrar"</string>
+    <string name="allow" msgid="8885707816848569619">"Permitir"</string>
+    <string name="deny" msgid="6040983710442068936">"Rechazar"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> archivos de audio?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> modifique este archivo de audio?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> cambie <xliff:g id="COUNT">^2</xliff:g> videos?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> cambie este video?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> videos?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> modifique este video?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> cambie <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> cambie esta foto?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> modifique esta foto?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> cambie <xliff:g id="COUNT">^2</xliff:g> elementos?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> cambie este elemento?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> elementos?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> modifique este elemento?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Cambiar"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Cancelar"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> archivos de audio a la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva este archivo de audio a la papelera?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> archivos de audio a la papelera?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva este archivo de audio a la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Se borrarán estos archivos de audio de forma permanente después de <xliff:g id="DURATION_1">^3</xliff:g> días</item>
-      <item quantity="one">Se borrará este archivo de audio de forma permanente después de <xliff:g id="DURATION_0">^3</xliff:g> días</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> videos a la papelera?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva este video a la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> videos a la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva este video a la papelera?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> fotos a la papelera?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva esta foto a la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Se borrarán de forma permanente estos videos después de <xliff:g id="DURATION_1">^3</xliff:g> días</item>
-      <item quantity="one">Se borrará de forma permanente este video después de <xliff:g id="DURATION_0">^3</xliff:g> días</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">¿Deseas permitir <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> elementos a la papelera?</item>
+      <item quantity="one">¿Deseas permitir <xliff:g id="APP_NAME_0">^1</xliff:g> mueva este elemento a la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> fotos a la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva esta foto a la papelera?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> archivos de audio de la papelera?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite este archivo de audio de la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Se borrarán de forma permanente estas fotos después de <xliff:g id="DURATION_1">^3</xliff:g> días</item>
-      <item quantity="one">Se borrará de forma permanente esta foto después de <xliff:g id="DURATION_0">^3</xliff:g> días</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> videos de la papelera?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite este video de la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> elementos a la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva este elemento a la papelera?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> fotos de la papelera?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite esta foto de la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Se borrarán de forma permanente estos elementos después de <xliff:g id="DURATION_1">^3</xliff:g> días</item>
-      <item quantity="one">Se borrará de forma permanente este elemento después de <xliff:g id="DURATION_0">^3</xliff:g> días</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> elementos de la papelera?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite este elemento de la papelera?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Mover a la papelera"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Cancelar"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> archivos de audio de la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite este archivo de audio de la papelera?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> borre <xliff:g id="COUNT">^2</xliff:g> archivos de audio?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> borre este archivo de audio?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> videos de la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite este video de la papelera?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> borre <xliff:g id="COUNT">^2</xliff:g> videos?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> borre este video?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> fotos de la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite esta foto de la papelera?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> borre <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> borre esta foto?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> elementos de la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite este elemento de la papelera?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">¿Deseas permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> borre <xliff:g id="COUNT">^2</xliff:g> elementos?</item>
+      <item quantity="one">¿Deseas permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> borre este elemento?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Quitar de la papelera"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Cancelar"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> borre <xliff:g id="COUNT">^2</xliff:g> archivos de audio?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> borre este archivo de audio?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> borre <xliff:g id="COUNT">^2</xliff:g> videos?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> borre este video?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> borre <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> borre esta foto?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> borre <xliff:g id="COUNT">^2</xliff:g> elementos?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> borre este elemento?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Borrar"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Cancelar"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index b559c23..7d0ee18 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continuar"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Permitir"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Denegar"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Y <xliff:g id="COUNT_1">^1</xliff:g> elementos más</item>
       <item quantity="one">Y <xliff:g id="COUNT_0">^1</xliff:g> elemento más</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> cambie <xliff:g id="COUNT">^2</xliff:g> archivos de audio?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> cambie este archivo de audio?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Borrar archivos de aplicaciones temporales"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> quiere borrar algunos archivos temporales. Esta acción puede aumentar el uso de la batería o los datos móviles."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Borrando archivos temporales de aplicaciones…"</string>
+    <string name="clear" msgid="5524638938415865915">"Borrar"</string>
+    <string name="allow" msgid="8885707816848569619">"Permitir"</string>
+    <string name="deny" msgid="6040983710442068936">"Denegar"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> archivos de audio?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> modifique este archivo de audio?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> cambie <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> cambie este vídeo?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> modifique este vídeo?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> cambie <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> cambie esta foto?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> modifique esta foto?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> cambie <xliff:g id="COUNT">^2</xliff:g> elementos?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> cambie este elemento?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> elementos?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> modifique este elemento?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Cambiar"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Cancelar"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> archivos de audio a la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva este archivo de audio a la papelera?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> archivos de audio a la papelera?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva este archivo de audio a la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Estos archivos de audio se eliminarán definitivamente dentro de <xliff:g id="DURATION_1">^3</xliff:g> días</item>
-      <item quantity="one">Este archivo de audio se eliminará definitivamente dentro de <xliff:g id="DURATION_0">^3</xliff:g> días</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> vídeos a la papelera?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva este vídeo a la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> vídeos a la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva este vídeo a la papelera?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> fotos a la papelera?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva esta foto a la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Estos vídeos se eliminarán definitivamente dentro de <xliff:g id="DURATION_1">^3</xliff:g> días</item>
-      <item quantity="one">Este vídeo se eliminará definitivamente dentro de <xliff:g id="DURATION_0">^3</xliff:g> días</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> elementos a la papelera?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva este elemento a la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> fotos a la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva esta foto a la papelera?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> archivos de audio de la papelera?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite este archivo de audio de la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Estas fotos se eliminarán definitivamente dentro de <xliff:g id="DURATION_1">^3</xliff:g> días</item>
-      <item quantity="one">Esta foto se eliminará definitivamente dentro de <xliff:g id="DURATION_0">^3</xliff:g> días</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> vídeos de la papelera?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite este vídeo de la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mueva <xliff:g id="COUNT">^2</xliff:g> elementos a la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mueva este elemento a la papelera?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> fotos de la papelera?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite esta foto de la papelera?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Estos elementos se eliminarán definitivamente dentro de <xliff:g id="DURATION_1">^3</xliff:g> días</item>
-      <item quantity="one">Este elemento se eliminará definitivamente dentro de <xliff:g id="DURATION_0">^3</xliff:g> días</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> elementos de la papelera?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite este elemento de la papelera?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Mover a la papelera"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Cancelar"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> archivos de audio de la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite este archivo de audio de la papelera?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> archivos de audio?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este archivo de audio?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> vídeos de la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite este vídeo de la papelera?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este vídeo?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> fotos de la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite esta foto de la papelera?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> elimine esta foto?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> quite <xliff:g id="COUNT">^2</xliff:g> elementos de la papelera?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> quite este elemento de la papelera?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">¿Permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> elementos?</item>
+      <item quantity="one">¿Permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este elemento?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Quitar de la papelera"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Cancelar"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> archivos de audio?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este archivo de audio?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este vídeo?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> elimine esta foto?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">¿Quieres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> elementos?</item>
-      <item quantity="one">¿Quieres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este elemento?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Eliminar"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Cancelar"</string>
 </resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 4c1921e..1dbfc5c 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Jätka"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Luba"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Keela"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Veel <xliff:g id="COUNT_1">^1</xliff:g> lisaüksust</item>
       <item quantity="one">Veel <xliff:g id="COUNT_0">^1</xliff:g> lisaüksus</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Rakenduse ajutiste failide kustutamine"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> soovib kustutada mõned ajutised failid. See võib aku või mobiilse andmeside kasutust suurendada."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Rakenduse ajutiste failide kustutamine …"</string>
+    <string name="clear" msgid="5524638938415865915">"Kustuta"</string>
+    <string name="allow" msgid="8885707816848569619">"Luba"</string>
+    <string name="deny" msgid="6040983710442068936">"Keela"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> helifaili muuta?</item>
       <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> seda helifaili muuta?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> videot muuta?</item>
       <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> seda videot muuta?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> fotot muuta?</item>
       <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> seda fotot muuta?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> üksust muuta?</item>
       <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> seda üksust muuta?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Muuda"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Tühista"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> helifaili prügikasti teisaldada?</item>
       <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> see helifail prügikasti teisaldada?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Need helifailid kustutatakse jäädavalt <xliff:g id="DURATION_1">^3</xliff:g> päeva pärast</item>
-      <item quantity="one">See helifail kustutatakse jäädavalt <xliff:g id="DURATION_0">^3</xliff:g> päeva pärast</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> videot prügikasti teisaldada?</item>
       <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> see video prügikasti teisaldada?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Need videod kustutatakse jäädavalt <xliff:g id="DURATION_1">^3</xliff:g> päeva pärast</item>
-      <item quantity="one">See video kustutatakse jäädavalt <xliff:g id="DURATION_0">^3</xliff:g> päeva pärast</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> fotot prügikasti teisaldada?</item>
       <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> see foto prügikasti teisaldada?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Need fotod kustutatakse jäädavalt <xliff:g id="DURATION_1">^3</xliff:g> päeva pärast</item>
-      <item quantity="one">See foto kustutatakse jäädavalt <xliff:g id="DURATION_0">^3</xliff:g> päeva pärast</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> üksust prügikasti teisaldada?</item>
       <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> see üksus prügikasti teisaldada?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Need üksused kustutatakse jäädavalt <xliff:g id="DURATION_1">^3</xliff:g> päeva pärast</item>
-      <item quantity="one">See üksus kustutatakse jäädavalt <xliff:g id="DURATION_0">^3</xliff:g> päeva pärast</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Teisalda prügikasti"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Tühista"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> helifaili prügikastist taastada?</item>
-      <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> see helifail prügikastist taastada?</item>
+      <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> selle helifaili prügikastist taastada?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> videot prügikastist taastada?</item>
-      <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> see video prügikastist taastada?</item>
+      <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> selle video prügikastist taastada?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> fotot prügikastist taastada?</item>
-      <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> see foto prügikastist taastada?</item>
+      <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> selle foto prügikastist taastada?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> üksust prügikastist taastada?</item>
-      <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> see üksus prügikastist taastada?</item>
+      <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> selle üksuse prügikastist taastada?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Taasta prügikastist"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Tühista"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> helifaili kustutada?</item>
-      <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> see helifail kustutada?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Kas soovite lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> kustutada <xliff:g id="COUNT">^2</xliff:g> helifaili?</item>
+      <item quantity="one">Kas soovite lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> selle helifaili kustutada?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> videot kustutada?</item>
-      <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> see video kustutada?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Kas soovite lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> kustutada <xliff:g id="COUNT">^2</xliff:g> videot?</item>
+      <item quantity="one">Kas soovite lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> selle video kustutada?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> fotot kustutada?</item>
-      <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> see foto kustutada?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Kas soovite lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> kustutada <xliff:g id="COUNT">^2</xliff:g> fotot?</item>
+      <item quantity="one">Kas soovite lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> selle foto kustutada?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Kas lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> üksust kustutada?</item>
-      <item quantity="one">Kas lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> see üksus kustutada?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Kas soovite lubada rakendusel <xliff:g id="APP_NAME_1">^1</xliff:g> kustutada <xliff:g id="COUNT">^2</xliff:g> üksust?</item>
+      <item quantity="one">Kas soovite lubada rakendusel <xliff:g id="APP_NAME_0">^1</xliff:g> selle üksuse kustutada?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Kustuta"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Tühista"</string>
 </resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 5f08bcd..982a7c8 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Egin aurrera"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Baimendu"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Ukatu"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Eta beste <xliff:g id="COUNT_1">^1</xliff:g> elementu</item>
       <item quantity="one">Eta beste <xliff:g id="COUNT_0">^1</xliff:g> elementu</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> audio-fitxategi aldatzen utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Audio-fitxategi hau aldatzen utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Garbitu aplikazioen aldi baterako fitxategiak"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> aplikazioak aldi baterako fitxategi batzuk ezabatu nahi ditu. Ondorioz, baliteke bateria edo datu-konexioko datu gehiago erabiltzea."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Aplikazioaren aldi baterako fitxategiak garbitzen…"</string>
+    <string name="clear" msgid="5524638938415865915">"Garbitu"</string>
+    <string name="allow" msgid="8885707816848569619">"Baimendu"</string>
+    <string name="deny" msgid="6040983710442068936">"Ukatu"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> audio-fitxategiri aldaketak egiteko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Audio-fitxategi honi aldaketak egiteko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> bideo aldatzen utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Bideo hau aldatzen utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> bideori aldaketak egiteko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Bideo honi aldaketak egiteko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> argazki aldatzen utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Argazki hau aldatzen utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> argazkiri aldaketak egiteko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Argazki honi aldaketak egiteko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> elementu aldatzen utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Elementu hau aldatzen utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> elementuri aldaketak egiteko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Elementu honi aldaketak egiteko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Aldatu"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Utzi"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> audio-fitxategi zaborrontzira eramaten utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Audio-fitxategi hau zaborrontzira eramaten utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> audio-fitxategi zaborrontzira eramateko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Audio-fitxategi hau zaborrontzira eramateko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Audio-fitxategi hauek betiko ezabatuko dira <xliff:g id="DURATION_1">^3</xliff:g> egunen buruan</item>
-      <item quantity="one">Audio-fitxategi hau betiko ezabatuko da <xliff:g id="DURATION_0">^3</xliff:g> egunen buruan</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> bideo zaborrontzira eramateko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Bideo hau zaborrontzira eramateko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> bideo zaborrontzira eramaten utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Bideo hau zaborrontzira eramaten utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> argazki zaborrontzira eramateko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Argazki hau zaborrontzira eramateko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Bideo hauek betiko ezabatuko dira <xliff:g id="DURATION_1">^3</xliff:g> egunen buruan</item>
-      <item quantity="one">Bideo hau betiko ezabatuko da <xliff:g id="DURATION_0">^3</xliff:g> egunen buruan</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> elementu zaborrontzira eramateko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Elementu hau zaborrontzira eramateko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> argazki zaborrontzira eramaten utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Argazki hau zaborrontzira eramaten utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> audio-fitxategi zaborrontzitik ateratzeko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Audio-fitxategi hau zaborrontzitik ateratzeko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Argazki hauek betiko ezabatuko dira <xliff:g id="DURATION_1">^3</xliff:g> egunen buruan</item>
-      <item quantity="one">Argazki hau betiko ezabatuko da <xliff:g id="DURATION_0">^3</xliff:g> egunen buruan</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> bideo zaborrontzitik ateratzeko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Bideo hau zaborrontzitik ateratzeko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> elementu zaborrontzira eramaten utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Elementu hau zaborrontzira eramaten utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> argazki zaborrontzitik ateratzeko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Argazki hau zaborrontzitik ateratzeko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Elementu hauek betiko ezabatuko dira <xliff:g id="DURATION_1">^3</xliff:g> egunen buruan</item>
-      <item quantity="one">Elementu hau betiko ezabatuko da <xliff:g id="DURATION_0">^3</xliff:g> egunen buruan</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> elementu zaborrontzitik ateratzeko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Elementu hau zaborrontzitik ateratzeko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Eraman zaborrontzira"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Utzi"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> audio-fitxategi zaborrontzitik ateratzen utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Audio-fitxategi hau zaborrontzitik ateratzen utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> audio-fitxategi ezabatzeko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Audio-fitxategi hau ezabatzeko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> bideo zaborrontzitik ateratzen utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Bideo hau zaborrontzitik ateratzen utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> bideo ezabatzeko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Bideo hau ezabatzeko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> argazki zaborrontzitik ateratzen utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Argazki hau zaborrontzitik ateratzen utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> argazki ezabatzeko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Argazki hau ezabatzeko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> elementu zaborrontzitik ateratzen utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Elementu hau zaborrontzitik ateratzen utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> elementu ezabatzeko baimena eman nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
+      <item quantity="one">Elementu hau ezabatzeko baimena eman nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Atera zaborrontzitik"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Utzi"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> audio-fitxategi ezabatzen utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Audio-fitxategi hau ezabatzen utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> bideo ezabatzen utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Bideo hau ezabatzen utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> argazki ezabatzen utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Argazki hau ezabatzen utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> elementu ezabatzen utzi nahi diozu <xliff:g id="APP_NAME_1">^1</xliff:g> aplikazioari?</item>
-      <item quantity="one">Elementu hau ezabatzen utzi nahi diozu <xliff:g id="APP_NAME_0">^1</xliff:g> aplikazioari?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Ezabatu"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Utzi"</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index d002a45..fc0d11e 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -28,106 +28,83 @@
     <string name="permission_required" msgid="1460820436132943754">"برای اصلاح یا حذف این مورد مجوز لازم است."</string>
     <string name="permission_required_action" msgid="706370952366113539">"ادامه"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"مجاز"</string>
-    <string name="grant_dialog_button_deny" msgid="6190589471415815741">"رد کردن"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <string name="grant_dialog_button_deny" msgid="6190589471415815741">"مجاز نبودن"</string>
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">‎+<xliff:g id="COUNT_1">^1</xliff:g>‎</item>
+      <item quantity="other">‎+<xliff:g id="COUNT_1">^1</xliff:g>‎</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">به‌علاوه <xliff:g id="COUNT_1">^1</xliff:g> مورد دیگر</item>
       <item quantity="other">به‌علاوه <xliff:g id="COUNT_1">^1</xliff:g> مورد دیگر</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"پاک کردن فایل‌های موقت برنامه"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> می‌خواهد برخی از فایل‌های موقت را پاک کند. این کار ممکن است استفاده از باتری یا داده شبکه تلفن همراه را افزایش دهد."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"درحال پاک کردن فایل‌های موقتی برنامه…"</string>
+    <string name="clear" msgid="5524638938415865915">"پاک کردن"</string>
+    <string name="allow" msgid="8885707816848569619">"اجازه دادن"</string>
+    <string name="deny" msgid="6040983710442068936">"مجاز نبودن"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> فایل صوتی را تغییر دهد؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> فایل صوتی را تغییر دهد؟</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> ویدیو را تغییر دهد؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> ویدیو را تغییر دهد؟</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> عکس را تغییر دهد؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> عکس را تغییر دهد؟</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> مورد را تغییر دهد؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> مورد را تغییر دهد؟</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"تغییر"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"لغو"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> فایل صوتی را به «حذف‌شده‌ها» منتقل کند؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> فایل صوتی را به «حذف‌شده‌ها» منتقل کند؟</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">این فایل‌های صوتی بعد از <xliff:g id="DURATION_1">^3</xliff:g> روز برای همیشه حذف خواهند شد</item>
-      <item quantity="other">این فایل‌های صوتی بعد از <xliff:g id="DURATION_1">^3</xliff:g> روز برای همیشه حذف خواهند شد</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> ویدیو را به «حذف‌شده‌ها» منتقل کند؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> ویدیو را به «حذف‌شده‌ها» منتقل کند؟</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">این ویدیوها بعد از <xliff:g id="DURATION_1">^3</xliff:g> روز برای همیشه حذف خواهند شد</item>
-      <item quantity="other">این ویدیوها بعد از <xliff:g id="DURATION_1">^3</xliff:g> روز برای همیشه حذف خواهند شد</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> عکس را به «حذف‌شده‌ها» منتقل کند؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> عکس را به «حذف‌شده‌ها» منتقل کند؟</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">این عکس‌ها بعد از <xliff:g id="DURATION_1">^3</xliff:g> روز برای همیشه حذف خواهند شد</item>
-      <item quantity="other">این عکس‌ها بعد از <xliff:g id="DURATION_1">^3</xliff:g> روز برای همیشه حذف خواهند شد</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> مورد را به «حذف‌شده‌ها» منتقل کند؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> مورد را به «حذف‌شده‌ها» منتقل کند؟</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">این موارد بعد از <xliff:g id="DURATION_1">^3</xliff:g> روز برای همیشه حذف خواهند شد</item>
-      <item quantity="other">این موارد بعد از <xliff:g id="DURATION_1">^3</xliff:g> روز برای همیشه حذف خواهند شد</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"انتقال به حذف‌شده‌ها"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"لغو"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> فایل صوتی را از «حذف‌شده‌ها» خارج کند؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> فایل صوتی را از «حذف‌شده‌ها» خارج کند؟</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> ویدیو را از «حذف‌شده‌ها» خارج کند؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> ویدیو را از «حذف‌شده‌ها» خارج کند؟</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> عکس را از «حذف‌شده‌ها» خارج کند؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> عکس را از «حذف‌شده‌ها» خارج کند؟</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> مورد را از «حذف‌شده‌ها» خارج کند؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> مورد را از «حذف‌شده‌ها» خارج کند؟</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"خارج کردن از «حذف‌شده‌ها»"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"لغو"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> فایل صوتی را حذف کند؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> فایل صوتی را حذف کند؟</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> ویدیو را حذف کند؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> ویدیو را حذف کند؟</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> عکس را حذف کند؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> عکس را حذف کند؟</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> مورد را حذف کند؟</item>
       <item quantity="other">به <xliff:g id="APP_NAME_1">^1</xliff:g> اجازه می‌دهید <xliff:g id="COUNT">^2</xliff:g> مورد را حذف کند؟</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"حذف"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"لغو"</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 2d2a2bc..39517ba 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Jatka"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Salli"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Estä"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Ja <xliff:g id="COUNT_1">^1</xliff:g> muuta asiaa</item>
       <item quantity="one">Ja <xliff:g id="COUNT_0">^1</xliff:g> muu asia</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Poista väliaikaisia sovellustiedostoja"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> haluaa poistaa joitain väliaikaisia tiedostoja. Tämä voi lisätä akun tai mobiilidatan käyttöä."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Poistetaan väliaikaisia sovellustiedostoja…"</string>
+    <string name="clear" msgid="5524638938415865915">"Poista"</string>
+    <string name="allow" msgid="8885707816848569619">"Salli"</string>
+    <string name="deny" msgid="6040983710442068936">"Estä"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> muokata <xliff:g id="COUNT">^2</xliff:g> audiotiedostoa?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> muokata tätä audiotiedostoa?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> muokata <xliff:g id="COUNT">^2</xliff:g> videota?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> muokata tätä videota?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> muokata <xliff:g id="COUNT">^2</xliff:g> kuvaa?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> muokata tätä kuvaa?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> muokata <xliff:g id="COUNT">^2</xliff:g> asiaa?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> muokata <xliff:g id="COUNT">^2</xliff:g> kohdetta?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> muokata tätä?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Muokkaa"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Peruuta"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> siirtää <xliff:g id="COUNT">^2</xliff:g> audiotiedostoa roskakoriin?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> siirtää tämän audiotiedoston roskakoriin?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Nämä audiotiedostot poistetaan pysyvästi <xliff:g id="DURATION_1">^3</xliff:g> päivän päästä.</item>
-      <item quantity="one">Tämä audiotiedosto poistetaan pysyvästi <xliff:g id="DURATION_0">^3</xliff:g> päivän päästä.</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> siirtää <xliff:g id="COUNT">^2</xliff:g> videota roskakoriin?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> siirtää tämän videon roskakoriin?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Nämä videot poistetaan pysyvästi <xliff:g id="DURATION_1">^3</xliff:g> päivän päästä.</item>
-      <item quantity="one">Tämä video poistetaan pysyvästi <xliff:g id="DURATION_0">^3</xliff:g> päivän päästä.</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> siirtää <xliff:g id="COUNT">^2</xliff:g> kuvaa roskakoriin?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> siirtää tämän kuvan roskakoriin?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Nämä kuvat poistetaan pysyvästi <xliff:g id="DURATION_1">^3</xliff:g> päivän päästä.</item>
-      <item quantity="one">Tämä kuva poistetaan pysyvästi <xliff:g id="DURATION_0">^3</xliff:g> päivän päästä.</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> siirtää <xliff:g id="COUNT">^2</xliff:g> asiaa roskakoriin?</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> siirtää <xliff:g id="COUNT">^2</xliff:g> kohdetta roskakoriin?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> siirtää tämän roskakoriin?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Nämä poistetaan pysyvästi <xliff:g id="DURATION_1">^3</xliff:g> päivän päästä.</item>
-      <item quantity="one">Tämä poistetaan pysyvästi <xliff:g id="DURATION_0">^3</xliff:g> päivän päästä.</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Siirrä roskakoriin"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Peruuta"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> ottaa <xliff:g id="COUNT">^2</xliff:g> audiotiedostoa pois roskakorista?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> ottaa tämän audiotiedoston pois roskakorista?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> ottaa <xliff:g id="COUNT">^2</xliff:g> videota pois roskakorista?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> ottaa tämän videon pois roskakorista?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> ottaa <xliff:g id="COUNT">^2</xliff:g> kuvaa pois roskakorista?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> ottaa tämän kuvan pois roskakorista?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> ottaa <xliff:g id="COUNT">^2</xliff:g> asiaa pois roskakorista?</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> ottaa <xliff:g id="COUNT">^2</xliff:g> kohdetta pois roskakorista?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> ottaa tämän pois roskakorista?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Ota pois roskakorista"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Peruuta"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> poistaa <xliff:g id="COUNT">^2</xliff:g> audiotiedostoa?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> poistaa tämän audiotiedoston?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> poistaa <xliff:g id="COUNT">^2</xliff:g> videota?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> poistaa tämän videon?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> poistaa <xliff:g id="COUNT">^2</xliff:g> kuvaa?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> poistaa tämän kuvan?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> poistaa <xliff:g id="COUNT">^2</xliff:g> asiaa?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Saako <xliff:g id="APP_NAME_1">^1</xliff:g> poistaa <xliff:g id="COUNT">^2</xliff:g> kohdetta?</item>
       <item quantity="one">Saako <xliff:g id="APP_NAME_0">^1</xliff:g> poistaa tämän?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Poista"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Peruuta"</string>
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index e056c0c..021ba70 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continuer"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Autoriser"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Refuser"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Plus <xliff:g id="COUNT_1">^1</xliff:g> élément supplémentaire</item>
       <item quantity="other">Plus <xliff:g id="COUNT_1">^1</xliff:g> éléments supplémentaires</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Effacer les fichiers temporaires des applications"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> aimerait supprimer certains fichiers temporaires. Ceci peut entraîner une utilisation accrue de la pile ou des données cellulaires."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Suppression des fichiers temporaires des applications en cours…"</string>
+    <string name="clear" msgid="5524638938415865915">"Effacer"</string>
+    <string name="allow" msgid="8885707816848569619">"Autoriser"</string>
+    <string name="deny" msgid="6040983710442068936">"Refuser"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> fichier audio?</item>
       <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> fichiers audio?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> vidéo?</item>
       <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> vidéos?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> photo?</item>
       <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> photos?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> élément?</item>
       <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> éléments?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Modifier"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Annuler"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à déplacer <xliff:g id="COUNT">^2</xliff:g> fichier audio dans la corbeille?</item>
       <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à déplacer <xliff:g id="COUNT">^2</xliff:g> fichiers audio dans la corbeille?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Ces fichiers audio seront supprimés définitivement dans <xliff:g id="DURATION_1">^3</xliff:g> jour</item>
-      <item quantity="other">Ces fichiers audio seront supprimés définitivement dans <xliff:g id="DURATION_1">^3</xliff:g> jours</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à déplacer <xliff:g id="COUNT">^2</xliff:g> vidéo dans la corbeille?</item>
       <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à déplacer <xliff:g id="COUNT">^2</xliff:g> vidéos dans la corbeille?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Ces vidéos seront supprimées définitivement dans <xliff:g id="DURATION_1">^3</xliff:g> jour</item>
-      <item quantity="other">Ces vidéos seront supprimées définitivement dans <xliff:g id="DURATION_1">^3</xliff:g> jours</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à déplacer <xliff:g id="COUNT">^2</xliff:g> photo dans la corbeille?</item>
       <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à déplacer <xliff:g id="COUNT">^2</xliff:g> photos dans la corbeille?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Ces photos seront supprimées définitivement dans <xliff:g id="DURATION_1">^3</xliff:g> jour</item>
-      <item quantity="other">Ces photos seront supprimées définitivement dans <xliff:g id="DURATION_1">^3</xliff:g> jours</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à déplacer <xliff:g id="COUNT">^2</xliff:g> élément dans la corbeille?</item>
       <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à déplacer <xliff:g id="COUNT">^2</xliff:g> éléments dans la corbeille?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Ces éléments seront supprimés définitivement dans <xliff:g id="DURATION_1">^3</xliff:g> jour</item>
-      <item quantity="other">Ces éléments seront supprimés définitivement dans <xliff:g id="DURATION_1">^3</xliff:g> jours</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à restaurer <xliff:g id="COUNT">^2</xliff:g> fichier audio de la corbeille?</item>
+      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à restaurer <xliff:g id="COUNT">^2</xliff:g> fichiers audio de la corbeille?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Déplacer dans la corbeille"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Annuler"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à récupérer <xliff:g id="COUNT">^2</xliff:g> fichier audio de la corbeille?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à récupérer <xliff:g id="COUNT">^2</xliff:g> fichiers audio de la corbeille?</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à restaurer <xliff:g id="COUNT">^2</xliff:g> vidéo de la corbeille?</item>
+      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à restaurer <xliff:g id="COUNT">^2</xliff:g> vidéos de la corbeille?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à récupérer <xliff:g id="COUNT">^2</xliff:g> vidéo de la corbeille?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à récupérer <xliff:g id="COUNT">^2</xliff:g> vidéos de la corbeille?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à restaurer <xliff:g id="COUNT">^2</xliff:g> photo de la corbeille?</item>
+      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à restaurer <xliff:g id="COUNT">^2</xliff:g> photos de la corbeille?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à récupérer <xliff:g id="COUNT">^2</xliff:g> photo de la corbeille?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à récupérer <xliff:g id="COUNT">^2</xliff:g> photos de la corbeille?</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à restaurer <xliff:g id="COUNT">^2</xliff:g> élément de la corbeille?</item>
+      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à restaurer <xliff:g id="COUNT">^2</xliff:g> éléments de la corbeille?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à récupérer <xliff:g id="COUNT">^2</xliff:g> élément de la corbeille?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à récupérer <xliff:g id="COUNT">^2</xliff:g> éléments de la corbeille?</item>
-    </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Récupérer de la corbeille"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Annuler"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> fichier audio?</item>
       <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> fichiers audio?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> vidéo?</item>
       <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> vidéos?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> photo?</item>
       <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> photos?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> élément?</item>
       <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> éléments?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Supprimer"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Annuler"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index a60a92d..7b0d694 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continuer"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Autoriser"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Refuser"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+ <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+ <xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Plus <xliff:g id="COUNT_1">^1</xliff:g> autre élément</item>
       <item quantity="other">Plus <xliff:g id="COUNT_1">^1</xliff:g> autres éléments</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> fichier audio ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> fichiers audio ?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Effacer les fichiers d\'application temporaires"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> souhaite supprimer quelques fichiers temporaires, ce qui risque de solliciter davantage la batterie et le réseau de données mobiles."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Suppression des fichiers d\'application temporaires…"</string>
+    <string name="clear" msgid="5524638938415865915">"Effacer"</string>
+    <string name="allow" msgid="8885707816848569619">"Autoriser"</string>
+    <string name="deny" msgid="6040983710442068936">"Refuser"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> fichier audio ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> fichiers audio ?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> vidéo ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> vidéos ?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> vidéo ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> vidéos ?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> photo ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> photos ?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> photo ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> photos ?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> élément ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> éléments ?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> élément ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à modifier <xliff:g id="COUNT">^2</xliff:g> éléments ?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Modifier"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Annuler"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> fichier audio dans la corbeille ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> fichiers audio dans la corbeille ?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> fichier audio dans la corbeille ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> fichiers audio dans la corbeille ?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Ce fichier audio sera supprimé définitivement au bout de <xliff:g id="DURATION_1">^3</xliff:g> jour(s)</item>
-      <item quantity="other">Ces fichiers audio seront supprimés définitivement au bout de <xliff:g id="DURATION_1">^3</xliff:g> jour(s)</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> vidéo dans la corbeille ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> vidéos dans la corbeille ?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> vidéo dans la corbeille ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> vidéos dans la corbeille ?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> photo dans la corbeille ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> photos dans la corbeille ?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Cette vidéo sera supprimée définitivement au bout de <xliff:g id="DURATION_1">^3</xliff:g> jour(s)</item>
-      <item quantity="other">Ces vidéos seront supprimées définitivement au bout de <xliff:g id="DURATION_1">^3</xliff:g> jour(s)</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> élément dans la corbeille ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> éléments dans la corbeille ?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> photo dans la corbeille ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> photos dans la corbeille ?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> fichier audio de la corbeille ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> fichiers audio de la corbeille ?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Cette photo sera supprimée définitivement au bout de <xliff:g id="DURATION_1">^3</xliff:g> jour(s)</item>
-      <item quantity="other">Ces photos seront supprimées définitivement au bout de <xliff:g id="DURATION_1">^3</xliff:g> jour(s)</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> vidéo de la corbeille ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> vidéos de la corbeille ?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> élément dans la corbeille ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à placer <xliff:g id="COUNT">^2</xliff:g> éléments dans la corbeille ?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> photo de la corbeille ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> photos de la corbeille ?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Cet élément sera supprimé définitivement au bout de <xliff:g id="DURATION_1">^3</xliff:g> jour(s)</item>
-      <item quantity="other">Ces éléments seront supprimés définitivement au bout de <xliff:g id="DURATION_1">^3</xliff:g> jour(s)</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> élément de la corbeille ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> éléments de la corbeille ?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Placer dans la corbeille"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Annuler"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> fichier audio de la corbeille ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> fichiers audio de la corbeille ?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> fichier audio ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> fichiers audio ?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> vidéo de la corbeille ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> vidéos de la corbeille ?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> vidéo ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> vidéos ?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> photo de la corbeille ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> photos de la corbeille ?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> photo ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> photos ?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> élément de la corbeille ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à retirer <xliff:g id="COUNT">^2</xliff:g> éléments de la corbeille ?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="one">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> élément ?</item>
+      <item quantity="other">Autoriser l\'application <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> éléments ?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Retirer de la corbeille"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Annuler"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> fichier audio ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> fichiers audio ?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> vidéo ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> vidéos ?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> photo ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> photos ?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="one">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> élément ?</item>
-      <item quantity="other">Autoriser <xliff:g id="APP_NAME_1">^1</xliff:g> à supprimer <xliff:g id="COUNT">^2</xliff:g> éléments ?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Supprimer"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Annuler"</string>
 </resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 8020588..93e281d 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continuar"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Permitir"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Denegar"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other"><xliff:g id="COUNT_1">^1</xliff:g> máis</item>
+      <item quantity="one"><xliff:g id="COUNT_0">^1</xliff:g> máis</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">E <xliff:g id="COUNT_1">^1</xliff:g> elementos adicionais</item>
       <item quantity="one">E <xliff:g id="COUNT_0">^1</xliff:g> elemento adicional</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> cambie <xliff:g id="COUNT">^2</xliff:g> ficheiros de audio?</item>
-      <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> cambie este ficheiro de audio?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Borrar os ficheiros temporais das aplicacións"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> quere borrar algúns ficheiros temporais. Por este motivo, pode aumentar o uso da batería e dos datos móbiles."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Borrando ficheiros temporais das aplicacións…"</string>
+    <string name="clear" msgid="5524638938415865915">"Borrar"</string>
+    <string name="allow" msgid="8885707816848569619">"Permitir"</string>
+    <string name="deny" msgid="6040983710442068936">"Denegar"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> ficheiros de audio?</item>
+      <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> modifique este ficheiro de audio?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> cambie <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
-      <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> cambie este vídeo?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
+      <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> modifique este vídeo?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> cambie <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
-      <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> cambie esta foto?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
+      <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> modifique esta foto?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> cambie <xliff:g id="COUNT">^2</xliff:g> elementos?</item>
-      <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> cambie este elemento?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> elementos?</item>
+      <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> modifique este elemento?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Cambiar"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Cancelar"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> ficheiros de audio á papeleira?</item>
       <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mova este ficheiro de audio á papeleira?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Estes ficheiros de audio eliminaranse permanentemente despois de <xliff:g id="DURATION_1">^3</xliff:g> días</item>
-      <item quantity="one">Este ficheiro de audio eliminarase permanentemente despois de <xliff:g id="DURATION_0">^3</xliff:g> días</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> vídeos á papeleira?</item>
       <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mova este vídeo á papeleira?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Estes vídeos eliminaranse permanentemente despois de <xliff:g id="DURATION_1">^3</xliff:g> días</item>
-      <item quantity="one">Este vídeo eliminarase permanentemente despois de <xliff:g id="DURATION_0">^3</xliff:g> días</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> fotos á papeleira?</item>
       <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mova esta foto á papeleira?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Estas fotos eliminaranse permanentemente despois de <xliff:g id="DURATION_1">^3</xliff:g> días</item>
-      <item quantity="one">Esta foto eliminarase permanentemente despois de <xliff:g id="DURATION_0">^3</xliff:g> días</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> elementos á papeleira?</item>
       <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> mova este elemento á papeleira?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Estes elementos eliminaranse permanentemente despois de <xliff:g id="DURATION_1">^3</xliff:g> días</item>
-      <item quantity="one">Este elemento eliminarase permanentemente despois de <xliff:g id="DURATION_0">^3</xliff:g> días</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Mover á papeleira"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Cancelar"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> saque <xliff:g id="COUNT">^2</xliff:g> ficheiros de audio da papeleira?</item>
       <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> saque este ficheiro de audio da papeleira?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> saque <xliff:g id="COUNT">^2</xliff:g> vídeos da papeleira?</item>
       <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> saque este vídeo da papeleira?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> saque <xliff:g id="COUNT">^2</xliff:g> fotos da papeleira?</item>
       <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> saque esta foto da papeleira?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> saque <xliff:g id="COUNT">^2</xliff:g> elementos da papeleira?</item>
       <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> saque este elemento da papeleira?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Sacar da papeleira"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Cancelar"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> ficheiros de audio?</item>
       <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este ficheiro de audio?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
       <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este vídeo?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
       <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> elimine esta foto?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other">Queres permitir que <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> elementos?</item>
       <item quantity="one">Queres permitir que <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este elemento?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Eliminar"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Cancelar"</string>
 </resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index a48e282..d7cc37d 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -21,113 +21,90 @@
     <string name="app_label" msgid="9035307001052716210">"મીડિયા સ્ટોરેજ"</string>
     <string name="artist_label" msgid="8105600993099120273">"કલાકાર"</string>
     <string name="unknown" msgid="2059049215682829375">"અજાણ"</string>
-    <string name="root_images" msgid="5861633549189045666">"છબીઓ"</string>
-    <string name="root_videos" msgid="8792703517064649453">"વિડિઓઝ"</string>
-    <string name="root_audio" msgid="3505830755201326018">"ઑડિઓ"</string>
+    <string name="root_images" msgid="5861633549189045666">"Images"</string>
+    <string name="root_videos" msgid="8792703517064649453">"વીડિયો"</string>
+    <string name="root_audio" msgid="3505830755201326018">"ઑડિયો"</string>
     <string name="root_documents" msgid="3829103301363849237">"દસ્તાવેજો"</string>
     <string name="permission_required" msgid="1460820436132943754">"આ આઇટમમાં ફેરફાર કરવા માટે અથવા તેને ડિલીટ કરવા માટે પરવાનગી હોવી જરૂરી છે."</string>
     <string name="permission_required_action" msgid="706370952366113539">"આગળ વધો"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"મંજૂરી આપો"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"નકારો"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">ઉપરાંત <xliff:g id="COUNT_1">^1</xliff:g> વધારાની આઇટમ</item>
       <item quantity="other">ઉપરાંત <xliff:g id="COUNT_1">^1</xliff:g> વધારાની આઇટમ</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"ઍપની બધી અસ્થાયી ફાઇલ સાફ કરો"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> કેટલીક અસ્થાયી ફાઇલોને સાફ કરવા માગે છે. આના પરિણામે બૅટરી અથવા સેલ્યુલર ડેટાના વપરાશમાં વધારો થઈ શકે છે."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"ઍપની બધી અસ્થાયી ફાઇલો સાફ કરી રહ્યાં છીએ…"</string>
+    <string name="clear" msgid="5524638938415865915">"સાફ કરો"</string>
+    <string name="allow" msgid="8885707816848569619">"મંજૂરી આપો"</string>
+    <string name="deny" msgid="6040983710442068936">"નકારો"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલમાં ફેરફાર કરવાની મંજૂરી આપીએ?</item>
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલમાં ફેરફાર કરવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> વીડિયોમાં ફેરફાર કરવાની મંજૂરી આપીએ?</item>
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> વીડિયોમાં ફેરફાર કરવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ફોટામાં ફેરફાર કરવાની મંજૂરી આપીએ?</item>
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ફોટામાં ફેરફાર કરવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> આઇટમમાં ફેરફાર કરવાની મંજૂરી આપીએ?</item>
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> આઇટમમાં ફેરફાર કરવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"ફેરફાર કરો"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"રદ કરો"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલ ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલ ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલને ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલને ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">આ ઑડિયો ફાઇલ <xliff:g id="DURATION_1">^3</xliff:g> દિવસ પછી હંમેશ માટે ડિલીટ કરવામાં આવશે</item>
-      <item quantity="other">આ ઑડિયો ફાઇલો <xliff:g id="DURATION_1">^3</xliff:g> દિવસ પછી હંમેશ માટે ડિલીટ કરવામાં આવશે</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> વીડિયોને ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> વીડિયોને ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> વીડિયો ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> વીડિયો ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ફોટાને ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ફોટાને ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">આ વીડિયો <xliff:g id="DURATION_1">^3</xliff:g> દિવસ પછી હંમેશ માટે ડિલીટ કરવામાં આવશે</item>
-      <item quantity="other">આ વીડિયો <xliff:g id="DURATION_1">^3</xliff:g> દિવસ પછી હંમેશ માટે ડિલીટ કરવામાં આવશે</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> આઇટમને ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> આઇટમને ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ફોટો ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ફોટા ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલને ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલને ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">આ ફોટો <xliff:g id="DURATION_1">^3</xliff:g> દિવસ પછી હંમેશ માટે ડિલીટ કરવામાં આવશે</item>
-      <item quantity="other">આ ફોટા <xliff:g id="DURATION_1">^3</xliff:g> દિવસ પછી હંમેશ માટે ડિલીટ કરવામાં આવશે</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> વીડિયોને ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> વીડિયોને ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> આઇટમ ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> આઇટમ ટ્રેશમાં ખસેડવાની મંજૂરી આપીએ?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ફોટાને ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ફોટાને ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">આ આઇટમ <xliff:g id="DURATION_1">^3</xliff:g> દિવસ પછી હંમેશ માટે ડિલીટ કરવામાં આવશે</item>
-      <item quantity="other">આ આઇટમ <xliff:g id="DURATION_1">^3</xliff:g> દિવસ પછી હંમેશ માટે ડિલીટ કરવામાં આવશે</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> આઇટમને ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> આઇટમને ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ટ્રેશમાં ખસેડો"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"રદ કરો"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલ ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલ ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને આ <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલ ડિલીટ કરવાની મંજૂરી આપીએ?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને આ <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલ ડિલીટ કરવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> વીડિયો ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> વીડિયો ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને આ <xliff:g id="COUNT">^2</xliff:g> વીડિયો ડિલીટ કરવાની મંજૂરી આપીએ?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને આ <xliff:g id="COUNT">^2</xliff:g> વીડિયો ડિલીટ કરવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ફોટો ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ફોટા ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને આ <xliff:g id="COUNT">^2</xliff:g> ફોટો ડિલીટ કરવાની મંજૂરી આપીએ?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને આ <xliff:g id="COUNT">^2</xliff:g> ફોટો ડિલીટ કરવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> આઇટમ ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> આઇટમ ટ્રેશમાંથી બહાર લાવવાની મંજૂરી આપીએ?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને આ <xliff:g id="COUNT">^2</xliff:g> આઇટમ ડિલીટ કરવાની મંજૂરી આપીએ?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને આ <xliff:g id="COUNT">^2</xliff:g> આઇટમ ડિલીટ કરવાની મંજૂરી આપીએ?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ટ્રેશમાંથી બહાર લાવો"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"રદ કરો"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલ ડિલીટ કરવાની મંજૂરી આપીએ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ઑડિયો ફાઇલ ડિલીટ કરવાની મંજૂરી આપીએ?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> વીડિયો ડિલીટ કરવાની મંજૂરી આપીએ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> વીડિયો ડિલીટ કરવાની મંજૂરી આપીએ?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ફોટો ડિલીટ કરવાની મંજૂરી આપીએ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> ફોટા ડિલીટ કરવાની મંજૂરી આપીએ?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> આઇટમ ડિલીટ કરવાની મંજૂરી આપીએ?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ને <xliff:g id="COUNT">^2</xliff:g> આઇટમ ડિલીટ કરવાની મંજૂરી આપીએ?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"ડિલીટ કરો"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"રદ કરો"</string>
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 341bf54..3937bd2 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -21,7 +21,7 @@
     <string name="app_label" msgid="9035307001052716210">"मीडिया मेमोरी"</string>
     <string name="artist_label" msgid="8105600993099120273">"कलाकार"</string>
     <string name="unknown" msgid="2059049215682829375">"अज्ञात"</string>
-    <string name="root_images" msgid="5861633549189045666">"चित्र"</string>
+    <string name="root_images" msgid="5861633549189045666">"इमेज"</string>
     <string name="root_videos" msgid="8792703517064649453">"वीडियो"</string>
     <string name="root_audio" msgid="3505830755201326018">"ऑडियो"</string>
     <string name="root_documents" msgid="3829103301363849237">"दस्तावेज़"</string>
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"जारी रखें"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"अनुमति दें"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"अनुमति न दें"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">अन्य <xliff:g id="COUNT_1">^1</xliff:g> आइटम</item>
       <item quantity="other">अन्य <xliff:g id="COUNT_1">^1</xliff:g> आइटम</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइलों को बदलने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइलों को बदलने की अनुमति दें?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"ऐप्लिकेशन से जुड़ी, कुछ समय तक सेव रहने वाली फ़ाइलें मिटाएं"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> कुछ समय तक रहने वाली फ़ाइलें हटाना चाहता है. इससे बैटरी या मोबाइल डेटा का इस्तेमाल बढ़ सकता है."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"ऐप्लिकेशन से जुड़ी, कुछ समय तक सेव रहने वाली फ़ाइलें मिटाई जा रही हैं…"</string>
+    <string name="clear" msgid="5524638938415865915">"मिटाएं"</string>
+    <string name="allow" msgid="8885707816848569619">"अनुमति दें"</string>
+    <string name="deny" msgid="6040983710442068936">"अनुमति न दें"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइल में बदलाव करने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइलों में बदलाव करने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो बदलने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो बदलने की अनुमति दें?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो में बदलाव करने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो में बदलाव करने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो बदलने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो बदलने की अनुमति दें?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो में बदलाव करने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो में बदलाव करने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम बदलने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम बदलने की अनुमति दें?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम में बदलाव करने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम में बदलाव करने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"बदलें"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"अभी नहीं"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइलों को ट्रैश में ले जाने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइलों को ट्रैश में ले जाने की अनुमति दें?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइल, ट्रैश में मूव करने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइलें, ट्रैश में मूव करने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">ये ऑडियो फ़ाइलें <xliff:g id="DURATION_1">^3</xliff:g> दिनों के बाद हमेशा के लिए मिट जाएंगी</item>
-      <item quantity="other">ये ऑडियो फ़ाइलें <xliff:g id="DURATION_1">^3</xliff:g> दिनों के बाद हमेशा के लिए मिट जाएंगी</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो, ट्रैश में मूव करने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो, ट्रैश में मूव करने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो को ट्रैश में ले जाने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो को ट्रैश में ले जाने की अनुमति दें?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो, ट्रैश में मूव करने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो, ट्रैश में मूव करने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">ये वीडियो <xliff:g id="DURATION_1">^3</xliff:g> दिनों के बाद हमेशा के लिए मिट जाएंगे</item>
-      <item quantity="other">ये वीडियो <xliff:g id="DURATION_1">^3</xliff:g> दिनों के बाद हमेशा के लिए मिट जाएंगे</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम, ट्रैश में मूव करने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम, ट्रैश में मूव करने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो को ट्रैश में ले जाने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो को ट्रैश में ले जाने की अनुमति दें?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइल, ट्रैश से बाहर निकालने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइलें, ट्रैश से बाहर निकालने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">ये फ़ोटो <xliff:g id="DURATION_1">^3</xliff:g> दिनों के बाद हमेशा के लिए मिट जाएंगी</item>
-      <item quantity="other">ये फ़ोटो <xliff:g id="DURATION_1">^3</xliff:g> दिनों के बाद हमेशा के लिए मिट जाएंगी</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो, ट्रैश से बाहर निकालने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो, ट्रैश से बाहर निकालने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम को ट्रैश में ले जाने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम को ट्रैश में ले जाने की अनुमति दें?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो, ट्रैश से बाहर निकालने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो, ट्रैश से बाहर निकालने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">ये आइटम <xliff:g id="DURATION_1">^3</xliff:g> दिनों के बाद हमेशा के लिए मिट जाएंगे</item>
-      <item quantity="other">ये आइटम <xliff:g id="DURATION_1">^3</xliff:g> दिनों के बाद हमेशा के लिए मिट जाएंगे</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम, ट्रैश से बाहर निकालने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम, ट्रैश से बाहर निकालने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ट्रैश में ले जाएं"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"अभी नहीं"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइलों को ट्रैश से बाहर निकालने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइलों को ट्रैश से बाहर निकालने की अनुमति दें?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइल मिटाने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइलें मिटाने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो को ट्रैश से बाहर निकालने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो को ट्रैश से बाहर निकालने की अनुमति दें?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो मिटाने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो मिटाने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो को ट्रैश से बाहर निकालने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो को ट्रैश से बाहर निकालने की अनुमति दें?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो मिटाने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो मिटाने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम को ट्रैश से बाहर निकालने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम को ट्रैश से बाहर निकालने की अनुमति दें?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="one">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम मिटाने की अनुमति देना चाहते हैं?</item>
+      <item quantity="other">क्या आप <xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम मिटाने की अनुमति देना चाहते हैं?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ट्रैश से बाहर निकालें"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"अभी नहीं"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइलें मिटाने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> ऑडियो फ़ाइलें मिटाने की अनुमति दें?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो मिटाने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> वीडियो मिटाने की अनुमति दें?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो मिटाने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> फ़ोटो मिटाने की अनुमति दें?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम मिटाने की अनुमति दें?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> को <xliff:g id="COUNT">^2</xliff:g> आइटम मिटाने की अनुमति दें?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"मिटाएं"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"अभी नहीं"</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 317839d..6b4abd9 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -29,126 +29,100 @@
     <string name="permission_required_action" msgid="706370952366113539">"Nastavi"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Dopusti"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Odbij"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">i još <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="few">i još <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">i još <xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Plus sljedeći broj dodatnih stavki: <xliff:g id="COUNT_1">^1</xliff:g></item>
       <item quantity="few">Plus sljedeći broj dodatnih stavki: <xliff:g id="COUNT_1">^1</xliff:g></item>
       <item quantity="other">Plus sljedeći broj dodatnih stavki: <xliff:g id="COUNT_1">^1</xliff:g></item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> promjenu sljedećeg broja audiodatoteka: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> promjenu sljedećeg broja audiodatoteka: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> promjenu sljedećeg broja audiodatoteka: <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Brisanje privremenih datoteka aplikacija"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> želi izbrisati neke privremene datoteke. Zbog toga može doći do veće upotrebe baterije ili mobilnih podataka."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Brišu se privremene datoteke aplikacija…"</string>
+    <string name="clear" msgid="5524638938415865915">"Izbriši"</string>
+    <string name="allow" msgid="8885707816848569619">"Dopusti"</string>
+    <string name="deny" msgid="6040983710442068936">"Odbij"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izmijeni <xliff:g id="COUNT">^2</xliff:g> audiodatoteku?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izmijeni <xliff:g id="COUNT">^2</xliff:g> audiodatoteke?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izmijeni <xliff:g id="COUNT">^2</xliff:g> audiodatoteka?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> promjenu sljedećeg broja videozapisa: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> promjenu sljedećeg broja videozapisa: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> promjenu sljedećeg broja videozapisa: <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izmijeni <xliff:g id="COUNT">^2</xliff:g> videozapis?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izmijeni <xliff:g id="COUNT">^2</xliff:g> videozapisa?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izmijeni <xliff:g id="COUNT">^2</xliff:g> videozapisa?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> promjenu sljedećeg broja fotografija: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> promjenu sljedećeg broja fotografija: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> promjenu sljedećeg broja fotografija: <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izmijeni <xliff:g id="COUNT">^2</xliff:g> fotografiju?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izmijeni <xliff:g id="COUNT">^2</xliff:g> fotografije?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izmijeni <xliff:g id="COUNT">^2</xliff:g> fotografija?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> promjenu sljedećeg broja stavki: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> promjenu sljedećeg broja stavki: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> promjenu sljedećeg broja stavki: <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izmijeni <xliff:g id="COUNT">^2</xliff:g> stavku?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izmijeni <xliff:g id="COUNT">^2</xliff:g> stavke?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izmijeni <xliff:g id="COUNT">^2</xliff:g> stavki?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Promijeni"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Otkaži"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja audiodatoteka u otpad: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja audiodatoteka u otpad <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja audiodatoteka u otpad <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> audiodatoteku u otpad?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> audiodatoteke u otpad?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> audiodatoteka u otpad?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Ove audiodatoteke trajno će se izbrisati nakon sljedećeg broja dana: <xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="few">Ove audiodatoteke trajno će se izbrisati nakon sljedećeg broja dana: <xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="other">Ove audiodatoteke trajno će se izbrisati nakon sljedećeg broja dana: <xliff:g id="DURATION_1">^3</xliff:g></item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> videozapis u otpad?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> videozapisa u otpad?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> videozapisa u otpad?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja videozapisa u otpad: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja videozapisa u otpad: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja videozapisa u otpad: <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> fotografiju u otpad?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> fotografije u otpad?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> fotografija u otpad?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Ovi videozapisi trajno će se izbrisati nakon sljedećeg broja dana: <xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="few">Ovi videozapisi trajno će se izbrisati nakon sljedećeg broja dana: <xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="other">Ovi videozapisi trajno će se izbrisati nakon sljedećeg broja dana: <xliff:g id="DURATION_1">^3</xliff:g></item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> stavku u otpad?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> stavke u otpad?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> stavki u otpad?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja fotografija u otpad: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja fotografija u otpad: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja fotografija u otpad: <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> audiodatoteku iz otpada?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> audiodatoteke iz otpada?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> audiodatoteka iz otpada?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Ove fotografije trajno će se izbrisati nakon sljedećeg broja dana: <xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="few">Ove fotografije trajno će se izbrisati nakon sljedećeg broja dana: <xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="other">Ove fotografije trajno će se izbrisati nakon sljedećeg broja dana: <xliff:g id="DURATION_1">^3</xliff:g></item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> videozapis iz otpada?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> videozapisa iz otpada?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> videozapisa iz otpada?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećih broja stavki u otpad: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećih broja stavki u otpad: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećih broja stavki u otpad: <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> fotografiju iz otpada?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> fotografije iz otpada?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> fotografija iz otpada?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Stavke će se trajno izbrisati nakon sljedećeg broja dana: <xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="few">Stavke će se trajno izbrisati nakon sljedećeg broja dana: <xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="other">Stavke će se trajno izbrisati nakon sljedećeg broja dana: <xliff:g id="DURATION_1">^3</xliff:g>.</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> stavku iz otpada?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> stavke iz otpada?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da premjesti <xliff:g id="COUNT">^2</xliff:g> stavki iz otpada?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Premjesti u otpad"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Otkaži"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja datoteka iz otpada: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja datoteka iz otpada: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja datoteka iz otpada: <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izbriše <xliff:g id="COUNT">^2</xliff:g> audiodatoteku?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izbriše <xliff:g id="COUNT">^2</xliff:g> audiodatoteke?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izbriše <xliff:g id="COUNT">^2</xliff:g> audiodatoteka?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja videozapisa iz otpada: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja videozapisa iz otpada: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja videozapisa iz otpada: <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izbriše <xliff:g id="COUNT">^2</xliff:g> videozapis?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izbriše <xliff:g id="COUNT">^2</xliff:g> videozapisa?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izbriše <xliff:g id="COUNT">^2</xliff:g> videozapisa?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja fotografija iz otpada: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja fotografija iz otpada: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja fotografija iz otpada: <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izbriše <xliff:g id="COUNT">^2</xliff:g> fotografiju?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izbriše <xliff:g id="COUNT">^2</xliff:g> fotografije?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izbriše <xliff:g id="COUNT">^2</xliff:g> fotografija?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja stavki iz otpada: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja stavki iz otpada: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> premještanje sljedećeg broja stavki iz otpada: <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="one">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izbriše <xliff:g id="COUNT">^2</xliff:g> stavku?</item>
+      <item quantity="few">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izbriše <xliff:g id="COUNT">^2</xliff:g> stavke?</item>
+      <item quantity="other">Želite li dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> da izbriše <xliff:g id="COUNT">^2</xliff:g> stavki?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Premjestiti iz otpada"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Otkaži"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> brisanje sljedećeg broja audiodatoteka: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> brisanje sljedećeg broja audiodatoteka: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> brisanje sljedećeg broja audiodatoteka: <xliff:g id="COUNT">^2</xliff:g>?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> brisanje sljedećeg broja videozapisa: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> brisanje sljedećeg broja videozapisa: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> brisanje sljedećeg broja videozapisa: <xliff:g id="COUNT">^2</xliff:g>?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> brisanje sljedećeg broja fotografija: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> brisanje sljedećeg broja fotografija: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> brisanje sljedećeg broja fotografija: <xliff:g id="COUNT">^2</xliff:g>?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="one">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> brisanje sljedećeg broja stavki: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="few">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> brisanje sljedećeg broja stavki: <xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Dopustiti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g> brisanje sljedećeg broja stavki: <xliff:g id="COUNT">^2</xliff:g>?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Izbriši"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Otkaži"</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 45a2082..1e39499 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Folytatás"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Engedélyezés"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Tiltás"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">És további <xliff:g id="COUNT_1">^1</xliff:g> elem</item>
       <item quantity="one">És további <xliff:g id="COUNT_0">^1</xliff:g> elem</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> hangfájlnak a módosítását?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek a hangfájlnak a módosítását?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Ideiglenes alkalmazásfájlok törlése"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"A(z) <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> szeretne törölni néhány ideiglenes fájlt. Ez nagyobb akkumulátor- és mobiladat-használatot eredményezhet."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Ideiglenes alkalmazásfájlok törlése…"</string>
+    <string name="clear" msgid="5524638938415865915">"Törlés"</string>
+    <string name="allow" msgid="8885707816848569619">"Engedélyezés"</string>
+    <string name="deny" msgid="6040983710442068936">"Tiltás"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> hangfájl módosítását?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek a hangfájlnak a módosítását?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> videónak a módosítását?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek a videónak a módosítását?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> videó módosítását?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek a videónak a módosítását?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> fotónak a módosítását?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek a fotónak a módosítását?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> fotó módosítását?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek a fotónak a módosítását?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> elemnek a módosítását?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek az elemnek a módosítását?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> elem módosítását?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek az elemnek a módosítását?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Módosítás"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Mégse"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> hangfájlnak a kukába helyezését?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek a hangfájlnak a kukába helyezését?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> hangfájlnak a kukába helyezését?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek a hangfájlnak a kukába helyezését?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Ezek a hangfájlok véglegesen törölve lesznek <xliff:g id="DURATION_1">^3</xliff:g> nap után</item>
-      <item quantity="one">Ez a hangfájl véglegesen törölve lesz <xliff:g id="DURATION_0">^3</xliff:g> nap után</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> videónak a kukába helyezését?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek a videónak a kukába helyezését?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> videónak a kukába helyezését?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek a videónak a kukába helyezését?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> fotónak a kukába helyezését?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek a fotónak a kukába helyezését?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Ezek a videók véglegesen törölve lesznek <xliff:g id="DURATION_1">^3</xliff:g> nap után</item>
-      <item quantity="one">Ez a videó véglegesen törölve lesz <xliff:g id="DURATION_0">^3</xliff:g> nap után</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> elemnek a kukába helyezését?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek az elemnek a kukába helyezését?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> fotónak a kukába helyezését?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek a fotónak a kukába helyezését?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> hangfájlnak a kukából való visszaállítását?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek a hangfájlnak a kukából való visszaállítását?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Ezek a fotók véglegesen törölve lesznek <xliff:g id="DURATION_1">^3</xliff:g> nap után</item>
-      <item quantity="one">Ez a fotó véglegesen törölve lesz <xliff:g id="DURATION_0">^3</xliff:g> nap után</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> videónak a kukából való visszaállítását?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek a videónak a kukából való visszaállítását?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> elemnek a kukába helyezését?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek az elemnek a kukába helyezését?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> fotónak a kukából való visszaállítását?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek a fotónak a kukából való visszaállítását?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Ezek az elemek véglegesen törölve lesznek <xliff:g id="DURATION_1">^3</xliff:g> nap után</item>
-      <item quantity="one">Ez az elem véglegesen törölve lesz <xliff:g id="DURATION_0">^3</xliff:g> nap után</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> elemnek a kukából való visszaállítását?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek az elemnek a kukából való visszaállítását?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Áthelyezés a kukába"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Mégse"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> hanfájlnak a kukából való visszaállítását?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek a hangfájlnak a kukából való visszaállítását?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> audiofájl törlését?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek az audiofájlnak a törlését?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> videónak a kukából való visszaállítását?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek a vidóenak a kukából való visszaállítását?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> videó törlését?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek a videónak a törlését?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> fotónak a kukából való visszaállítását?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek a fotónak a kukából való visszaállítását?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> fotó törlését?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek a fotónak a törlését?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> elemnek a kukából való visszaállítását?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek az elemnek a kukából való visszaállítását?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> számára <xliff:g id="COUNT">^2</xliff:g> elem törlését?</item>
+      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> számára ennek az elemnek a törlését?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Visszaállítás a kukából"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Mégse"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> hangfájlnak a törlését?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek a hangfájlnak a törlését?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> videónak a törlését?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek a videónak a törlését?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> fotónak a törlését?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek a fotónak a törlését?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Engedélyezi a(z) <xliff:g id="APP_NAME_1">^1</xliff:g> alkalmazás számára ennek a(z) <xliff:g id="COUNT">^2</xliff:g> elemnek a törlését?</item>
-      <item quantity="one">Engedélyezi a(z) <xliff:g id="APP_NAME_0">^1</xliff:g> alkalmazás számára ennek az elemnek a törlését?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Törlés"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Mégse"</string>
 </resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 6cc2148..862e27a 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Շարունակել"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Թույլատրել"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Մերժել"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Ու ևս <xliff:g id="COUNT_1">^1</xliff:g> լրացուցիչ տարր</item>
       <item quantity="other">Ու ևս <xliff:g id="COUNT_1">^1</xliff:g> լրացուցիչ տարր</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Մաքրե՞լ հավելվածի քեշը <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> հավելվածի օգնությամբ"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> հավելվածին անհրաժեշտ է մաքրել որոշ ժամանակավոր ֆայլեր։ Թույլատրելու դեպքում մարտկոցի կամ բջջային ինտերնետի ծախսը կարող է մեծանալ։"</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Ջնջեք հավելվածի լրացուցիչ ֆայլերը"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> հավելվածը հայցում է որոշ ժամանակավոր ֆայլեր ջնջելու թույլտվություն։ Դրա համար կարող է օգտագործվել ավելի շատ մարտկոցի լիցք կամ բջջային ինտերնետ։"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Հավելվածների ժամանակավոր ֆայլերը ջնջվում են…"</string>
+    <string name="clear" msgid="5524638938415865915">"Ջնջել"</string>
     <string name="allow" msgid="8885707816848569619">"Թույլատրել"</string>
     <string name="deny" msgid="6040983710442068936">"Մերժել"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">Թույլատրե\"լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոխել <xliff:g id="COUNT">^2</xliff:g> աուդիո ֆայլ</item>
-      <item quantity="other">Թույլատրե\"լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոխել <xliff:g id="COUNT">^2</xliff:g> աուդիո ֆայլ</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին վերականգնել <xliff:g id="COUNT">^2</xliff:g> աուդիո ֆայլ աղբարկղից</item>
+      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին վերականգնել <xliff:g id="COUNT">^2</xliff:g> աուդիո ֆայլ աղբարկղից</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոխել <xliff:g id="COUNT">^2</xliff:g> տեսանյութ</item>
-      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոխել <xliff:g id="COUNT">^2</xliff:g> տեսանյութ</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոփոխել <xliff:g id="COUNT">^2</xliff:g> տեսանյութ</item>
+      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոփոխել <xliff:g id="COUNT">^2</xliff:g> տեսանյութ</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոխել <xliff:g id="COUNT">^2</xliff:g> լուսանկար</item>
-      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոխել <xliff:g id="COUNT">^2</xliff:g> լուսանկար</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոփոխել <xliff:g id="COUNT">^2</xliff:g> լուսանկար</item>
+      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոփոխել <xliff:g id="COUNT">^2</xliff:g> լուսանկար</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոխել <xliff:g id="COUNT">^2</xliff:g> տարր</item>
-      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոխել <xliff:g id="COUNT">^2</xliff:g> տարր</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոփոխել <xliff:g id="COUNT">^2</xliff:g> տարր</item>
+      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին փոփոխել <xliff:g id="COUNT">^2</xliff:g> տարր</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Փոխել"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Չեղարկել"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին տեղափոխել <xliff:g id="COUNT">^2</xliff:g> աուդիո ֆայլ աղբարկղ</item>
       <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին տեղափոխել <xliff:g id="COUNT">^2</xliff:g> աուդիո ֆայլ աղբարկղ</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Այս աուդիո ֆայլերն ընդմիշտ կջնջվեն <xliff:g id="DURATION_1">^3</xliff:g> օրից</item>
-      <item quantity="other">Այս աուդիո ֆայլերն ընդմիշտ կջնջվեն <xliff:g id="DURATION_1">^3</xliff:g> օրից</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին տեղափոխել <xliff:g id="COUNT">^2</xliff:g> տեսանյութ աղբարկղ</item>
       <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին տեղափոխել <xliff:g id="COUNT">^2</xliff:g> տեսանյութ աղբարկղ</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Այս տեսանյութերն ընդմիշտ կջնջվեն <xliff:g id="DURATION_1">^3</xliff:g> օրից</item>
-      <item quantity="other">Այս տեսանյութերն ընդմիշտ կջնջվեն <xliff:g id="DURATION_1">^3</xliff:g> օրից</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին տեղափոխել <xliff:g id="COUNT">^2</xliff:g> լուսանկար աղբարկղ</item>
       <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին տեղափոխել <xliff:g id="COUNT">^2</xliff:g> լուսանկար աղբարկղ</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Այս լուսանկարներն ընդմիշտ կջնջվեն <xliff:g id="DURATION_1">^3</xliff:g> օրից</item>
-      <item quantity="other">Այս լուսանկարներն ընդմիշտ կջնջվեն <xliff:g id="DURATION_1">^3</xliff:g> օրից</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին տեղափոխել <xliff:g id="COUNT">^2</xliff:g> տարր աղբարկղ</item>
       <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին տեղափոխել <xliff:g id="COUNT">^2</xliff:g> տարր աղբարկղ</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Այս տարրերն ընդմիշտ կջնջվեն <xliff:g id="DURATION_1">^3</xliff:g> օրից</item>
-      <item quantity="other">Այս տարրերն ընդմիշտ կջնջվեն <xliff:g id="DURATION_1">^3</xliff:g> օրից</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին վերականգնել<xliff:g id="COUNT">^2</xliff:g> աուդիո ֆայլ աղբարկղից</item>
+      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին վերականգնել<xliff:g id="COUNT">^2</xliff:g> աուդիո ֆայլ աղբարկղից</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Տեղափոխել աղբարկղ"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Չեղարկել"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին դուրս բերել <xliff:g id="COUNT">^2</xliff:g> աուդիո ֆայլ աղբարկղից</item>
-      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին դուրս բերել <xliff:g id="COUNT">^2</xliff:g> աուդիո ֆայլ աղբարկղից</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին վերականգնել <xliff:g id="COUNT">^2</xliff:g> տեսանյութ աղբարկղից</item>
+      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին վերականգնել <xliff:g id="COUNT">^2</xliff:g> տեսանյութ աղբարկղից</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին դուրս բերել <xliff:g id="COUNT">^2</xliff:g> տեսանյութ աղբարկղից</item>
-      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին դուրս բերել <xliff:g id="COUNT">^2</xliff:g> տեսանյութ աղբարկղից</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին վերականգնել <xliff:g id="COUNT">^2</xliff:g> լուսանկար աղբարկղից</item>
+      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին վերականգնել <xliff:g id="COUNT">^2</xliff:g> լուսանկար աղբարկղից</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին տեղափոխել <xliff:g id="COUNT">^2</xliff:g> լուսանկար աղբարկղից</item>
-      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին տեղափոխել <xliff:g id="COUNT">^2</xliff:g> լուսանկար աղբարկղից</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին վերականգնել <xliff:g id="COUNT">^2</xliff:g> տարր աղբարկղից</item>
+      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին վերականգնել <xliff:g id="COUNT">^2</xliff:g> տարր աղբարկղից</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին դուրս բերել <xliff:g id="COUNT">^2</xliff:g> տարր աղբարկղից</item>
-      <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին դուրս բերել <xliff:g id="COUNT">^2</xliff:g> տարր աղբարկղից</item>
-    </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Դուրս բերել աղբարկղից"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Չեղարկել"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին ջնջել <xliff:g id="COUNT">^2</xliff:g> աուդիո ֆայլ</item>
       <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին ջնջել <xliff:g id="COUNT">^2</xliff:g> աուդիո ֆայլ</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին ջնջել <xliff:g id="COUNT">^2</xliff:g> տեսանյութ</item>
       <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին ջնջել <xliff:g id="COUNT">^2</xliff:g> տեսանյութ</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին ջնջել <xliff:g id="COUNT">^2</xliff:g> լուսանկար</item>
       <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին ջնջել <xliff:g id="COUNT">^2</xliff:g> լուսանկար</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին ջնջել <xliff:g id="COUNT">^2</xliff:g> տարր</item>
       <item quantity="other">Թույլատրե՞լ <xliff:g id="APP_NAME_1">^1</xliff:g> հավելվածին ջնջել <xliff:g id="COUNT">^2</xliff:g> տարր</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Ջնջել"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Չեղարկել"</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 05705a6..42406d7 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Lanjutkan"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Izinkan"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Tolak"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Plus <xliff:g id="COUNT_1">^1</xliff:g> item tambahan</item>
       <item quantity="one">Plus <xliff:g id="COUNT_0">^1</xliff:g> item tambahan</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Hapus cache aplikasi dengan <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ingin menghapus beberapa file sementara. Jika diizinkan, penggunaan baterai atau data dapat meningkat."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Menghapus file aplikasi sementara"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ingin menghapus beberapa file sementara. Ini dapat meningkatkan penggunaan baterai atau data seluler."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Menghapus file aplikasi sementara…"</string>
+    <string name="clear" msgid="5524638938415865915">"Hapus"</string>
     <string name="allow" msgid="8885707816848569619">"Izinkan"</string>
     <string name="deny" msgid="6040983710442068936">"Tolak"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengubah <xliff:g id="COUNT">^2</xliff:g> file audio?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengubah file audio ini?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk mengubah <xliff:g id="COUNT">^2</xliff:g> file audio?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk mengubah file audio ini?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengubah <xliff:g id="COUNT">^2</xliff:g> video?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengubah video ini?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk mengubah <xliff:g id="COUNT">^2</xliff:g> video?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk mengubah video ini?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengubah <xliff:g id="COUNT">^2</xliff:g> foto?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengubah foto ini?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk mengubah <xliff:g id="COUNT">^2</xliff:g> foto?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk mengubah foto ini?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengubah <xliff:g id="COUNT">^2</xliff:g> item?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengubah item ini?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk mengubah <xliff:g id="COUNT">^2</xliff:g> item?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk mengubah item ini?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Ubah"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Batal"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> memindahkan <xliff:g id="COUNT">^2</xliff:g> file audio ke sampah?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> memindahkan file audio ini ke sampah?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk memindahkan <xliff:g id="COUNT">^2</xliff:g> file audio ke sampah?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk memindahkan file audio ini ke sampah?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">File audio ini akan dihapus permanen setelah <xliff:g id="DURATION_1">^3</xliff:g> hari</item>
-      <item quantity="one">File audio ini akan dihapus permanen setelah <xliff:g id="DURATION_0">^3</xliff:g> hari</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk memindahkan <xliff:g id="COUNT">^2</xliff:g> video ke sampah?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk memindahkan video ini ke sampah?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> memindahkan <xliff:g id="COUNT">^2</xliff:g> video ke sampah?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> memindahkan video ini ke sampah?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk memindahkan <xliff:g id="COUNT">^2</xliff:g> foto ke sampah?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk memindahkan foto ini ke sampah?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Video ini akan dihapus permanen setelah <xliff:g id="DURATION_1">^3</xliff:g> hari</item>
-      <item quantity="one">Video ini akan dihapus permanen setelah <xliff:g id="DURATION_0">^3</xliff:g> hari</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk memindahkan <xliff:g id="COUNT">^2</xliff:g> item ke sampah?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk memindahkan item ini ke sampah?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> memindahkan <xliff:g id="COUNT">^2</xliff:g> foto ke sampah?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> memindahkan foto ini ke sampah?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk mengeluarkan <xliff:g id="COUNT">^2</xliff:g> file audio dari sampah?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk mengeluarkan file audio ini dari sampah?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Foto ini akan dihapus permanen setelah <xliff:g id="DURATION_1">^3</xliff:g> hari</item>
-      <item quantity="one">Foto ini akan dihapus permanen setelah <xliff:g id="DURATION_0">^3</xliff:g> hari</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk mengeluarkan <xliff:g id="COUNT">^2</xliff:g> video dari sampah?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk mengeluarkan video ini dari sampah?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> memindahkan <xliff:g id="COUNT">^2</xliff:g> item ke sampah?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> memindahkan item ini ke sampah?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk mengeluarkan <xliff:g id="COUNT">^2</xliff:g> foto dari sampah?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk mengeluarkan foto ini dari sampah?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Item ini akan dihapus permanen setelah <xliff:g id="DURATION_1">^3</xliff:g> hari</item>
-      <item quantity="one">Item ini akan dihapus permanen setelah <xliff:g id="DURATION_0">^3</xliff:g> hari</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk mengeluarkan <xliff:g id="COUNT">^2</xliff:g> item dari sampah?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk mengeluarkan item ini dari sampah?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Pindahkan ke sampah"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Batal"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengeluarkan <xliff:g id="COUNT">^2</xliff:g> file audio dari sampah?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengeluarkan file audio ini dari sampah?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk menghapus <xliff:g id="COUNT">^2</xliff:g> file audio?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk menghapus file audio ini?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengeluarkan <xliff:g id="COUNT">^2</xliff:g> video dari sampah?</item>
-      <item quantity="one">izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengeluarkan video ini dari sampah?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk menghapus <xliff:g id="COUNT">^2</xliff:g> video?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk menghapus video ini?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengeluarkan <xliff:g id="COUNT">^2</xliff:g> foto dari sampah?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengeluarkan foto ini dari sampah?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk menghapus <xliff:g id="COUNT">^2</xliff:g> foto?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk menghapus foto ini?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengeluarkan <xliff:g id="COUNT">^2</xliff:g> item dari sampah?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengeluarkan item ini dari sampah?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> untuk menghapus <xliff:g id="COUNT">^2</xliff:g> item?</item>
+      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> untuk menghapus item ini?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Dipindahkan dari sampah"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Batal"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> menghapus <xliff:g id="COUNT">^2</xliff:g> file audio?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> menghapus file audio ini?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> menghapus <xliff:g id="COUNT">^2</xliff:g> video?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> menghapus video ini?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> menghapus <xliff:g id="COUNT">^2</xliff:g> foto?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> menghapus foto ini?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Izinkan <xliff:g id="APP_NAME_1">^1</xliff:g> menghapus <xliff:g id="COUNT">^2</xliff:g> item?</item>
-      <item quantity="one">Izinkan <xliff:g id="APP_NAME_0">^1</xliff:g> menghapus item ini?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Hapus"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Batal"</string>
 </resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 2ac0b25..fb7daa3 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Áfram"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Leyfa"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Hafna"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Auk <xliff:g id="COUNT_1">^1</xliff:g> atriðis til viðbótar</item>
       <item quantity="other">Auk <xliff:g id="COUNT_1">^1</xliff:g> atriða til viðbótar</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Hreinsa tímabundnar forritaskrár"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> vill fá að hreinsa sumar tímabundnar skrár. Þetta getur haft í för með sér aukna rafhlöðunotkun eða notkun farsímagagna."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Verið er að eyða tímabundnum forritaskrám…"</string>
+    <string name="clear" msgid="5524638938415865915">"Hreinsa"</string>
+    <string name="allow" msgid="8885707816848569619">"Leyfa"</string>
+    <string name="deny" msgid="6040983710442068936">"Hafna"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að breyta <xliff:g id="COUNT">^2</xliff:g> hljóðskrá?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að breyta <xliff:g id="COUNT">^2</xliff:g> hljóðskrám?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að breyta <xliff:g id="COUNT">^2</xliff:g> myndskeiði?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að breyta <xliff:g id="COUNT">^2</xliff:g> myndskeiðum?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að breyta <xliff:g id="COUNT">^2</xliff:g> mynd?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að breyta <xliff:g id="COUNT">^2</xliff:g> myndum?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að breyta <xliff:g id="COUNT">^2</xliff:g> atriði?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að breyta <xliff:g id="COUNT">^2</xliff:g> atriðum?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Breyta"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Hætta"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> hljóðskrá í ruslið?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> hljóðskrár í ruslið?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Þessum hljóðskrám verður eytt varanlega eftir <xliff:g id="DURATION_1">^3</xliff:g> dag</item>
-      <item quantity="other">Þessum hljóðskrám verður eytt varanlega eftir <xliff:g id="DURATION_1">^3</xliff:g> daga</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> myndskeið í ruslið?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> myndskeið í ruslið?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Þessum myndskeiðum verður eytt varanlega eftir <xliff:g id="DURATION_1">^3</xliff:g> dag</item>
-      <item quantity="other">Þessum myndskeiðum verður eytt varanlega eftir <xliff:g id="DURATION_1">^3</xliff:g> daga</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> mynd í ruslið?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> myndir í ruslið?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Þessum myndum verður eytt varanlega eftir <xliff:g id="DURATION_1">^3</xliff:g> dag</item>
-      <item quantity="other">Þessum myndum verður eytt varanlega eftir <xliff:g id="DURATION_1">^3</xliff:g> daga</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> atriði í ruslið?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> atriði í ruslið?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Þessum atriðum verður eytt varanlega eftir <xliff:g id="DURATION_1">^3</xliff:g> dag</item>
-      <item quantity="other">Þessum atriðum verður eytt varanlega eftir <xliff:g id="DURATION_1">^3</xliff:g> daga</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Færa í ruslið"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Hætta"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> hljóðskrá úr ruslinu?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> hljóðskrár úr ruslinu?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> myndskeið úr ruslinu?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> myndskeið úr ruslinu?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> mynd úr ruslinu?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> myndir úr ruslinu?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> atriði úr ruslinu?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að færa <xliff:g id="COUNT">^2</xliff:g> atriði úr ruslinu?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Færa úr rusli"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Hætta"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að eyða <xliff:g id="COUNT">^2</xliff:g> hljóðskrá?</item>
-      <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að eyða <xliff:g id="COUNT">^2</xliff:g> hljóðskrá?</item>
+      <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að eyða <xliff:g id="COUNT">^2</xliff:g> hljóðskrám?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að eyða <xliff:g id="COUNT">^2</xliff:g> myndskeiði?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að eyða <xliff:g id="COUNT">^2</xliff:g> myndskeiðum?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að eyða <xliff:g id="COUNT">^2</xliff:g> mynd?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að eyða <xliff:g id="COUNT">^2</xliff:g> myndum?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að eyða <xliff:g id="COUNT">^2</xliff:g> atriðum?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="one">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að eyða <xliff:g id="COUNT">^2</xliff:g> atriði?</item>
       <item quantity="other">Leyfa <xliff:g id="APP_NAME_1">^1</xliff:g> að eyða <xliff:g id="COUNT">^2</xliff:g> atriðum?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Eyða"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Hætta"</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index bb9f68b..9b5d598 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continua"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Consenti"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Rifiuta"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Più altri <xliff:g id="COUNT_1">^1</xliff:g> elementi</item>
       <item quantity="one">Più <xliff:g id="COUNT_0">^1</xliff:g> altro elemento</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di modificare <xliff:g id="COUNT">^2</xliff:g> file audio?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di modificare questo file audio?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Cancellare file temporanei delle app"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"L\'app <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> vorrebbe cancellare alcuni file temporanei. In tal caso potrebbe verificarsi un maggiore utilizzo della batteria o della rete dati."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Cancellazione dei file temporanei delle app…"</string>
+    <string name="clear" msgid="5524638938415865915">"Cancella"</string>
+    <string name="allow" msgid="8885707816848569619">"Consenti"</string>
+    <string name="deny" msgid="6040983710442068936">"Rifiuta"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di modificare <xliff:g id="COUNT">^2</xliff:g> file audio?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di modificare questo file audio?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di modificare <xliff:g id="COUNT">^2</xliff:g> video?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di modificare questo video?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di modificare <xliff:g id="COUNT">^2</xliff:g> video?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di modificare questo video?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di modificare <xliff:g id="COUNT">^2</xliff:g> foto?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di modificare questa foto?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di modificare <xliff:g id="COUNT">^2</xliff:g> foto?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di modificare questa foto?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di modificare <xliff:g id="COUNT">^2</xliff:g> elementi?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di modificare questo elemento?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di modificare <xliff:g id="COUNT">^2</xliff:g> elementi?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di modificare questo elemento?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Modifica"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Annulla"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> file audio nel cestino?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questo file audio nel cestino?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> file audio nel cestino?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questo file audio nel cestino?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Questi file audio verranno eliminati definitivamente dopo <xliff:g id="DURATION_1">^3</xliff:g> giorni</item>
-      <item quantity="one">Questo file audio verrà eliminato definitivamente dopo <xliff:g id="DURATION_0">^3</xliff:g> giorni</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> video nel cestino?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questo video nel cestino?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> video nel cestino?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questo video nel cestino?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> foto nel cestino?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questa foto nel cestino?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Questi video verranno eliminati definitivamente dopo <xliff:g id="DURATION_1">^3</xliff:g> giorni</item>
-      <item quantity="one">Questo video verrà eliminato definitivamente dopo <xliff:g id="DURATION_0">^3</xliff:g> giorni</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> elementi nel cestino?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questo elemento nel cestino?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> foto nel cestino?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questa foto nel cestino?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> file audio fuori dal cestino?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questo file audio fuori dal cestino?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Queste foto verranno eliminate definitivamente dopo <xliff:g id="DURATION_1">^3</xliff:g> giorni</item>
-      <item quantity="one">Questa foto verrà eliminata definitivamente dopo <xliff:g id="DURATION_0">^3</xliff:g> giorni</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> video fuori dal cestino?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questo video fuori dal cestino?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> elementi nel cestino?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questo elemento nel cestino?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> foto fuori dal cestino?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questa foto fuori dal dispositivo?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Questi elementi verranno eliminati definitivamente dopo <xliff:g id="DURATION_1">^3</xliff:g> giorni</item>
-      <item quantity="one">Questo elemento verrà eliminato definitivamente dopo <xliff:g id="DURATION_0">^3</xliff:g> giorni</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> elementi fuori dal cestino?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questo elemento fuori dal cestino?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Sposta nel cestino"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Annulla"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> file audio fuori dal cestino?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questo file audio fuori dal cestino?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di eliminare <xliff:g id="COUNT">^2</xliff:g> file audio?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di eliminare questo file audio?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> video fuori dal cestino?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questo video fuori dal cestino?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di eliminare <xliff:g id="COUNT">^2</xliff:g> video?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di eliminare questo video?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> foto fuori dal cestino?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questa foto fuori dal cestino?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di eliminare <xliff:g id="COUNT">^2</xliff:g> foto?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di eliminare questa foto?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di spostare <xliff:g id="COUNT">^2</xliff:g> elementi fuori dal cestino?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di spostare questo elemento fuori dal cestino?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di eliminare <xliff:g id="COUNT">^2</xliff:g> elementi?</item>
+      <item quantity="one">Consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di eliminare questo elemento?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Sposta fuori dal cestino"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Annulla"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di eliminare <xliff:g id="COUNT">^2</xliff:g> file audio?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di eliminare questo file audio?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di eliminare <xliff:g id="COUNT">^2</xliff:g> video?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di eliminare questo video?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di eliminare <xliff:g id="COUNT">^2</xliff:g> foto?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di eliminare questa foto?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Vuoi consentire all\'app <xliff:g id="APP_NAME_1">^1</xliff:g> di eliminare <xliff:g id="COUNT">^2</xliff:g> elementi?</item>
-      <item quantity="one">Vuoi consentire all\'app <xliff:g id="APP_NAME_0">^1</xliff:g> di eliminare questo elemento?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Elimina"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Annulla"</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index f1ce7cf..24f2c3a 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -29,147 +29,118 @@
     <string name="permission_required_action" msgid="706370952366113539">"המשך"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"כן, זה בסדר"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"אני לא מרשה"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="two">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="many">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="two">ועוד <xliff:g id="COUNT_1">^1</xliff:g> פריטים נוספים</item>
       <item quantity="many">ועוד <xliff:g id="COUNT_1">^1</xliff:g> פריטים נוספים</item>
       <item quantity="other">ועוד <xliff:g id="COUNT_1">^1</xliff:g> פריטים נוספים</item>
       <item quantity="one">ועוד פריט אחד נוסף (<xliff:g id="COUNT_0">^1</xliff:g>)</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"ניקוי קובצי אפליקציה זמניים"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"קיבלת בקשה מהאפליקציה <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> לניקוי של חלק מהקבצים הזמניים. הפעולה עשויה להגביר את השימוש בסוללה או בחבילת הגלישה."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"מתבצע ניקוי של קובצי אפליקציה זמניים…"</string>
+    <string name="clear" msgid="5524638938415865915">"ניקוי"</string>
+    <string name="allow" msgid="8885707816848569619">"אישור"</string>
+    <string name="deny" msgid="6040983710442068936">"דחייה"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> לשנות <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> לשנות <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> לשנות <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> לשנות את קובץ האודיו הזה?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> לשנות <xliff:g id="COUNT">^2</xliff:g> סרטונים?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> לשנות <xliff:g id="COUNT">^2</xliff:g> סרטונים?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> לשנות <xliff:g id="COUNT">^2</xliff:g> סרטונים?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> לשנות את הסרטון הזה?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> לשנות <xliff:g id="COUNT">^2</xliff:g> תמונות?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> לשנות <xliff:g id="COUNT">^2</xliff:g> תמונות?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> לשנות <xliff:g id="COUNT">^2</xliff:g> תמונות?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> לשנות את התמונה הזו?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> לשנות <xliff:g id="COUNT">^2</xliff:g> פריטים?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> לשנות <xliff:g id="COUNT">^2</xliff:g> פריטים?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> לשנות <xliff:g id="COUNT">^2</xliff:g> פריטים?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> לשנות את הפריט הזה?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"שינוי"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"ביטול"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו אל האשפה?</item>
-      <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו אל האשפה?</item>
-      <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו אל האשפה?</item>
-      <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> להעביר את קובץ האודיו הזה אל האשפה?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו לאשפה?</item>
+      <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו לאשפה?</item>
+      <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו לאשפה?</item>
+      <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> להעביר את קובץ האודיו הזה לאשפה?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="two">קובצי אודיו אלה יימחקו באופן סופי לאחר <xliff:g id="DURATION_1">^3</xliff:g> ימים</item>
-      <item quantity="many">קובצי אודיו אלה יימחקו באופן סופי לאחר <xliff:g id="DURATION_1">^3</xliff:g> ימים</item>
-      <item quantity="other">קובצי אודיו אלה יימחקו באופן סופי לאחר <xliff:g id="DURATION_1">^3</xliff:g> ימים</item>
-      <item quantity="one">קובץ אודיו זה יימחק באופן סופי לאחר <xliff:g id="DURATION_0">^3</xliff:g> ימים</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> סרטונים לאשפה?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> סרטונים לאשפה?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> סרטונים לאשפה?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> להעביר את הסרטון הזה לאשפה?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="two">הסרטונים האלה יימחקו באופן סופי לאחר <xliff:g id="DURATION_1">^3</xliff:g> ימים</item>
-      <item quantity="many">הסרטונים האלה יימחקו באופן סופי לאחר <xliff:g id="DURATION_1">^3</xliff:g> ימים</item>
-      <item quantity="other">הסרטונים האלה יימחקו באופן סופי לאחר <xliff:g id="DURATION_1">^3</xliff:g> ימים</item>
-      <item quantity="one">הסרטון הזה יימחק באופן סופי לאחר <xliff:g id="DURATION_0">^3</xliff:g> ימים</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="two">לאפשר לאפליקציה<xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> תמונות לאשפה?</item>
-      <item quantity="many">לאפשר לאפליקציה<xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> תמונות לאשפה?</item>
-      <item quantity="other">לאפשר לאפליקציה<xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> תמונות לאשפה?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> תמונות לאשפה?</item>
+      <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> תמונות לאשפה?</item>
+      <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> תמונות לאשפה?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> להעביר את התמונה הזו לאשפה?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="two">תמונות אלה יימחקו באופן סופי לאחר <xliff:g id="DURATION_1">^3</xliff:g> ימים</item>
-      <item quantity="many">תמונות אלה יימחקו באופן סופי לאחר <xliff:g id="DURATION_1">^3</xliff:g> ימים</item>
-      <item quantity="other">תמונות אלה יימחקו באופן סופי לאחר <xliff:g id="DURATION_1">^3</xliff:g> ימים</item>
-      <item quantity="one">תמונה זו תימחק באופן סופי לאחר <xliff:g id="DURATION_0">^3</xliff:g> ימים</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> פריטים לאשפה?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> פריטים לאשפה?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להעביר <xliff:g id="COUNT">^2</xliff:g> פריטים לאשפה?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> להעביר את הפריט הזה לאשפה?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="two">פריטים אלה יימחקו באופן סופי לאחר <xliff:g id="DURATION_1">^3</xliff:g> ימים</item>
-      <item quantity="many">פריטים אלה יימחקו באופן סופי לאחר <xliff:g id="DURATION_1">^3</xliff:g> ימים</item>
-      <item quantity="other">פריטים אלה יימחקו באופן סופי לאחר <xliff:g id="DURATION_1">^3</xliff:g> ימים</item>
-      <item quantity="one">פריט זה יימחק באופן סופי לאחר <xliff:g id="DURATION_0">^3</xliff:g> ימים</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"העברה לאשפה"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"ביטול"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להוציא <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו מהאשפה?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להוציא <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו מהאשפה?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להוציא <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו מהאשפה?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> להוציא את קובץ האודיו הזה מהאשפה?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להוציא <xliff:g id="COUNT">^2</xliff:g> סרטונים מהאשפה?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להוציא <xliff:g id="COUNT">^2</xliff:g> סרטונים מהאשפה?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להוציא <xliff:g id="COUNT">^2</xliff:g> סרטונים מהאשפה?</item>
-      <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> את הסרטון הזה מהאשפה?</item>
+      <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> להוציא את הסרטון הזה מהאשפה?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להוציא <xliff:g id="COUNT">^2</xliff:g> תמונות מהאשפה?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להוציא <xliff:g id="COUNT">^2</xliff:g> תמונות מהאשפה?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להוציא <xliff:g id="COUNT">^2</xliff:g> תמונות מהאשפה?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> להוציא את התמונה הזו מהאשפה?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להוציא <xliff:g id="COUNT">^2</xliff:g> פריטים מהאשפה?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להוציא <xliff:g id="COUNT">^2</xliff:g> פריטים מהאשפה?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> להוציא <xliff:g id="COUNT">^2</xliff:g> פריטים מהאשפה?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> להוציא את הפריט הזה מהאשפה?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"שחזור מהאשפה"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"ביטול"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> למחוק <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> למחוק <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> למחוק <xliff:g id="COUNT">^2</xliff:g> קובצי אודיו?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> למחוק את קובץ האודיו הזה?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> למחוק <xliff:g id="COUNT">^2</xliff:g> סרטונים?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> למחוק <xliff:g id="COUNT">^2</xliff:g> סרטונים?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> למחוק <xliff:g id="COUNT">^2</xliff:g> סרטונים?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> למחוק את הסרטון הזה?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> למחוק <xliff:g id="COUNT">^2</xliff:g> תמונות?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> למחוק <xliff:g id="COUNT">^2</xliff:g> תמונות?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> למחוק <xliff:g id="COUNT">^2</xliff:g> תמונות?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> למחוק את התמונה הזו?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="two">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> למחוק <xliff:g id="COUNT">^2</xliff:g> פריטים?</item>
       <item quantity="many">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> למחוק <xliff:g id="COUNT">^2</xliff:g> פריטים?</item>
       <item quantity="other">לאפשר לאפליקציה <xliff:g id="APP_NAME_1">^1</xliff:g> למחוק <xliff:g id="COUNT">^2</xliff:g> פריטים?</item>
       <item quantity="one">לאפשר לאפליקציה <xliff:g id="APP_NAME_0">^1</xliff:g> למחוק את הפריט הזה?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"מחיקה"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"ביטול"</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index cd72f53..a7795b9 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"続行"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"許可"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"許可しない"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">他 <xliff:g id="COUNT_1">^1</xliff:g> 件</item>
+      <item quantity="one">他 <xliff:g id="COUNT_0">^1</xliff:g> 件</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">他 <xliff:g id="COUNT_1">^1</xliff:g> 件の項目</item>
       <item quantity="one">他 <xliff:g id="COUNT_0">^1</xliff:g> 件の項目</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>でアプリのキャッシュを削除しますか?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>が一部の一時ファイルを削除する権限を求めています。許可すると、電池やデータの使用量が増加することがあります。"</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"アプリの一時ファイルの削除"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>が一部の一時ファイルを削除する権限を求めています。この処理により、電池やモバイルデータの使用量が増えることがあります。"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"アプリの一時ファイルを削除しています…"</string>
+    <string name="clear" msgid="5524638938415865915">"削除"</string>
     <string name="allow" msgid="8885707816848569619">"許可"</string>
     <string name="deny" msgid="6040983710442068936">"許可しない"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 件の音声ファイルの変更を <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
       <item quantity="one">この音声ファイルの変更を <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 本の動画の変更を <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
       <item quantity="one">この動画の変更を <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 枚の写真の変更を <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
       <item quantity="one">この写真の変更を <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 件の項目の変更を <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
-      <item quantity="one">この項目の変更を <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 件のアイテムの変更を <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
+      <item quantity="one">このアイテムの変更を <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"変更"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"キャンセル"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 件の音声ファイルをゴミ箱に移動することを <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
       <item quantity="one">この音声ファイルをゴミ箱に移動することを <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">これらの音声ファイルは <xliff:g id="DURATION_1">^3</xliff:g> 日後に完全に削除されます</item>
-      <item quantity="one">この音声ファイルは <xliff:g id="DURATION_0">^3</xliff:g> 日後に完全に削除されます</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 本の動画をゴミ箱に移動することを <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
       <item quantity="one">この動画をゴミ箱に移動することを <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">これらの動画は <xliff:g id="DURATION_1">^3</xliff:g> 日後に完全に削除されます</item>
-      <item quantity="one">この動画は <xliff:g id="DURATION_0">^3</xliff:g> 日後に完全に削除されます</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 枚の写真をゴミ箱に移動することを <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
       <item quantity="one">この写真をゴミ箱に移動することを <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">これらの写真は <xliff:g id="DURATION_1">^3</xliff:g> 日後に完全に削除されます</item>
-      <item quantity="one">この写真は <xliff:g id="DURATION_0">^3</xliff:g> 日後に完全に削除されます</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 件のアイテムをゴミ箱に移動することを <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
+      <item quantity="one">このアイテムをゴミ箱に移動することを <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 件の項目をゴミ箱に移動することを <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
-      <item quantity="one">この項目をゴミ箱に移動することを <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
-    </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">これらの項目は <xliff:g id="DURATION_1">^3</xliff:g> 日後に完全に削除されます</item>
-      <item quantity="one">この項目は <xliff:g id="DURATION_0">^3</xliff:g> 日後に完全に削除されます</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ゴミ箱に移動"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"キャンセル"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 件の音声ファイルをゴミ箱から移動することを <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
       <item quantity="one">この音声ファイルをゴミ箱から移動することを <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 本の動画をゴミ箱から移動することを <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
       <item quantity="one">この動画をゴミ箱から移動することを <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 枚の写真をゴミ箱から移動することを <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
       <item quantity="one">この写真をゴミ箱から移動することを <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 件の項目をゴミ箱から移動することを <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
-      <item quantity="one">この項目をゴミ箱から移動することを <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 件のアイテムをゴミ箱から移動することを <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
+      <item quantity="one">このアイテムをゴミ箱から移動することを <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ゴミ箱から移動"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"キャンセル"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 件の音声ファイルの削除を <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
       <item quantity="one">この音声ファイルの削除を <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 本の動画の削除を <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
       <item quantity="one">この動画の削除を <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 枚の写真の削除を <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
       <item quantity="one">この写真の削除を <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 件の項目の削除を <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
-      <item quantity="one">この項目の削除を <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> 件のアイテムの削除を <xliff:g id="APP_NAME_1">^1</xliff:g> に許可しますか?</item>
+      <item quantity="one">このアイテムの削除を <xliff:g id="APP_NAME_0">^1</xliff:g> に許可しますか?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"削除"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"キャンセル"</string>
 </resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index c74d862..420e846 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"გაგრძელება"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"დაშვება"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"უარყოფა"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">და კიდევ <xliff:g id="COUNT_1">^1</xliff:g> დამატებითი ერთეული</item>
       <item quantity="one">და კიდევ <xliff:g id="COUNT_0">^1</xliff:g> დამატებითი ერთეული</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"გასუფთავდეს აპის დროებითი ფაილები?"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>-ს სურს, გაასუფთაოს დროებითი ფაილები. ამან შეიძლება ზოგიერთი ბატარეის ან მობილური ინტერნეტის გაზრდილი მოხმარება გამოიწვიოს."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"მიმდინარეობს აპის დროებითი ფაილების გასუფთავება…"</string>
+    <string name="clear" msgid="5524638938415865915">"გასუფთავება"</string>
+    <string name="allow" msgid="8885707816848569619">"დაშვება"</string>
+    <string name="deny" msgid="6040983710442068936">"უარყოფა"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, შეცვალოს <xliff:g id="COUNT">^2</xliff:g> აუდიოფაილი?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, შეცვალოს ეს აუდიოფაილი?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, შეცვალოს <xliff:g id="COUNT">^2</xliff:g> ვიდეო?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, შეცვალოს ეს ვიდეო?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, შეცვალოს <xliff:g id="COUNT">^2</xliff:g> ფოტო?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, შეცვალოს ეს ფოტო?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, შეცვალოს <xliff:g id="COUNT">^2</xliff:g> ერთეული?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, შეცვალოს ეს ერთეული?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"შეცვლა"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"გაუქმება"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, გადაიტანოს <xliff:g id="COUNT">^2</xliff:g> აუდიოფაილი წაშლილებში?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, გადაიტანოს ეს აუდიოფაილი წაშლილებში?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">ეს აუდიოფაილები <xliff:g id="DURATION_1">^3</xliff:g> დღეში სამუდამოდ წაიშლება</item>
-      <item quantity="one">ეს აუდიოფაილი <xliff:g id="DURATION_0">^3</xliff:g> დღეში სამუდამოდ წაიშლება</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, გადაიტანოს <xliff:g id="COUNT">^2</xliff:g> ვიდეო წაშლილებში?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, გადაიტანოს ეს ვიდეო წაშლილებში?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">ეს ვიდეოები <xliff:g id="DURATION_1">^3</xliff:g> დღეში სამუდამოდ წაიშლება</item>
-      <item quantity="one">ეს ვიდეო <xliff:g id="DURATION_0">^3</xliff:g> დღეში სამუდამოდ წაიშლება</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, გადაიტანოს <xliff:g id="COUNT">^2</xliff:g> ფოტო წაშლილებში?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, გადაიტანოს ეს ფოტო წაშლილებში?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">ეს ფოტოები <xliff:g id="DURATION_1">^3</xliff:g> დღეში სამუდამოდ წაიშლება</item>
-      <item quantity="one">ეს ფოტო <xliff:g id="DURATION_0">^3</xliff:g> დღეში სამუდამოდ წაიშლება</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, გადაიტანოს <xliff:g id="COUNT">^2</xliff:g> ერთეული წაშლილებში?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, გადაიტანოს ეს ერთეული წაშლილებში?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">ეს ერთეულები <xliff:g id="DURATION_1">^3</xliff:g> დღეში სამუდამოდ წაიშლება</item>
-      <item quantity="one">ეს ერთეული <xliff:g id="DURATION_0">^3</xliff:g> დღეში სამუდამოდ წაიშლება</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"წაშლილებში გადატანა"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"გაუქმება"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, გადმოიტანოს <xliff:g id="COUNT">^2</xliff:g> აუდიოფაილი წაშლილებიდან?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, გადმოიტანოს ეს აუდიოფაილი წაშლილებიდან?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, გადმოიტანოს <xliff:g id="COUNT">^2</xliff:g> ვიდეო წაშლილებიდან?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, გადმოიტანოს ეს ვიდეო წაშლილებიდან?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, გადმოიტანოს <xliff:g id="COUNT">^2</xliff:g> ფოტო წაშლილებიდან?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, გადმოიტანოს ეს ფოტო წაშლილებიდან?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, გადმოიტანოს <xliff:g id="COUNT">^2</xliff:g> ერთეული წაშლილებიდან?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, გადმოიტანოს ეს ერთეული წაშლილებიდან?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"წაშლილებიდან გადმოტანა"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"გაუქმება"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, წაშალოს <xliff:g id="COUNT">^2</xliff:g> აუდიოფაილი?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, წაშალოს ეს აუდიოფაილი?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, წაშალოს <xliff:g id="COUNT">^2</xliff:g> ვიდეო?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, წაშალოს ეს ვიდეო?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, წაშალოს <xliff:g id="COUNT">^2</xliff:g> ფოტო?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, წაშალოს ეს ფოტო?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other">აძლევთ უფლებას <xliff:g id="APP_NAME_1">^1</xliff:g>-ს, წაშალოს <xliff:g id="COUNT">^2</xliff:g> ერთეული?</item>
       <item quantity="one">აძლევთ უფლებას <xliff:g id="APP_NAME_0">^1</xliff:g>-ს, წაშალოს ეს ერთეული?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"წაშლა"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"გაუქმება"</string>
 </resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index dae5bbc..1b899b2 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Жалғастыру"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Рұқсат беру"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Тыйым салу"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Тағы <xliff:g id="COUNT_1">^1</xliff:g> элемент</item>
       <item quantity="one">Тағы <xliff:g id="COUNT_0">^1</xliff:g> элемент</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Қолданбаның уақытша файлдарын өшіру"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> кейбір уақытша файлдарды өшіргісі келеді. Соған байланысты батарея тез отыруы немесе мобильдік интернет трафигі көп кетуі мүмкін."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Қолданбаның уақытша файлдары өшірілуде…"</string>
+    <string name="clear" msgid="5524638938415865915">"Өшіру"</string>
+    <string name="allow" msgid="8885707816848569619">"Рұқсат ету"</string>
+    <string name="deny" msgid="6040983710442068936">"Тыйым салу"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> аудиофайлды өзгертуге рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы аудиофайлды өзгертуге рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> бейнені өзгертуге рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы бейнені өзгертуге рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> фотосуретті өзгертуге рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы фотосуретті өзгертуге рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> элементті өзгертуге рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы элементті өзгертуге рұқсат етесіз бе?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Өзгерту"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Бас тарту"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> аудиофайлды себетке жіберуге рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы аудиофайлды себетке жіберуге рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Бұл аудиофайлдар <xliff:g id="DURATION_1">^3</xliff:g> күннен кейін біржола жойылады.</item>
-      <item quantity="one">Бұл аудиофайл <xliff:g id="DURATION_0">^3</xliff:g> күннен кейін біржола жойылады.</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> бейнені себетке жіберуге рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы бейнені себетке жіберуге рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Бұл бейнелер <xliff:g id="DURATION_1">^3</xliff:g> күннен кейін біржола жойылады.</item>
-      <item quantity="one">Бұл бейне <xliff:g id="DURATION_0">^3</xliff:g> күннен кейін біржола жойылады.</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> фотосуретті себетке жіберуге рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы фотосуретті себетке жіберуге рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Бұл фотосуреттер <xliff:g id="DURATION_1">^3</xliff:g> күннен кейін біржола жойылады.</item>
-      <item quantity="one">Бұл фотосурет <xliff:g id="DURATION_0">^3</xliff:g> күннен кейін біржола жойылады.</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> элементті себетке жіберуге рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы элементті себетке жіберуге рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Бұл элементтер <xliff:g id="DURATION_1">^3</xliff:g> күннен кейін біржола жойылады.</item>
-      <item quantity="one">Бұл элемент <xliff:g id="DURATION_0">^3</xliff:g> күннен кейін біржола жойылады.</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Себетке жіберу"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Бас тарту"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> аудиофайлды себеттен шығаруға рұқсат етесіз бе?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы аудиофайлды себеттен шығаруға рұқсат етесіз бе?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына бұл аудиофайлды себеттен шығаруға рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> бейнені себеттен шығаруға рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы бейнені себеттен шығаруға рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> фотосуретті себеттен шығаруға рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы фотосуретті себеттен шығаруға рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> элементті себеттен шығаруға рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы элементті себеттен шығаруға рұқсат етесіз бе?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Себеттен шығару"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Бас тарту"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> аудиофайлды жоюға рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы аудиофайлды жоюға рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> бейнені жоюға рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы бейнені жоюға рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> фотосуретті жоюға рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы фотосуретті жоюға рұқсат етесіз бе?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> қолданбасына <xliff:g id="COUNT">^2</xliff:g> элементті жоюға рұқсат етесіз бе?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> қолданбасына осы элементті жоюға рұқсат етесіз бе?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Жою"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Бас тарту"</string>
 </resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 336e0a2..b4a930f 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"បន្ត"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"អនុញ្ញាត"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"បដិសេធ"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">បូករួម​ទាំង​ធាតុ <xliff:g id="COUNT_1">^1</xliff:g> បន្ថែម​ទៀត</item>
       <item quantity="one">បូករួម​ទាំង​ធាតុ <xliff:g id="COUNT_0">^1</xliff:g> បន្ថែម​ទៀត</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ប្ដូរ​ឯកសារ​សំឡេង <xliff:g id="COUNT">^2</xliff:g> ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ប្ដូរ​ឯកសារ​សំឡេង​នេះ​ឬ​?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"សម្អាត​ឯកសារ​កម្មវិធី​បណ្ដោះអាសន្ន"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ចង់​សម្អាត​ឯកសារ​បណ្ដោះអាសន្ន​មួយចំនួន។ សកម្មភាពនេះ​អាច​បណ្ដាលឱ្យ​ការប្រើប្រាស់​ថ្ម ឬ​ទិន្នន័យ​ទូរសព្ទចល័ត​មានការកើនឡើង​។"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"កំពុងសម្អាត​ឯកសារ​កម្មវិធី​បណ្ដោះអាសន្ន…"</string>
+    <string name="clear" msgid="5524638938415865915">"សម្អាត"</string>
+    <string name="allow" msgid="8885707816848569619">"អនុញ្ញាត"</string>
+    <string name="deny" msgid="6040983710442068936">"បដិសេធ"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> កែ​ឯកសារសំឡេង <xliff:g id="COUNT">^2</xliff:g> ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> កែ​ឯកសារសំឡេង​នេះ​ឬ?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ប្ដូរ​វីដេអូ <xliff:g id="COUNT">^2</xliff:g> ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ប្ដូរ​វីដេអូ​នេះ​ឬ​?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> កែ​វីដេអូ <xliff:g id="COUNT">^2</xliff:g> ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> កែ​វីដេអូ​នេះ​ឬ?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ប្ដូរ​រូបថត <xliff:g id="COUNT">^2</xliff:g> សន្លឹក​ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ប្ដូរ​រូបថត​នេះ​ឬ​?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> កែ​រូបថត <xliff:g id="COUNT">^2</xliff:g> សន្លឹកឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> កែ​រូបថត​នេះ​ឬ?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ប្ដូរ​ធាតុ <xliff:g id="COUNT">^2</xliff:g> ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ប្ដូរ​ធាតុ​នេះ​ឬ​?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> កែ​ធាតុ <xliff:g id="COUNT">^2</xliff:g> ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> កែ​ធាតុ​នេះ​ឬ?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"ប្ដូរ"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"បោះបង់"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​ឯកសារ​សំឡេង <xliff:g id="COUNT">^2</xliff:g> ទៅ​ធុងសំរាម​ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​ឯកសារ​សំឡេង​នេះ​ទៅ​ធុងសំរាម​ឬ​?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​ឯកសារ​សំឡេង <xliff:g id="COUNT">^2</xliff:g> ទៅ​ធុងសំរាម​ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​ឯកសារ​សំឡេង​នេះ​ទៅ​ធុងសំរាម​ឬ?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">ឯកសារ​សំឡេង​ទាំងនេះ​នឹង​ត្រូវ​លុប​ជា​អចិន្ត្រៃយ៍ បន្ទាប់ពី​រយៈពេល <xliff:g id="DURATION_1">^3</xliff:g> ថ្ងៃ</item>
-      <item quantity="one">ឯកសារ​សំឡេង​នេះ​នឹង​ត្រូវ​លុប​ជា​អចិន្ត្រៃយ៍ បន្ទាប់ពី​រយៈពេល <xliff:g id="DURATION_0">^3</xliff:g> ថ្ងៃ</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​វីដេអូ <xliff:g id="COUNT">^2</xliff:g> ទៅ​ធុងសំរាម​ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​វីដេអូ​នេះ​ទៅ​ធុងសំរាម​ឬ?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​វីដេអូ <xliff:g id="COUNT">^2</xliff:g> ទៅ​ធុងសំរាម​ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​វីដេអូ​នេះ​ទៅ​ធុងសំរាម​ឬ​?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​រូបថត <xliff:g id="COUNT">^2</xliff:g> សន្លឹកទៅ​ធុងសំរាម​ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​រូបថត​នេះ​ទៅ​ធុងសំរាម​ឬ?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">វីដេអូ​ទាំងនេះ​នឹង​ត្រូវ​លុប​ជា​អចិន្ត្រៃយ៍ បន្ទាប់ពី​រយៈពេល <xliff:g id="DURATION_1">^3</xliff:g> ថ្ងៃ</item>
-      <item quantity="one">វីដេអូ​នេះ​នឹង​ត្រូវ​លុប​ជា​អចិន្ត្រៃយ៍ បន្ទាប់ពី​រយៈពេល <xliff:g id="DURATION_0">^3</xliff:g> ថ្ងៃ</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​ធាតុ <xliff:g id="COUNT">^2</xliff:g> ទៅ​ធុងសំរាម​ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​ធាតុ​នេះ​ទៅ​ធុងសំរាម​ឬ?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​រូបថត <xliff:g id="COUNT">^2</xliff:g> សន្លឹក​ទៅ​ធុងសំរាម​ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​រូបថត​នេះ​ទៅ​ធុងសំរាម​ឬ​?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​ឯកសារ​សំឡេង <xliff:g id="COUNT">^2</xliff:g> ចេញពី​ធុងសំរាម​ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​ឯកសារ​សំឡេង​នេះ​ចេញពី​ធុងសំរាម​ឬ?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">រូបថត​ទាំងនេះ​នឹង​ត្រូវ​លុប​ជា​អចិន្ត្រៃយ៍ បន្ទាប់ពី​រយៈពេល <xliff:g id="DURATION_1">^3</xliff:g> ថ្ងៃ</item>
-      <item quantity="one">រូបថត​នេះ​នឹង​ត្រូវ​លុប​ជា​អចិន្ត្រៃយ៍ បន្ទាប់ពី​រយៈពេល <xliff:g id="DURATION_0">^3</xliff:g> ថ្ងៃ</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​វីដេអូ <xliff:g id="COUNT">^2</xliff:g> ចេញពី​ធុងសំរាម​ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​វីដេអូនេះ​ចេញពី​ធុងសំរាម​ឬ?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​ធាតុ <xliff:g id="COUNT">^2</xliff:g> ទៅ​ធុងសំរាម​ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​ធាតុ​នេះ​ទៅ​ធុងសំរាម​ឬ​?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​រូបថត <xliff:g id="COUNT">^2</xliff:g> សន្លឹកចេញពី​ធុងសំរាម​ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​រូបថត​នេះ​ចេញពី​ធុងសំរាម​ឬ?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">ធាតុ​ទាំងនេះ​នឹង​ត្រូវ​លុប​ជា​អចិន្ត្រៃយ៍ បន្ទាប់ពី​រយៈពេល <xliff:g id="DURATION_1">^3</xliff:g> ថ្ងៃ</item>
-      <item quantity="one">ធាតុ​នេះ​នឹង​ត្រូវ​លុប​ជា​អចិន្ត្រៃយ៍ បន្ទាប់ពី​រយៈពេល <xliff:g id="DURATION_0">^3</xliff:g> ថ្ងៃ</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​ធាតុ <xliff:g id="COUNT">^2</xliff:g> ចេញពី​ធុងសំរាម​ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​ធាតុ​នេះ​ចេញពី​ធុងសំរាម​ឬ?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ផ្លាស់ទី​ទៅ​ធុងសំរាម"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"បោះបង់"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​ឯកសារ​សំឡេង <xliff:g id="COUNT">^2</xliff:g> ចេញពី​ធុងសំរាម​ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​ឯកសារ​សំឡេង​នេះ​ចេញពី​ធុងសំរាម​ឬ​?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> លុប​ឯកសារ​សំឡេង <xliff:g id="COUNT">^2</xliff:g> ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> លុប​ឯកសារ​សំឡេង​នេះ​ឬ?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​វីដេអូ <xliff:g id="COUNT">^2</xliff:g> ចេញពី​ធុងសំរាម​ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​វីដេអូ​នេះ​ចេញពី​ធុងសំរាម​ឬ​?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> លុប​វីដេអូ <xliff:g id="COUNT">^2</xliff:g> ឬ?</item>
+      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> លុប​វីដេអូ​នេះ​ឬ?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​រូបថត <xliff:g id="COUNT">^2</xliff:g> សន្លឹក​ចេញពី​ធុងសំរាម​ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​រូបថត​នេះ​ចេញពី​ធុងសំរាម​ឬ​?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> លុប​រូបថត <xliff:g id="COUNT">^2</xliff:g> សន្លឹកឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> លុប​រូបថត​នេះ​ឬ?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> ផ្លាស់ទី​ធាតុ <xliff:g id="COUNT">^2</xliff:g> ចេញពី​ធុងសំរាម​ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> ផ្លាស់ទី​ធាតុ​នេះ​ចេញពី​ធុងសំរាម​ឬ​?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> លុប​ធាតុ <xliff:g id="COUNT">^2</xliff:g> ឬ?</item>
+      <item quantity="one">អនុញ្ញាតឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> លុប​ធាតុ​នេះ​ឬ?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ផ្លាស់ទី​ចេញពី​ធុងសំរាម"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"បោះបង់"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> លុប​ឯកសារ​សំឡេង <xliff:g id="COUNT">^2</xliff:g> ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> លុប​ឯកសារ​សំឡេង​នេះ​ឬ​?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> លុប​វីដេអូ <xliff:g id="COUNT">^2</xliff:g> ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> លុប​វីដេអូ​នេះ​ឬ​?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> លុប​រូបថត <xliff:g id="COUNT">^2</xliff:g> សន្លឹក​ឬ​?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> លុប​រូបថត​នេះ​ឬ​?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_1">^1</xliff:g> លុប​ធាតុ <xliff:g id="COUNT">^2</xliff:g> ឬ?</item>
-      <item quantity="one">អនុញ្ញាត​ឱ្យ <xliff:g id="APP_NAME_0">^1</xliff:g> លុប​ធាតុ​នេះ​ឬ​?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"លុប"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"បោះបង់"</string>
 </resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 570d8ee..99c1788 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -21,7 +21,7 @@
     <string name="app_label" msgid="9035307001052716210">"ಮಾಧ್ಯಮ ಸಂಗ್ರಹಣೆ"</string>
     <string name="artist_label" msgid="8105600993099120273">"ಕಲಾವಿದರು"</string>
     <string name="unknown" msgid="2059049215682829375">"ಅಪರಿಚಿತ"</string>
-    <string name="root_images" msgid="5861633549189045666">"ಚಿತ್ರಗಳು"</string>
+    <string name="root_images" msgid="5861633549189045666">"Images"</string>
     <string name="root_videos" msgid="8792703517064649453">"ವೀಡಿಯೊಗಳು"</string>
     <string name="root_audio" msgid="3505830755201326018">"ಆಡಿಯೊ"</string>
     <string name="root_documents" msgid="3829103301363849237">"ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳು"</string>
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"ಮುಂದುವರಿಸಿ"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"ಅನುಮತಿಸಿ"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"ನಿರಾಕರಿಸಿ"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">ಜೊತೆಗೆ <xliff:g id="COUNT_1">^1</xliff:g> ಹೆಚ್ಚುವರಿ ಐಟಂಗಳು</item>
       <item quantity="other">ಜೊತೆಗೆ <xliff:g id="COUNT_1">^1</xliff:g> ಹೆಚ್ಚುವರಿ ಐಟಂಗಳು</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"ತಾತ್ಕಾಲಿಕ ಆ್ಯಪ್ ಫೈಲ್‌ಗಳನ್ನು ತೆರವುಗೊಳಿಸಿ"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>, ಕೆಲವು ತಾತ್ಕಾಲಿಕ ಫೈಲ್‌ಗಳನ್ನು ತೆರವುಗೊಳಿಸಲು ಬಯಸುತ್ತಿದೆ. ಬ್ಯಾಟರಿ ಅಥವಾ ಸೆಲ್ಯುಲರ್ ಡೇಟಾ ಹೆಚ್ಚು ಬಳಕೆಯಾಗಲು ಇದು ಕಾರಣವಾಗಬಹುದು."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"ತಾತ್ಕಾಲಿಕ ಆ್ಯಪ್ ಫೈಲ್‌ಗಳನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತಿದೆ…"</string>
+    <string name="clear" msgid="5524638938415865915">"ತೆರವುಗೊಳಿಸಿ"</string>
+    <string name="allow" msgid="8885707816848569619">"ಅನುಮತಿಸಿ"</string>
+    <string name="deny" msgid="6040983710442068936">"ನಿರಾಕರಿಸಿ"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಬದಲಾಯಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಬದಲಾಯಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಬದಲಾಯಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಬದಲಾಯಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಬದಲಾಯಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಬದಲಾಯಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"ಬದಲಾಯಿಸಿ"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"ರದ್ದುಗೊಳಿಸಿ"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">ಈ ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು <xliff:g id="DURATION_1">^3</xliff:g> ದಿನಗಳ ನಂತರ ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ</item>
-      <item quantity="other">ಈ ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು <xliff:g id="DURATION_1">^3</xliff:g> ದಿನಗಳ ನಂತರ ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">ಈ ವೀಡಿಯೊಗಳನ್ನು <xliff:g id="DURATION_1">^3</xliff:g> ದಿನಗಳ ನಂತರ ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ</item>
-      <item quantity="other">ಈ ವೀಡಿಯೊಗಳನ್ನು <xliff:g id="DURATION_1">^3</xliff:g> ದಿನಗಳ ನಂತರ ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">ಈ ಫೋಟೋಗಳನ್ನು <xliff:g id="DURATION_1">^3</xliff:g> ದಿನಗಳ ನಂತರ ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ</item>
-      <item quantity="other">ಈ ಫೋಟೋಗಳನ್ನು <xliff:g id="DURATION_1">^3</xliff:g> ದಿನಗಳ ನಂತರ ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">ಈ ಐಟಂಗಳನ್ನು <xliff:g id="DURATION_1">^3</xliff:g> ದಿನಗಳ ನಂತರ ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ</item>
-      <item quantity="other">ಈ ಐಟಂಗಳನ್ನು <xliff:g id="DURATION_1">^3</xliff:g> ದಿನಗಳ ನಂತರ ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ಅನುಪಯುಕ್ತಕ್ಕೆ ಸರಿಸಿ"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"ರದ್ದುಗೊಳಿಸಿ"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಅಳಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು ಅಳಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಅಳಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು ಅಳಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಅಳಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
+      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು ಅಳಿಸಲು <xliff:g id="APP_NAME_1">^1</xliff:g> ಗೆ ಅನುಮತಿ ನೀಡಬೇಕೇ?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ಅನುಪಯುಕ್ತದಿಂದ ಹೊರಗೆ ಸರಿಸಿ"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"ರದ್ದುಗೊಳಿಸಿ"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು <xliff:g id="APP_NAME_1">^1</xliff:g> ಅಳಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಆಡಿಯೋ ಫೈಲ್‌ಗಳನ್ನು <xliff:g id="APP_NAME_1">^1</xliff:g> ಅಳಿಸುವುದೇ?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು <xliff:g id="APP_NAME_1">^1</xliff:g> ಅಳಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ವೀಡಿಯೊಗಳನ್ನು <xliff:g id="APP_NAME_1">^1</xliff:g> ಅಳಿಸುವುದೇ?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು <xliff:g id="APP_NAME_1">^1</xliff:g> ಅಳಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಫೋಟೋಗಳನ್ನು <xliff:g id="APP_NAME_1">^1</xliff:g> ಅಳಿಸುವುದೇ?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="one">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು <xliff:g id="APP_NAME_1">^1</xliff:g> ಅಳಿಸುವುದೇ?</item>
-      <item quantity="other">ಈ <xliff:g id="COUNT">^2</xliff:g> ಐಟಂಗಳನ್ನು <xliff:g id="APP_NAME_1">^1</xliff:g> ಅಳಿಸುವುದೇ?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"ಅಳಿಸಿ"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"ರದ್ದುಗೊಳಿಸಿ"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 1618e26..97fa4ec 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"계속"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"허용"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"거부"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">그 외 <xliff:g id="COUNT_1">^1</xliff:g>개</item>
+      <item quantity="one">그 외 <xliff:g id="COUNT_0">^1</xliff:g>개</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">그 외 항목 <xliff:g id="COUNT_1">^1</xliff:g>개</item>
       <item quantity="one">그 외 항목 <xliff:g id="COUNT_0">^1</xliff:g>개</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 오디오 파일 <xliff:g id="COUNT">^2</xliff:g>개를 변경하도록 허용하시겠습니까?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 오디오 파일을 변경하도록 허용하시겠습니까?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"임시 앱 파일 삭제"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>에서 일부 임시 파일을 삭제하려고 합니다. 이로 인해 배터리 또는 모바일 데이터 사용량이 늘어날 수 있습니다."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"임시 앱 파일 삭제 중…"</string>
+    <string name="clear" msgid="5524638938415865915">"삭제"</string>
+    <string name="allow" msgid="8885707816848569619">"허용"</string>
+    <string name="deny" msgid="6040983710442068936">"거부"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 오디오 파일 <xliff:g id="COUNT">^2</xliff:g>개를 수정하도록 허용하시겠습니까?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 오디오 파일을 수정하도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 동영상 <xliff:g id="COUNT">^2</xliff:g>개를 변경하도록 허용하시겠습니까?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 동영상을 변경하도록 허용하시겠습니까?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 동영상 <xliff:g id="COUNT">^2</xliff:g>개를 수정하도록 허용하시겠습니까?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 동영상을 수정하도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 사진 <xliff:g id="COUNT">^2</xliff:g>장을 변경하도록 허용하시겠습니까?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 사진을 변경하도록 허용하시겠습니까?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 사진 <xliff:g id="COUNT">^2</xliff:g>개를 수정하도록 허용하시겠습니까?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 사진을 수정하도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 항목 <xliff:g id="COUNT">^2</xliff:g>개를 변경하도록 허용하시겠습니까?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 항목을 변경하도록 허용하시겠습니까?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 항목 <xliff:g id="COUNT">^2</xliff:g>개를 수정하도록 허용하시겠습니까?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 항목을 수정하도록 허용하시겠습니까?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"변경"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"취소"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 오디오 파일 <xliff:g id="COUNT">^2</xliff:g>개를 휴지통으로 이동하도록 허용하시겠습니까</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 오디오 파일 <xliff:g id="COUNT">^2</xliff:g>개를 휴지통으로 이동하도록 허용하시겠습니까?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 오디오 파일을 휴지통으로 이동하도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">이 오디오 파일은 <xliff:g id="DURATION_1">^3</xliff:g>일 후 완전히 삭제됩니다.</item>
-      <item quantity="one">이 오디오 파일은 <xliff:g id="DURATION_0">^3</xliff:g>일 후 완전히 삭제됩니다.</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 동영상 <xliff:g id="COUNT">^2</xliff:g>개를 휴지통으로 이동하도록 허용하시겠습니까?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 동영상을 휴지통으로 이동하도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">이 동영상은 <xliff:g id="DURATION_1">^3</xliff:g>일 후 완전히 삭제됩니다.</item>
-      <item quantity="one">이 동영상은 <xliff:g id="DURATION_0">^3</xliff:g>일 후 완전히 삭제됩니다.</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 사진 <xliff:g id="COUNT">^2</xliff:g>장을 휴지통으로 이동하도록 허용하시겠습니까?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 사진 <xliff:g id="COUNT">^2</xliff:g>개를 휴지통으로 이동하도록 허용하시겠습니까?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 사진을 휴지통으로 이동하도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">이 사진은 <xliff:g id="DURATION_1">^3</xliff:g>일 후 완전히 삭제됩니다.</item>
-      <item quantity="one">이 사진은 <xliff:g id="DURATION_0">^3</xliff:g>일 후 완전히 삭제됩니다.</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 항목 <xliff:g id="COUNT">^2</xliff:g>개를 휴지통으로 이동하도록 허용하시겠습니까?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 항목을 휴지통으로 이동하도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">이 항목은 <xliff:g id="DURATION_1">^3</xliff:g>일 후 완전히 삭제됩니다.</item>
-      <item quantity="one">이 항목은 <xliff:g id="DURATION_0">^3</xliff:g>일 후 완전히 삭제됩니다.</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"휴지통으로 이동"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"취소"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 오디오 파일 <xliff:g id="COUNT">^2</xliff:g>개를 휴지통에서 꺼내도록 허용하시겠습니까?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 오디오 파일을 휴지통에서 꺼내도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 동영상 <xliff:g id="COUNT">^2</xliff:g>개를 휴지통에서 꺼내도록 허용하시겠습니까?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 동영상을 휴지통에서 꺼내도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 사진 <xliff:g id="COUNT">^2</xliff:g>장을 휴지통에서 꺼내도록 허용하시겠습니까?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 사진 <xliff:g id="COUNT">^2</xliff:g>개를 휴지통에서 꺼내도록 허용하시겠습니까?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 사진을 휴지통에서 꺼내도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 항목 <xliff:g id="COUNT">^2</xliff:g>개를 휴지통에서 꺼내도록 허용하시겠습니까?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 항목을 휴지통에서 꺼내도록 허용하시겠습니까?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"휴지통에서 꺼내기"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"취소"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 오디오 파일 <xliff:g id="COUNT">^2</xliff:g>개를 삭제하도록 허용하시겠습니까?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 오디오 파일을 삭제하도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 동영상 <xliff:g id="COUNT">^2</xliff:g>개를 삭제하도록 허용하시겠습니까?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 동영상을 삭제하도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 사진 <xliff:g id="COUNT">^2</xliff:g>장을 삭제하도록 허용하시겠습니까?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 사진 <xliff:g id="COUNT">^2</xliff:g>개를 삭제하도록 허용하시겠습니까?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 사진을 삭제하도록 허용하시겠습니까?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>에서 항목 <xliff:g id="COUNT">^2</xliff:g>개를 삭제하도록 허용하시겠습니까?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>에서 이 항목을 삭제하도록 허용하시겠습니까?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"삭제"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"취소"</string>
 </resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 246240a..6198dba 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Улантуу"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Уруксат берүү"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Тыюу салынат"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">дагы <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">дагы <xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Дагы <xliff:g id="COUNT_1">^1</xliff:g> нерсе</item>
       <item quantity="one">Дагы <xliff:g id="COUNT_0">^1</xliff:g> нерсе</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> аудио файлды өзгөртсүнбү?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул аудио файлды өзгөртсүнбү?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Колдонмодогу убактылуу файлдарды өчүрүү"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> айрым убактылуу файлдарды өчүргөнү жатат. Батарея же мобилдик Интернет өтө көп колдонулушу мүмкүн."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Колдонмодогу убактылуу файлдар өчүрүлүүдө…"</string>
+    <string name="clear" msgid="5524638938415865915">"Тазалоо"</string>
+    <string name="allow" msgid="8885707816848569619">"Уруксат берүү"</string>
+    <string name="deny" msgid="6040983710442068936">"Тыюу салуу"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> аудио файлды өзгөртсүнбү?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул аудио файлды өзгөртсүнбү?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> видеону өзгөртсүнбү?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул видеону өзгөртсүнбү?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> видеону өзгөртсүнбү?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул видеону өзгөртсүнбү?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> сүрөттү өзгөртсүнбү?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул сүрөттү өзгөртсүнбү?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> сүрөттү өзгөртсүнбү?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул сүрөттү өзгөртсүнбү?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> нерсени өзгөртсүнбү?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул нерсени өзгөртсүнбү?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> нерсени өзгөртсүнбү?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул нерсени өзгөртсүнбү?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Өзгөртүү"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Жокко чыгаруу"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> аудио файлды жок кылсынбы?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул аудио файлды жок кылсынбы?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> аудио файлды таштандыга салсынбы?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул аудио файлды таштандыга салсынбы?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Бул аудио файлдар <xliff:g id="DURATION_1">^3</xliff:g> күндөн кийин биротоло өчүрүлөт</item>
-      <item quantity="one">Бул аудио файл <xliff:g id="DURATION_0">^3</xliff:g> күндөн кийин биротоло өчүрүлөт</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> видеону таштандыга салсынбы?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул видеону таштандыга салсынбы?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> видеону жок кылсынбы?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул видеону жок кылсынбы?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> сүрөттү таштандыга салсынбы?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул сүрөттү таштандыга салсынбы?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Бул видеолор <xliff:g id="DURATION_1">^3</xliff:g> күндөн кийин биротоло өчүрүлөт</item>
-      <item quantity="one">Бул видео <xliff:g id="DURATION_0">^3</xliff:g> күндөн кийин биротоло өчүрүлөт</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> нерсени таштандыга салсынбы?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул нерсени таштандыга салсынбы?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> сүрөттү жок кылсынбы?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул сүрөттү жок кылсынбы?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> аудио файлды калыбына келтирсинби?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул аудио файлды калыбына келтирсинби?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Бул сүрөттөр <xliff:g id="DURATION_1">^3</xliff:g> күндөн кийин биротоло өчүрүлөт</item>
-      <item quantity="one">Бул сүрөт <xliff:g id="DURATION_0">^3</xliff:g> күндөн кийин биротоло өчүрүлөт</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> видеону калыбына келтирсинби?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул видеону калыбына келтирсинби?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> нерсени жок кылсынбы?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул нерсени жок кылсынбы?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> сүрөттү калыбына келтирсинби?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул сүрөттү калыбына келтирсинби?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Бул нерселер <xliff:g id="DURATION_1">^3</xliff:g> күндөн кийин биротоло өчүрүлөт</item>
-      <item quantity="one">Бул нерсе <xliff:g id="DURATION_0">^3</xliff:g> күндөн кийин биротоло өчүрүлөт</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> нерсени калыбына келтирсинби?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул нерсени калыбына келтирсинби?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Таштандыга ыргытуу"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Жокко чыгаруу"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> аудио файлды калыбына келтирсинби?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул аудио файлды калыбына келтирсинби?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> аудио файлды өчүрсүнбү?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул аудио файлды өчүрсүнбү?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> видеону калыбына келтирсинби?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул видеону калыбына келтирсинби?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> видеону өчүрсүнбү?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул видеону өчүрсүнбү?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> сүрөттү калыбына келтирсинби?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул сүрөттү калыбына келтирсинби?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> сүрөттү өчүрсүнбү?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул сүрөттү өчүрсүнбү?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> нерсени калыбына келтирсинби?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул нерсени калыбына келтирсинби?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> колдонмосу <xliff:g id="COUNT">^2</xliff:g> нерсени өчүрсүнбү?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> колдонмосу бул нерсени өчүрсүнбү?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Таштандыдан чыгаруу"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Жокко чыгаруу"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> аудио файлды өчүрсүнбү?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул аудио файлды өчүрсүнбү?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> видеону жок кылсынбы?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул видеону жок кылсынбы?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> сүрөттү жок кылсынбы?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул сүрөттү жок кылсынбы?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> бул <xliff:g id="COUNT">^2</xliff:g> нерсени жок кылсынбы?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> бул нерсени жок кылсынбы?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Жок кылуу"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Жокко чыгаруу"</string>
 </resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 8233821..568d20a 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"ດຳເນີນການຕໍ່"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"ອະນຸຍາດ"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"ປະຕິເສດ"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">ຮວມ <xliff:g id="COUNT_1">^1</xliff:g> ລາຍການເພີ່ມເຕີມ</item>
       <item quantity="one">ຮວມ <xliff:g id="COUNT_0">^1</xliff:g> ລາຍການເພີ່ມເຕີມ</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"ລ້າງແຄສແອັບກັບ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ບໍ?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ຕ້ອງການລ້າງໄຟລ໌ຊົ່ວຄາວບາງຢ່າງອອກ. ການຍອມຮັບອາດເພີ່ມການໃຊ້ແບັດເຕີຣີ ຫຼື ອິນເຕີເນັດ."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"ລຶບລ້າງໄຟລ໌ແອັບຊົ່ວຄາວ"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ຕ້ອງການລ້າງໄຟລ໌ຊົ່ວຄາວບາງຢ່າງອອກ. ນີ້ອາດເຮັດໃຫ້ມີການໃຊ້ແບັດເຕີຣີ ຫຼື ອິນເຕີເນັດມືຖືຫຼາຍຂຶ້ນ."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"ກຳລັງລຶບລ້າງໄຟລ໌ແອັບຊົ່ວຄາວ…"</string>
+    <string name="clear" msgid="5524638938415865915">"ລຶບລ້າງ"</string>
     <string name="allow" msgid="8885707816848569619">"ອະນຸຍາດ"</string>
     <string name="deny" msgid="6040983710442068936">"ປະຕິເສດ"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ປ່ຽນ <xliff:g id="COUNT">^2</xliff:g> ໄຟລ໌ສຽງບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ປ່ຽນໄຟລ໌ສຽງນີ້ບໍ?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ແກ້ໄຂໄຟລ໌ສຽງ <xliff:g id="COUNT">^2</xliff:g> ໄຟລ໌ບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ແກ້ໄຂໄຟລ໌ສຽງນີ້ບໍ?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ປ່ຽນ <xliff:g id="COUNT">^2</xliff:g> ວິດີໂອບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ປ່ຽນວິດີໂອນີ້ບໍ?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ແກ້ໄຂ <xliff:g id="COUNT">^2</xliff:g> ວິດີໂອບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ແກ້ໄຂວິດີໂອນີ້ບໍ?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ປ່ຽນ <xliff:g id="COUNT">^2</xliff:g> ຮູບບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ປ່ຽນຮູບນີ້ບໍ?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ແກ້ໄຂ <xliff:g id="COUNT">^2</xliff:g> ຮູບບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ແກ້ໄຂຮູບນີ້ບໍ?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ປ່ຽນ <xliff:g id="COUNT">^2</xliff:g> ລາຍການບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ປ່ຽນລາຍການນີ້ບໍ?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ແກ້ໄຂ <xliff:g id="COUNT">^2</xliff:g> ລາຍການບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ແກ້ໄຂລາຍການນີ້ບໍ?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"ປ່ຽນແປງ"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"ຍົກເລີກ"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ໄຟລ໌ສຽງໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍໄຟລ໌ສຽງນີ້ໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍໄຟລ໌ສຽງ <xliff:g id="COUNT">^2</xliff:g> ໄຟລ໌ໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍໄຟລ໌ສຽງນີ້ໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">ໄຟລ໌ສຽງເຫຼົ່ານີ້ຈະຖືກລຶບອອກຖາວອນຫຼັງຈາກ <xliff:g id="DURATION_1">^3</xliff:g> ມື້</item>
-      <item quantity="one">ໄຟລ໌ສຽງນີ້ຈະຖືກລຶບອອກຖາວອນຫຼັງຈາກ <xliff:g id="DURATION_0">^3</xliff:g> ມື້</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ວິດີໂອໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍວິດີໂອນີ້ໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ວິດີໂອໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍວິດີໂອນີ້ໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ຮູບໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍຮູບນີ້ໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">ວິດີໂອເຫຼົ່ານີ້ຈະຖືກລຶບອອກຖາວອນຫຼັງຈາກ <xliff:g id="DURATION_1">^3</xliff:g> ມື້</item>
-      <item quantity="one">ວິດີໂອນີ້ຈະຖືກລຶບອອກຖາວອນຫຼັງຈາກ <xliff:g id="DURATION_0">^3</xliff:g> ມື້</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ລາຍການໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍລາຍການນີ້ໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ຮູບໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍຮູບນີ້ໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ໄຟລ໌ສຽງອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍໄຟລ໌ສຽງນີ້ອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">ຮູບເຫຼົ່ານີ້ຈະຖືກລຶບອອກຖາວອນຫຼັງຈາກ <xliff:g id="DURATION_1">^3</xliff:g> ມື້</item>
-      <item quantity="one">ຮູບນີ້ຈະຖືກລຶບອອກຖາວອນຫຼັງຈາກ <xliff:g id="DURATION_0">^3</xliff:g> ມື້</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ວິດີໂອອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍວິດີໂອນີ້ອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ລາຍການໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍລາຍການນີ້ໄປໃສ່ຖັງຂີ້ເຫຍື້ອບໍ?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ຮູບອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍຮູບນີ້ອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">ລາຍການເຫຼົ່ານີ້ຈະຖືກລຶບອອກຖາວອນຫຼັງຈາກ <xliff:g id="DURATION_1">^3</xliff:g> ມື້</item>
-      <item quantity="one">ລາຍການນີ້ຈະຖືກລຶບອອກຖາວອນຫຼັງຈາກ <xliff:g id="DURATION_0">^3</xliff:g> ມື້</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ລາຍການອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍລາຍການນີ້ອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ຍ້າຍໄປຖັງຂີ້ເຫຍື້ອ"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"ຍົກເລີກ"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ໄຟລ໌ສຽງອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍໄຟລ໌ສຽງນີ້ອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ລຶບໄຟລ໌ສຽງ <xliff:g id="COUNT">^2</xliff:g> ໄຟລ໌ບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ລຶບໄຟລ໌ສຽງນີ້ບໍ?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ວິດີໂອອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍວິດີໂອນີ້ອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ລຶບ <xliff:g id="COUNT">^2</xliff:g> ວິດີໂອບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ລຶບວິດີໂອນີ້ບໍ?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ຮູບອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍຮູບນີ້ອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ລຶບ <xliff:g id="COUNT">^2</xliff:g> ຮູບບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ລຶບຮູບນີ້ບໍ?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ຍ້າຍ <xliff:g id="COUNT">^2</xliff:g> ລາຍການອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ຍ້າຍລາຍການນີ້ອອກຈາກຖັງຂີ້ເຫຍື້ອບໍ?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ລຶບ <xliff:g id="COUNT">^2</xliff:g> ລາຍການບໍ?</item>
+      <item quantity="one">ອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ລຶບລາຍການນີ້ບໍ?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ຍ້າຍອອກຈາກຖັງຂີ້ເຫຍື້ອ"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"ຍົກເລີກ"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ລຶບ <xliff:g id="COUNT">^2</xliff:g> ໄຟລ໌ສຽງອອກບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ລຶບໄຟລ໌ສຽງນີ້ອອກບໍ?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ລຶບ <xliff:g id="COUNT">^2</xliff:g> ວິດີໂອອອກບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ລຶບວິດີໂອນີ້ອອກບໍ?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ລຶບ <xliff:g id="COUNT">^2</xliff:g> ຮູບອອກບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ລຶບຮູບນີ້ອອກບໍ?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">ໃຫ້ <xliff:g id="APP_NAME_1">^1</xliff:g> ລຶບ <xliff:g id="COUNT">^2</xliff:g> ລາຍການອອກບໍ?</item>
-      <item quantity="one">ໃຫ້ <xliff:g id="APP_NAME_0">^1</xliff:g> ລຶບລາຍການນີ້ອອກບໍ?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"ລຶບ"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"ຍົກເລີກ"</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index a60450d..4190c0f 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -29,143 +29,118 @@
     <string name="permission_required_action" msgid="706370952366113539">"Tęsti"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Leisti"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Atmesti"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">Dar <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="few">Dar <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="many">Dar <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">Dar <xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Dar <xliff:g id="COUNT_1">^1</xliff:g> papildomas elementas</item>
       <item quantity="few">Dar <xliff:g id="COUNT_1">^1</xliff:g> papildomi elementai</item>
       <item quantity="many">Dar <xliff:g id="COUNT_1">^1</xliff:g> papildomo elemento</item>
       <item quantity="other">Dar <xliff:g id="COUNT_1">^1</xliff:g> papildomų elementų</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Išvalyti programos talpyklą naudojant programą „<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>“?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"Programa „<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>“ nori išvalyti kai kuriuos laikinus failus. Jei sutiksite, gali būti sunaudojama daugiau akumuliatoriaus energijos ar duomenų."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Laikinų programų failų išvalymas"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"Programa „<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>“ nori išvalyti kai kuriuos laikinus failus. Dėl to gali būti suvartojama daugiau akumuliatoriaus energijos ar mobiliojo ryšio duomenų."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Išvalomi laikini programos failai…"</string>
+    <string name="clear" msgid="5524638938415865915">"Išvalyti"</string>
     <string name="allow" msgid="8885707816848569619">"Leisti"</string>
     <string name="deny" msgid="6040983710442068936">"Atmesti"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> garso failą?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> garso failus?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> garso failo?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> garso failų?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašą?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašus?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašo?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašų?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> nuotrauką?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> nuotraukas?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> nuotraukos?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> nuotraukų?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> elementą?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> elementus?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> elemento?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ keisti <xliff:g id="COUNT">^2</xliff:g> elementų?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Keisti"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Atšaukti"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> garso failą į šiukšliadėžę?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> garso failus į šiukšliadėžę?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> garso failo į šiukšliadėžę?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> garso failų į šiukšliadėžę?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Šie garso failai bus visam laikui ištrinti po <xliff:g id="DURATION_1">^3</xliff:g> dienos</item>
-      <item quantity="few">Šie garso failai bus visam laikui ištrinti po <xliff:g id="DURATION_1">^3</xliff:g> dienų</item>
-      <item quantity="many">Šie garso failai bus visam laikui ištrinti po <xliff:g id="DURATION_1">^3</xliff:g> dienos</item>
-      <item quantity="other">Šie garso failai bus visam laikui ištrinti po <xliff:g id="DURATION_1">^3</xliff:g> dienų</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašą į šiukšliadėžę?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašus į šiukšliadėžę?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašo į šiukšliadėžę?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašų į šiukšliadėžę?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Šie vaizdo įrašai bus visam laikui ištrinti po <xliff:g id="DURATION_1">^3</xliff:g> dienos</item>
-      <item quantity="few">Šie vaizdo įrašai bus visam laikui ištrinti po <xliff:g id="DURATION_1">^3</xliff:g> dienų</item>
-      <item quantity="many">Šie vaizdo įrašai bus visam laikui ištrinti po <xliff:g id="DURATION_1">^3</xliff:g> dienos</item>
-      <item quantity="other">Šie vaizdo įrašai bus visam laikui ištrinti po <xliff:g id="DURATION_1">^3</xliff:g> dienų</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> nuotrauką į šiukšliadėžę?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> nuotraukas į šiukšliadėžę?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> nuotraukos į šiukšliadėžę?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> nuotraukų į šiukšliadėžę?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Šios nuotraukos bus visam laikui ištrintos po <xliff:g id="DURATION_1">^3</xliff:g> dienos</item>
-      <item quantity="few">Šios nuotraukos bus visam laikui ištrintos po <xliff:g id="DURATION_1">^3</xliff:g> dienų</item>
-      <item quantity="many">Šios nuotraukos bus visam laikui ištrintos po <xliff:g id="DURATION_1">^3</xliff:g> dienos</item>
-      <item quantity="other">Šios nuotraukos bus visam laikui ištrintos po <xliff:g id="DURATION_1">^3</xliff:g> dienų</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> elementą į šiukšliadėžę?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> elementus į šiukšliadėžę?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> elemento į šiukšliadėžę?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> elementų į šiukšliadėžę?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Šie elementai bus visam laikui ištrinti po <xliff:g id="DURATION_1">^3</xliff:g> dienos</item>
-      <item quantity="few">Šie elementai bus visam laikui ištrinti po <xliff:g id="DURATION_1">^3</xliff:g> dienų</item>
-      <item quantity="many">Šie elementai bus visam laikui ištrinti po <xliff:g id="DURATION_1">^3</xliff:g> dienos</item>
-      <item quantity="other">Šie elementai bus visam laikui ištrinti po <xliff:g id="DURATION_1">^3</xliff:g> dienų</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Perkelti į šiukšliadėžę"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Atšaukti"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> garso failą iš šiukšliadėžės?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> garso failus iš šiukšliadėžės?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> garso failo iš šiukšliadėžės?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> garso failų iš šiukšliadėžės?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašą iš šiukšliadėžės?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašus iš šiukšliadėžės?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašo iš šiukšliadėžės?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašų iš šiukšliadėžės?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> nuotrauką iš šiukšliadėžės?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> nuotraukas iš šiukšliadėžės?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> nuotraukos iš šiukšliadėžės?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> nuotraukų iš šiukšliadėžės?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> elementą iš šiukšliadėžės?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> elementus iš šiukšliadėžės?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> elemento iš šiukšliadėžės?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ perkelti <xliff:g id="COUNT">^2</xliff:g> elementų iš šiukšliadėžės?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Perkelti iš šiukšliadėžės"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Atšaukti"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> garso failą?</item>
-      <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> garso failus?</item>
-      <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> garso failo?</item>
-      <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> garso failų?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="one">Leisti „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> garso failą?</item>
+      <item quantity="few">Leisti „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> garso failus?</item>
+      <item quantity="many">Leisti „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> garso failo?</item>
+      <item quantity="other">Leisti „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> garso failų?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašą?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašus?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašo?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> vaizdo įrašų?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> nuotrauką?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> nuotraukas?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> nuotraukos?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> nuotraukų?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> elementą?</item>
       <item quantity="few">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> elementus?</item>
       <item quantity="many">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> elemento?</item>
       <item quantity="other">Leisti programai „<xliff:g id="APP_NAME_1">^1</xliff:g>“ ištrinti <xliff:g id="COUNT">^2</xliff:g> elementų?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Ištrinti"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Atšaukti"</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index e9694e7..7bc296f 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -29,126 +29,100 @@
     <string name="permission_required_action" msgid="706370952366113539">"Turpināt"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Atļaut"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Noraidīt"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="zero">vēl <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">vēl <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">vēl <xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="zero">Un vēl <xliff:g id="COUNT_1">^1</xliff:g> vienumu</item>
       <item quantity="one">Un vēl <xliff:g id="COUNT_1">^1</xliff:g> vienums</item>
       <item quantity="other">Un vēl <xliff:g id="COUNT_1">^1</xliff:g> vienumi</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> mainīt <xliff:g id="COUNT">^2</xliff:g> audio failus?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> mainīt <xliff:g id="COUNT">^2</xliff:g> audio failu?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> mainīt <xliff:g id="COUNT">^2</xliff:g> audio failus?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Lietotņu pagaidu failu notīrīšana"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"Lietotne <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> vēlas iegūt atļauju notīrīt dažus pagaidu failus. Tas var palielināt akumulatora izmantošanas ilgumu vai mobilo datu lietojumu."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Notiek lietotņu pagaidu failu notīrīšana…"</string>
+    <string name="clear" msgid="5524638938415865915">"Notīrīt"</string>
+    <string name="allow" msgid="8885707816848569619">"Atļaut"</string>
+    <string name="deny" msgid="6040983710442068936">"Neatļaut"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> modificēt <xliff:g id="COUNT">^2</xliff:g> audio failus?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> modificēt <xliff:g id="COUNT">^2</xliff:g> audio failu?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> modificēt <xliff:g id="COUNT">^2</xliff:g> audio failus?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> mainīt <xliff:g id="COUNT">^2</xliff:g> videoklipus?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> mainīt <xliff:g id="COUNT">^2</xliff:g> videoklipu?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> mainīt <xliff:g id="COUNT">^2</xliff:g> videoklipus?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> modificēt <xliff:g id="COUNT">^2</xliff:g> videoklipus?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> modificēt <xliff:g id="COUNT">^2</xliff:g> videoklipu?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> modificēt <xliff:g id="COUNT">^2</xliff:g> videoklipus?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> mainīt <xliff:g id="COUNT">^2</xliff:g> fotoattēlus?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> mainīt <xliff:g id="COUNT">^2</xliff:g> fotoattēlu?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> mainīt <xliff:g id="COUNT">^2</xliff:g> fotoattēlus?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> modificēt <xliff:g id="COUNT">^2</xliff:g> fotoattēlus?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> modificēt <xliff:g id="COUNT">^2</xliff:g> fotoattēlu?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> modificēt <xliff:g id="COUNT">^2</xliff:g> fotoattēlus?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> mainīt <xliff:g id="COUNT">^2</xliff:g> vienumus?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> mainīt <xliff:g id="COUNT">^2</xliff:g> vienumu?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> mainīt <xliff:g id="COUNT">^2</xliff:g> vienumus?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> modificēt <xliff:g id="COUNT">^2</xliff:g> vienumus?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> modificēt <xliff:g id="COUNT">^2</xliff:g> vienumu?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> modificēt <xliff:g id="COUNT">^2</xliff:g> vienumus?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Mainīt"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Atcelt"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> audio failus uz atkritni?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> audio failu uz atkritni?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> audio failus uz atkritni?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> audio failus uz atkritni?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> audio failu uz atkritni?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> audio failus uz atkritni?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="zero">Pēc <xliff:g id="DURATION_1">^3</xliff:g> dienas(-ām) šie audio faili tiks neatgriezeniski izdzēsti</item>
-      <item quantity="one">Pēc <xliff:g id="DURATION_1">^3</xliff:g> dienas(-ām) šie audio faili tiks neatgriezeniski izdzēsti</item>
-      <item quantity="other">Pēc <xliff:g id="DURATION_1">^3</xliff:g> dienas(-ām) šie audio faili tiks neatgriezeniski izdzēsti</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> videoklipus uz atkritni?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> videoklipu uz atkritni?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> videoklipus uz atkritni?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> videoklipus uz atkritni?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> videoklipu uz atkritni?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> videoklipus uz atkritni?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> fotoattēlus uz atkritni?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> fotoattēlu uz atkritni?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> fotoattēlus uz atkritni?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="zero">Pēc <xliff:g id="DURATION_1">^3</xliff:g> dienas(-ām) šie videoklipi tiks neatgriezeniski izdzēsti</item>
-      <item quantity="one">Pēc <xliff:g id="DURATION_1">^3</xliff:g> dienas(-ām) šie videoklipi tiks neatgriezeniski izdzēsti</item>
-      <item quantity="other">Pēc <xliff:g id="DURATION_1">^3</xliff:g> dienas(-ām) šie videoklipi tiks neatgriezeniski izdzēsti</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> vienumus uz atkritni?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> vienumu uz atkritni?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> vienumus uz atkritni?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> fotoattēlus uz atkritni?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> fotoattēlu uz atkritni?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> fotoattēlus uz atkritni?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> audio failus no atkritnes?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> audio failu no atkritnes?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> audio failus no atkritnes?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="zero">Pēc <xliff:g id="DURATION_1">^3</xliff:g> dienas(-ām) šie fotoattēli tiks neatgriezeniski izdzēsti</item>
-      <item quantity="one">Pēc <xliff:g id="DURATION_1">^3</xliff:g> dienas(-ām) šie fotoattēli tiks neatgriezeniski izdzēsti</item>
-      <item quantity="other">Pēc <xliff:g id="DURATION_1">^3</xliff:g> dienas(-ām) šie fotoattēli tiks neatgriezeniski izdzēsti</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> videoklipus no atkritnes?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> videoklipu no atkritnes?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> videoklipus no atkritnes?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> vienumus uz atkritni?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> vienumu uz atkritni?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> pārvietot <xliff:g id="COUNT">^2</xliff:g> vienumus uz atkritni?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> fotoattēlus no atkritnes?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> fotoattēlu no atkritnes?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> fotoattēlus no atkritnes?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="zero">Pēc <xliff:g id="DURATION_1">^3</xliff:g> dienas(-ām) šie vienumi tiks neatgriezeniski izdzēsti</item>
-      <item quantity="one">Pēc <xliff:g id="DURATION_1">^3</xliff:g> dienas(-ām) šie vienumi tiks neatgriezeniski izdzēsti</item>
-      <item quantity="other">Pēc <xliff:g id="DURATION_1">^3</xliff:g> dienas(-ām) šie vienumi tiks neatgriezeniski izdzēsti</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> vienumus no atkritnes?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> vienumu no atkritnes?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> vienumus no atkritnes?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Pārvietot uz atkritni"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Atcelt"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> audio failus no atkritnes?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> audio failu no atkritnes?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> audio failus no atkritnes?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> dzēst <xliff:g id="COUNT">^2</xliff:g> audio failus?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> dzēst <xliff:g id="COUNT">^2</xliff:g> audio failu?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> dzēst <xliff:g id="COUNT">^2</xliff:g> audio failus?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> videoklipus no atkritnes?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> videoklipu no atkritnes?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> videoklipus no atkritnes?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> dzēst <xliff:g id="COUNT">^2</xliff:g> videoklipus?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> dzēst <xliff:g id="COUNT">^2</xliff:g> videoklipu?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> dzēst <xliff:g id="COUNT">^2</xliff:g> videoklipus?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> fotoattēlus no atkritnes?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> fotoattēlu no atkritnes?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> fotoattēlus no atkritnes?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> dzēst <xliff:g id="COUNT">^2</xliff:g> fotoattēlus?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> dzēst <xliff:g id="COUNT">^2</xliff:g> fotoattēlu?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> dzēst <xliff:g id="COUNT">^2</xliff:g> fotoattēlus?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> vienumus no atkritnes?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> vienumu no atkritnes?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izņemt <xliff:g id="COUNT">^2</xliff:g> vienumus no atkritnes?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="zero">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> dzēst <xliff:g id="COUNT">^2</xliff:g> vienumus?</item>
+      <item quantity="one">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> dzēst <xliff:g id="COUNT">^2</xliff:g> vienumu?</item>
+      <item quantity="other">Vai atļaut lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> dzēst <xliff:g id="COUNT">^2</xliff:g> vienumus?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Izņemt no atkritnes"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Atcelt"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izdzēst <xliff:g id="COUNT">^2</xliff:g> audio failus?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izdzēst <xliff:g id="COUNT">^2</xliff:g> audio failu?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izdzēst <xliff:g id="COUNT">^2</xliff:g> audio failus?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izdzēst <xliff:g id="COUNT">^2</xliff:g> videoklipus?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izdzēst <xliff:g id="COUNT">^2</xliff:g> videoklipu?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izdzēst <xliff:g id="COUNT">^2</xliff:g> videoklipus?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izdzēst <xliff:g id="COUNT">^2</xliff:g> fotoattēlus?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izdzēst <xliff:g id="COUNT">^2</xliff:g> fotoattēlu?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izdzēst <xliff:g id="COUNT">^2</xliff:g> fotoattēlus?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="zero">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izdzēst <xliff:g id="COUNT">^2</xliff:g> vienumus?</item>
-      <item quantity="one">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izdzēst <xliff:g id="COUNT">^2</xliff:g> vienumu?</item>
-      <item quantity="other">Vai atļaujat lietotnei <xliff:g id="APP_NAME_1">^1</xliff:g> izdzēst <xliff:g id="COUNT">^2</xliff:g> vienumus?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Dzēst"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Atcelt"</string>
 </resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index c7fc283..9dd0bf3 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Продолжи"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Дозволи"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Одбиј"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+ <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+ <xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Плус <xliff:g id="COUNT_1">^1</xliff:g> дополнителна ставка</item>
       <item quantity="other">Плус <xliff:g id="COUNT_1">^1</xliff:g> дополнителни ставки</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Да се исчисти кешот на апликацијата со <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> сака да избрише некои привремени датотеки. Ако прифатите, може да се зголеми користењето на батеријата или податоците."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Избриши ги привремените датотеки на апликацијата"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> сака да избрише некои привремени датотеки. Поради тоа може да дојде до зголемено користење на батеријата или мобилниот интернет."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Се бришат привремените датотеки на апликацијата…"</string>
+    <string name="clear" msgid="5524638938415865915">"Избриши"</string>
     <string name="allow" msgid="8885707816848569619">"Дозволи"</string>
     <string name="deny" msgid="6040983710442068936">"Одбиј"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да измени <xliff:g id="COUNT">^2</xliff:g> аудиодатотека?</item>
       <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да измени <xliff:g id="COUNT">^2</xliff:g> аудиодатотеки?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да измени <xliff:g id="COUNT">^2</xliff:g> видео?</item>
       <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да измени <xliff:g id="COUNT">^2</xliff:g> видеа?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да измени <xliff:g id="COUNT">^2</xliff:g> фотографија?</item>
       <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да измени <xliff:g id="COUNT">^2</xliff:g> фотографии?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да измени <xliff:g id="COUNT">^2</xliff:g> ставка?</item>
       <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да измени <xliff:g id="COUNT">^2</xliff:g> ставки?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Измени"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Откажи"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> аудиодатотека во „Корпа“?</item>
-      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> аудиодатотеки во „Корпа“?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> аудиодатотека во корпата?</item>
+      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> аудиодатотеки во корпата?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Аудиодатотекава трајно ќе се избрише по <xliff:g id="DURATION_1">^3</xliff:g> ден</item>
-      <item quantity="other">Аудиодатотекава трајно ќе се избрише по <xliff:g id="DURATION_1">^3</xliff:g> дена</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> видео во корпата?</item>
+      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> видеа во корпата?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> видео во „Корпа“?</item>
-      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> видеа во „Корпа“?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> фотографија во корпата?</item>
+      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> фотографии во корпата?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Видеово трајно ќе се избрише по <xliff:g id="DURATION_1">^3</xliff:g> ден</item>
-      <item quantity="other">Видеово трајно ќе се избрише по <xliff:g id="DURATION_1">^3</xliff:g> дена</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> ставка во корпата?</item>
+      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> ставки во корпата?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> фотографија во „Корпа“?</item>
-      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> фотографии во „Корпа“?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> аудиодатотека од корпата?</item>
+      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> аудиодатотеки од корпата?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Фотографииве трајно ќе се избришат по <xliff:g id="DURATION_1">^3</xliff:g> ден</item>
-      <item quantity="other">Фотографииве трајно ќе се избришат по <xliff:g id="DURATION_1">^3</xliff:g> дена</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> видео од корпата?</item>
+      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> видеа од корпата?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> ставка во „Корпа“?</item>
-      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да премести <xliff:g id="COUNT">^2</xliff:g> ставки во „Корпа“?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> фотографија од корпата?</item>
+      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> фотографии од корпата?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Ставкиве трајно ќе се избришат по <xliff:g id="DURATION_1">^3</xliff:g> ден</item>
-      <item quantity="other">Ставкиве трајно ќе се избришат по <xliff:g id="DURATION_1">^3</xliff:g> дена</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> ставка од корпата?</item>
+      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> ставки од корпата?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Премести во „Корпа“"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Откажи"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> аудиодатотека од „Корпа“?</item>
-      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> аудиодатотеки од „Корпа“?</item>
-    </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> видео од „Корпа“?</item>
-      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> видеа од „Корпа“?</item>
-    </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> фотографија од „Корпа“?</item>
-      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> фотографии од „Корпа“?</item>
-    </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> ставка од „Корпа“?</item>
-      <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да извади <xliff:g id="COUNT">^2</xliff:g> ставки од „Корпа“?</item>
-    </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Извади од „Корпа“"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Откажи"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да избрише <xliff:g id="COUNT">^2</xliff:g> аудиодатотека?</item>
       <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да избрише <xliff:g id="COUNT">^2</xliff:g> аудиодатотеки?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да избрише <xliff:g id="COUNT">^2</xliff:g> видео?</item>
       <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да избрише <xliff:g id="COUNT">^2</xliff:g> видеа?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да избрише <xliff:g id="COUNT">^2</xliff:g> фотографија?</item>
       <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да избрише <xliff:g id="COUNT">^2</xliff:g> фотографии?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да избрише <xliff:g id="COUNT">^2</xliff:g> ставка?</item>
       <item quantity="other">Да се дозволи <xliff:g id="APP_NAME_1">^1</xliff:g> да избрише <xliff:g id="COUNT">^2</xliff:g> ставки?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Избриши"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Откажи"</string>
 </resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 37f5858..d505748 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -21,7 +21,7 @@
     <string name="app_label" msgid="9035307001052716210">"മീഡിയ സ്റ്റോറേജ്"</string>
     <string name="artist_label" msgid="8105600993099120273">"ആർട്ടിസ്‌റ്റ്"</string>
     <string name="unknown" msgid="2059049215682829375">"അജ്ഞാതം"</string>
-    <string name="root_images" msgid="5861633549189045666">"ചിത്രങ്ങൾ"</string>
+    <string name="root_images" msgid="5861633549189045666">"Images"</string>
     <string name="root_videos" msgid="8792703517064649453">"വീഡിയോകൾ"</string>
     <string name="root_audio" msgid="3505830755201326018">"ഓഡിയോ"</string>
     <string name="root_documents" msgid="3829103301363849237">"ഡോക്യുമെന്റുകൾ"</string>
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"തുടരുക"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"അനുവദിക്കുക"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"നിരസിക്കുക"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other"><xliff:g id="COUNT_1">^1</xliff:g> അധിക ഇനങ്ങൾ കൂടി</item>
       <item quantity="one"><xliff:g id="COUNT_0">^1</xliff:g> അധിക ഇനം കൂടി</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഓഡിയോ ഫയലുകൾ മാറ്റാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
-      <item quantity="one">ഈ ഓഡിയോ ഫയൽ മാറ്റാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"താൽക്കാലികമായ ആപ്പ് ഫയലുകൾ മായ്ക്കുക"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> എന്നതിന് കുറച്ച് താൽക്കാലിക ഫയലുകൾ മായ്ക്കണമെന്നുണ്ട്. ബാറ്ററിയുടെയോ സെല്ലുലാർ ഡാറ്റയുടെയോ വർദ്ധിച്ച ഉപയോഗത്തിന് ഇത് കാരണമായേക്കാം."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"താൽക്കാലികമായ ആപ്പ് ഫയലുകൾ മായ്‌ക്കുന്നു…"</string>
+    <string name="clear" msgid="5524638938415865915">"മായ്ക്കുക"</string>
+    <string name="allow" msgid="8885707816848569619">"അനുവദിക്കൂ"</string>
+    <string name="deny" msgid="6040983710442068936">"നിരസിക്കുക"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഓഡിയോ ഫയലുകൾ പരിഷ്‍കരിക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
+      <item quantity="one">ഈ ഓഡിയോ ഫയൽ പരിഷ്‍കരിക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> വീഡിയോകൾ മാറ്റാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
-      <item quantity="one">ഈ വീഡിയോ മാറ്റാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> വീഡിയോകൾ പരിഷ്‍കരിക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
+      <item quantity="one">ഈ വീഡിയോ പരിഷ്‍കരിക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഫോട്ടോകൾ മാറ്റാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
-      <item quantity="one">ഈ ഫോട്ടോ മാറ്റാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഫോട്ടോകൾ പരിഷ്‍കരിക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
+      <item quantity="one">ഈ ഫോട്ടോ പരിഷ്‍കരിക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഇനങ്ങൾ മാറ്റാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
-      <item quantity="one">ഈ ഇനം മാറ്റാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഇനങ്ങൾ പരിഷ്‍കരിക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
+      <item quantity="one">ഈ ഇനം പരിഷ്‍കരിക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"മാറ്റുക"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"റദ്ദാക്കൂ"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഓഡിയോ ഫയലുകൾ ട്രാഷിലേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
       <item quantity="one">ഈ ഓഡിയോ ഫയൽ ട്രാഷിലേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other"><xliff:g id="DURATION_1">^3</xliff:g> ദിവസം കഴിഞ്ഞ് ഈ ഒഡിയോ ഫയലുകൾ ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും</item>
-      <item quantity="one"><xliff:g id="DURATION_0">^3</xliff:g> ദിവസം കഴിഞ്ഞ് ഈ ഒഡിയോ ഫയൽ ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> വീഡിയോകൾ ട്രാഷിലേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
       <item quantity="one">ഈ വീഡിയോ ട്രാഷിലേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other"><xliff:g id="DURATION_1">^3</xliff:g> ദിവസം കഴിഞ്ഞ് ഈ വീഡിയോകൾ ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും</item>
-      <item quantity="one"><xliff:g id="DURATION_0">^3</xliff:g> ദിവസം കഴിഞ്ഞ് ഈ വീഡിയോ ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഫോട്ടോകൾ ട്രാഷിലേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
       <item quantity="one">ഈ ഫോട്ടോ ട്രാഷിലേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other"><xliff:g id="DURATION_1">^3</xliff:g> ദിവസം കഴിഞ്ഞ് ഈ ഫോട്ടോകൾ ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും</item>
-      <item quantity="one"><xliff:g id="DURATION_0">^3</xliff:g> ദിവസം കഴിഞ്ഞ് ഈ ഫോട്ടോ ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഇനങ്ങൾ ട്രാഷിലേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
       <item quantity="one">ഈ ഇനം ട്രാഷിലേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other"><xliff:g id="DURATION_1">^3</xliff:g> ദിവസം കഴിഞ്ഞ് ഈ ഇനങ്ങൾ ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും</item>
-      <item quantity="one"><xliff:g id="DURATION_0">^3</xliff:g> ദിവസം കഴിഞ്ഞ് ഈ ഇനം ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ട്രാഷിലേക്ക് നീക്കുക"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"റദ്ദാക്കൂ"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഓഡിയോ ഫയലുകൾ ട്രാഷിന് പുറത്തേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
       <item quantity="one">ഈ ഓഡിയോ ഫയൽ ട്രാഷിന് പുറത്തേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> വീഡിയോകൾ ട്രാഷിന് പുറത്തേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
       <item quantity="one">ഈ വീഡിയോ ട്രാഷിന് പുറത്തേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഫോട്ടോകൾ ട്രാഷിന് പുറത്തേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
       <item quantity="one">ഈ ഫോട്ടോ ട്രാഷിന് പുറത്തേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഇനങ്ങൾ ട്രാഷിന് പുറത്തേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
       <item quantity="one">ഈ ഇനം ട്രാഷിന് പുറത്തേക്ക് നീക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ട്രാഷിൽ നിന്ന് പുറത്തേക്ക് നീക്കൂ"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"റദ്ദാക്കൂ"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഓഡിയോ ഫയലുകൾ ഇല്ലാതാക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
       <item quantity="one">ഈ ഓഡിയോ ഫയൽ ഇല്ലാതാക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> വീഡിയോകൾ ഇല്ലാതാക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
       <item quantity="one">ഈ വീഡിയോ ഇല്ലാതാക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഫോട്ടോകൾ ഇല്ലാതാക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
       <item quantity="one">ഈ ഫോട്ടോ ഇല്ലാതാക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ഇനങ്ങൾ ഇല്ലാതാക്കാൻ <xliff:g id="APP_NAME_1">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
       <item quantity="one">ഈ ഇനം ഇല്ലാതാക്കാൻ <xliff:g id="APP_NAME_0">^1</xliff:g> എന്നതിനെ അനുവദിക്കണോ?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"ഇല്ലാതാക്കുക"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"റദ്ദാക്കൂ"</string>
 </resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 12062c7..8c7a39b 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Үргэлжлүүлэх"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Зөвшөөрөх"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Татгалзах"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Нэмээд нэмэлт <xliff:g id="COUNT_1">^1</xliff:g> зүйл</item>
       <item quantity="one">Нэмээд нэмэлт <xliff:g id="COUNT_0">^1</xliff:g> зүйл</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Аппын түр зуурын файлуудыг арилгах"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> нь түр зуурын зарим файлыг арилгах хүсэлтэй байна. Энэ нь батарей эсвэл мобайл дата ашиглалтыг нэмэгдүүлэхэд хүргэж болзошгүй."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Аппын түр зуурын файлуудыг арилгаж байна…"</string>
+    <string name="clear" msgid="5524638938415865915">"Арилгах"</string>
+    <string name="allow" msgid="8885707816848569619">"Зөвшөөрөх"</string>
+    <string name="deny" msgid="6040983710442068936">"Татгалзах"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> аудио файл өөрчлөхийг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ аудио файлыг өөрчлөхийг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> видео өөрчлөхийг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ видеог өөрчлөхийг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> зураг өөрчлөхийг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ зургийг өөрчлөхийг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> зүйл өөрчлөхийг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ зүйлийг өөрчлөхийг зөвшөөрөх үү?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Өөрчлөх"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Болих"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д хогийн сав руу <xliff:g id="COUNT">^2</xliff:g> аудио файл зөөхийг зөвшөөрөх үү?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> аудио файлыг хогийн сав руу зөөхийг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ аудио файлыг хогийн сав руу зөөхийг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Эдгээр аудио файлыг <xliff:g id="DURATION_1">^3</xliff:g> өдрийн дараа бүрмөсөн устгах болно</item>
-      <item quantity="one">Энэ аудио файлыг <xliff:g id="DURATION_0">^3</xliff:g> өдрийн дараа бүрмөсөн устгах болно</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д хогийн сав руу <xliff:g id="COUNT">^2</xliff:g> видео зөөхийг зөвшөөрөх үү?</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> видеог хогийн сав руу зөөхийг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ видеог хогийн сав руу зөөхийг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Эдгээр видеог <xliff:g id="DURATION_1">^3</xliff:g> өдрийн дараа бүрмөсөн устгах болно</item>
-      <item quantity="one">Энэ видеог <xliff:g id="DURATION_0">^3</xliff:g> өдрийн дараа бүрмөсөн устгах болно</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д хогийн сав руу <xliff:g id="COUNT">^2</xliff:g> зураг зөөхийг зөвшөөрөх үү?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> зургийг хогийн сав руу зөөхийг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ зургийг хогийн сав руу зөөхийг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Эдгээр зургийг <xliff:g id="DURATION_1">^3</xliff:g> өдрийн дараа бүрмөсөн устгах болно</item>
-      <item quantity="one">Энэ зургийг <xliff:g id="DURATION_0">^3</xliff:g> өдрийн дараа бүрмөсөн устгах болно</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д хогийн сав руу <xliff:g id="COUNT">^2</xliff:g> зүйл зөөхийг зөвшөөрөх үү?</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д хогийн сав руу <xliff:g id="COUNT">^2</xliff:g> зүйлийг зөөхийг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ зүйлийг хогийн сав руу зөөхийг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Эдгээр зүйлийг <xliff:g id="DURATION_1">^3</xliff:g> өдрийн дараа бүрмөсөн устгах болно</item>
-      <item quantity="one">Энэ зүйлийг <xliff:g id="DURATION_0">^3</xliff:g> өдрийн дараа бүрмөсөн устгах болно</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Хогийн сав руу зөөх"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Болих"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д хогийн савнаас <xliff:g id="COUNT">^2</xliff:g> аудио файл гаргахыг зөвшөөрөх үү?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> аудио файлыг хогийн савнаас гаргахыг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ аудио файлыг хогийн савнаас гаргахыг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д хогийн савнаас <xliff:g id="COUNT">^2</xliff:g> видео гаргахыг зөвшөөрөх үү?</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> видеог хогийн савнаас гаргахыг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ видеог хогийн савнаас гаргахыг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д хогийн савнаас <xliff:g id="COUNT">^2</xliff:g> зураг гаргахыг зөвшөөрөх үү?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> зургийг хогийн савнаас гаргахыг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ зургийг хогийн савнаас гаргахыг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д хогийн савнаас <xliff:g id="COUNT">^2</xliff:g> зүйл гаргахыг зөвшөөрөх үү?</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> зүйлийг хогийн савнаас гаргахыг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ зүйлийг хогийн савнаас гаргахыг зөвшөөрөх үү?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Хогийн савнаас гаргах"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Болих"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> аудио файл устгахыг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ аудио файлыг устгахыг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> видео устгахыг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ видеог устгахыг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> зураг устгахыг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ зургийг устгахыг зөвшөөрөх үү?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>-д <xliff:g id="COUNT">^2</xliff:g> зүйл устгахыг зөвшөөрөх үү?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>-д энэ зүйлийг устгахыг зөвшөөрөх үү?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Устгах"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Болих"</string>
 </resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index a2b8fab..b110be3 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -21,7 +21,7 @@
     <string name="app_label" msgid="9035307001052716210">"मीडिया स्टोरेज"</string>
     <string name="artist_label" msgid="8105600993099120273">"कलाकार"</string>
     <string name="unknown" msgid="2059049215682829375">"अज्ञात"</string>
-    <string name="root_images" msgid="5861633549189045666">"इमेज"</string>
+    <string name="root_images" msgid="5861633549189045666">"Images"</string>
     <string name="root_videos" msgid="8792703517064649453">"व्हिडिओ"</string>
     <string name="root_audio" msgid="3505830755201326018">"ऑडिओ"</string>
     <string name="root_documents" msgid="3829103301363849237">"दस्तऐवज"</string>
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"सुरू ठेवा"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"अनुमती द्या"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"नाकारा"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">आणखी <xliff:g id="COUNT_1">^1</xliff:g> अतिरिक्त आयटम</item>
       <item quantity="one">आणखी <xliff:g id="COUNT_0">^1</xliff:g> अतिरिक्त आयटम</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> ऑडिओ फाइल बदलण्याची परवानगी द्यायची आहे का?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला ही ऑडिओ फाइल बदलण्याची परवानगी द्यायची आहे का?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"तात्पुरत्या अ‍ॅप फाइल साफ करा"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ला काही तात्पुरत्या फाइल साफ करायच्या आहेत. यामुळे बॅटरी किंवा सेल्युलर डेटाच्या वापरात वाढ होऊ शकते."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"तात्‍पुरत्‍या ॲप फाइल काढून टाकत आहे…"</string>
+    <string name="clear" msgid="5524638938415865915">"साफ करा"</string>
+    <string name="allow" msgid="8885707816848569619">"अनुमती द्या"</string>
+    <string name="deny" msgid="6040983710442068936">"नकार द्या"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> ऑडिओ फाइल सुधारित करण्याची परवानगी द्यायची आहे का?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला ही ऑडिओ फाइल सुधारित करण्याची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> व्हिडिओ बदलण्याची परवानगी द्यायची आहे का?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा व्हिडिओ बदलण्याची परवानगी द्यायची आहे का?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> व्हिडिओ सुधारित करण्याची परवानगी द्यायची आहे का?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा व्हिडिओ सुधारित करण्याची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> फोटो बदलण्याची परवानगी द्यायची आहे का?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा फोटो बदलण्याची परवानगी द्यायची आहे का?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> फोटो सुधारित करण्याची परवानगी द्यायची आहे का?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा फोटो सुधारित करण्याची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> आयटम बदलण्याची परवानगी द्यायची आहे का?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा आयटम बदलण्याची परवानगी द्यायची आहे का?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> आयटम सुधारित करण्याची परवानगी द्यायची आहे का?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा आयटम सुधारित करण्याची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"बदला"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"रद्द करा"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> ऑडिओ फाइल कचऱ्यामध्ये हलवण्याची परवानगी द्यायची आहे का?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला ही ऑडिओ फाइल कचऱ्यामध्ये हलवण्याची परवानगी द्यायची आहे का?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> ऑडिओ फाइल कचऱ्यामध्ये हलवायची परवानगी द्यायची आहे का?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला ही ऑडिओ फाइल कचऱ्यामध्ये हलवायची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">या ऑडिओ फाइल <xliff:g id="DURATION_1">^3</xliff:g> दिवसांनंतर कायमच्या हटवल्या जातील</item>
-      <item quantity="one">ही ऑडिओ फाइल <xliff:g id="DURATION_0">^3</xliff:g> दिवसांनंतर कायमची हटवली जाईल</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> व्हिडिओ कचऱ्यामध्ये हलवायची परवानगी द्यायची आहे का?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा व्हिडिओ कचऱ्यामध्ये हलवायची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> व्हिडिओ कचऱ्यामध्ये हलवण्याची परवानगी द्यायची आहे का?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा व्हिडिओ कचऱ्यामध्ये हलवण्याची परवानगी द्यायची आहे का?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> फोटो कचऱ्यामध्ये हलवायची परवानगी द्यायची आहे का?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा फोटो कचऱ्यामध्ये हलवायची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">हे व्हिडिओ <xliff:g id="DURATION_1">^3</xliff:g> दिवसांनंतर कायमचे हटवले जातील</item>
-      <item quantity="one">हा व्हिडिओ <xliff:g id="DURATION_0">^3</xliff:g> दिवसांनंतर कायमचा हटवला जाईल</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> फोटो कचऱ्यामध्ये हलवण्याची परवानगी द्यायची आहे का?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा फोटो कचऱ्यामध्ये हलवण्याची परवानगी द्यायची आहे का?</item>
-    </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">हे फोटो <xliff:g id="DURATION_1">^3</xliff:g> दिवसांनंतर कायमचे हटवले जातील</item>
-      <item quantity="one">हा फोटो <xliff:g id="DURATION_0">^3</xliff:g> दिवसांनंतर कायमचा हटवला जाईल</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> आयटम कचऱ्यामध्ये हलवण्याची परवानगी द्यायची आहे का?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा आयटम कचऱ्यामध्ये हलवण्याची परवानगी द्यायची आहे का?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा आयटम कचऱ्यामध्ये हलवायची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">हे आयटम <xliff:g id="DURATION_1">^3</xliff:g> दिवसांनंतर कायमचे हटवले जातील</item>
-      <item quantity="one">हा आयटम <xliff:g id="DURATION_0">^3</xliff:g> दिवसांनंतर कायमचा हटवला जाईल</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> ऑडिओ फाइल कचऱ्यामधून बाहेर हलवायची परवानगी द्यायची आहे का?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला ही ऑडिओ फाइल कचऱ्यामधून बाहेर हलवायची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"कचऱ्यामध्ये हलवा"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"रद्द करा"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> ऑडिओ फाइल कचऱ्यामधून बाहेर हलवण्याची परवानगी द्यायची आहे का?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला ही ऑडिओ फाइल कचऱ्यामधून बाहेर हलवण्याची परवानगी द्यायची आहे का?</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> व्हिडिओ कचऱ्यामधून बाहेर हलवायची परवानगी द्यायची आहे का?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा व्हिडिओ कचऱ्यामधून बाहेर हलवायची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> व्हिडिओ कचऱ्यामधून बाहेर हलवण्याची परवानगी द्यायची आहे का?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा व्हिडिओ कचऱ्यामधून बाहेर हलवण्याची परवानगी द्यायची आहे का?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> फोटो कचऱ्यामधून बाहेर हलवायची परवानगी द्यायची आहे का?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा फोटो कचऱ्यामधून बाहेर हलवायची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> फोटो कचऱ्यामधून बाहेर हलवण्याची परवानगी द्यायची आहे का?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा फोटो कचऱ्यामधून बाहेर हलवण्याची परवानगी द्यायची आहे का?</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> आयटम कचऱ्यामधून बाहेर हलवायची परवानगी द्यायची आहे का?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा आयटम कचऱ्यामधून बाहेर हलवायची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> आयटम कचऱ्यामधून बाहेर हलवण्याची परवानगी द्यायची आहे का?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा आयटम कचऱ्यामधून बाहेर हलवण्याची परवानगी द्यायची आहे का?</item>
-    </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"कचर्‍यामधून बाहेर हलवा"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"रद्द करा"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> ऑडिओ फाइल हटवायची परवानगी द्यायची आहे का?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला ही ऑडिओ फाइल हटवायची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> व्हिडिओ हटवायची परवानगी द्यायची आहे का?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा व्हिडिओ हटवायची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> फोटो हटवण्याची परवानगी द्यायची का?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> फोटो हटवायची परवानगी द्यायची आहे का?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा फोटो हटवायची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ला <xliff:g id="COUNT">^2</xliff:g> आयटम हटवायची परवानगी द्यायची आहे का?</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ला हा आयटम हटवायची परवानगी द्यायची आहे का?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"हटवा"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"रद्द करा"</string>
 </resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index f1cbbf9..067cc43 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Teruskan"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Benarkan"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Tolak"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Serta <xliff:g id="COUNT_1">^1</xliff:g> item tambahan</item>
       <item quantity="one">Serta <xliff:g id="COUNT_0">^1</xliff:g> item tambahan</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> menukar <xliff:g id="COUNT">^2</xliff:g> fail audio?</item>
-      <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> menukar fail audio ini?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Kosongkan fail apl sementara"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> mahu mengosongkan beberapa fail sementara. Tindakan ini mungkin menyebabkan peningkatan penggunaan bateri atau data selular."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Mengosongkan fail apl sementara…"</string>
+    <string name="clear" msgid="5524638938415865915">"Kosongkan"</string>
+    <string name="allow" msgid="8885707816848569619">"Benarkan"</string>
+    <string name="deny" msgid="6040983710442068936">"Tolak"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengubah suai <xliff:g id="COUNT">^2</xliff:g> fail audio?</item>
+      <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengubah suai fail audio ini?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> menukar <xliff:g id="COUNT">^2</xliff:g> video?</item>
-      <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> menukar video ini?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengubah suai <xliff:g id="COUNT">^2</xliff:g> video?</item>
+      <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengubah suai video ini?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> menukar <xliff:g id="COUNT">^2</xliff:g> foto?</item>
-      <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> menukar foto ini?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengubah suai <xliff:g id="COUNT">^2</xliff:g> foto?</item>
+      <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengubah suai foto ini?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> menukar <xliff:g id="COUNT">^2</xliff:g> item?</item>
-      <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> menukar item ini?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengubah suai <xliff:g id="COUNT">^2</xliff:g> item?</item>
+      <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengubah suai item ini?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Tukar"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Batal"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengalihkan <xliff:g id="COUNT">^2</xliff:g> fail audio ke sampah?</item>
       <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengalihkan fail audio ini ke sampah?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Fail audio ini akan dipadamkan secara kekal selepas <xliff:g id="DURATION_1">^3</xliff:g> hari</item>
-      <item quantity="one">Fail audio ini akan dipadamkan secara kekal selepas <xliff:g id="DURATION_0">^3</xliff:g> hari</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengalihkan <xliff:g id="COUNT">^2</xliff:g> video ke sampah?</item>
       <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengalihkan video ini ke sampah?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Video ini akan dipadamkan secara kekal selepas <xliff:g id="DURATION_1">^3</xliff:g> hari</item>
-      <item quantity="one">Video ini akan dipadamkan secara kekal selepas <xliff:g id="DURATION_0">^3</xliff:g> hari</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengalihkan <xliff:g id="COUNT">^2</xliff:g> foto ke sampah?</item>
       <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengalihkan foto ini ke sampah?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Foto ini akan dipadamkan secara kekal selepas <xliff:g id="DURATION_1">^3</xliff:g> hari</item>
-      <item quantity="one">Foto ini akan dipadamkan secara kekal selepas <xliff:g id="DURATION_0">^3</xliff:g> hari</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengalihkan <xliff:g id="COUNT">^2</xliff:g> item ke sampah?</item>
       <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengalihkan item ini ke sampah?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Item ini akan dipadamkan secara kekal selepas <xliff:g id="DURATION_1">^3</xliff:g> hari</item>
-      <item quantity="one">Item ini akan dipadamkan secara kekal selepas <xliff:g id="DURATION_0">^3</xliff:g> hari</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Alihkan ke sampah"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Batal"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengalihkan <xliff:g id="COUNT">^2</xliff:g> fail audio keluar daripada sampah?</item>
       <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengalihkan fail audio ini keluar daripada sampah?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengalihkan <xliff:g id="COUNT">^2</xliff:g> video keluar daripada sampah?</item>
       <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengalihkan video ini keluar daripada sampah?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengalihkan <xliff:g id="COUNT">^2</xliff:g> foto keluar daripada sampah?</item>
       <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengalihkan foto ini keluar daripada sampah?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> mengalihkan <xliff:g id="COUNT">^2</xliff:g> item keluar daripada sampah?</item>
       <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> mengalihkan item ini keluar daripada sampah?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Alihkan keluar daripada sampah"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Batal"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> memadamkan <xliff:g id="COUNT">^2</xliff:g> fail audio?</item>
       <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> memadamkan fail audio ini?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> memadamkan <xliff:g id="COUNT">^2</xliff:g> video?</item>
       <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> memadamkan video ini?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> memadamkan <xliff:g id="COUNT">^2</xliff:g> foto?</item>
       <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> memadamkan foto ini?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other">Benarkan <xliff:g id="APP_NAME_1">^1</xliff:g> memadamkan <xliff:g id="COUNT">^2</xliff:g> item?</item>
       <item quantity="one">Benarkan <xliff:g id="APP_NAME_0">^1</xliff:g> memadamkan item ini?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Padam"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Batal"</string>
 </resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 5c9aeb6..ab3766c 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"ရှေ့ဆက်ရန်"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"ခွင့်ပြုရန်"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"ငြင်းပယ်ရန်"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">ထပ်ပေါင်းအရာ <xliff:g id="COUNT_1">^1</xliff:g> ခု အပါအဝင်</item>
       <item quantity="one">ထပ်ပေါင်းအရာ <xliff:g id="COUNT_0">^1</xliff:g> ခု အပါအဝင်</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား အသံဖိုင် <xliff:g id="COUNT">^2</xliff:g> ခုကို ပြောင်းလဲခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤအသံဖိုင်ကို ပြောင်းလဲခွင့်ပြုမလား။</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"ယာယီအက်ပ်ဖိုင်များ ရှင်းရန်"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> သည် ယာယီဖိုင်များမှ အချို့ကို ရှင်းထုတ်လိုသည်။ ထို့ကြောင့် ဘက်ထရီ သို့မဟုတ် ဆယ်လူလာဒေတာ အသုံးပြုမှု မြင့်တက်လာနိုင်သည်။"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"ယာယီအက်ပ်ဖိုင်များ ရှင်းထုတ်နေသည်…"</string>
+    <string name="clear" msgid="5524638938415865915">"ရှင်းရန်"</string>
+    <string name="allow" msgid="8885707816848569619">"ခွင့်ပြုရန်"</string>
+    <string name="deny" msgid="6040983710442068936">"ပယ်ရန်"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ကို အသံဖိုင် <xliff:g id="COUNT">^2</xliff:g> ဖိုင် ပြင်ဆင်ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ကို ဤအသံဖိုင် ပြင်ဆင်ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဗီဒီယို <xliff:g id="COUNT">^2</xliff:g> ခုကို ပြောင်းလဲခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤဗီဒီယိုကို ပြောင်းလဲခွင့်ပြုမလား။</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ကို ဗီဒီယို <xliff:g id="COUNT">^2</xliff:g> ခု ပြင်ဆင်ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ကို ဤဗီဒီယို ပြင်ဆင်ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဓာတ်ပုံ <xliff:g id="COUNT">^2</xliff:g> ပုံကို ပြောင်းလဲခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤဓာတ်ပုံကို ပြောင်းလဲခွင့်ပြုမလား။</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဓာတ်ပုံ <xliff:g id="COUNT">^2</xliff:g> ပုံကို ပြုပြင်ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ကို ဤဓာတ်ပုံ ပြင်ဆင်ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ပါရှိသည့်အရာ <xliff:g id="COUNT">^2</xliff:g> ခုကို ပြောင်းလဲခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤအရာကို ပြောင်းလဲခွင့်ပြုမလား။</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ကို ဤအရာ <xliff:g id="COUNT">^2</xliff:g> ခု ပြင်ဆင်ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ကို ဤအရာ ပြင်ဆင်ခွင့်ပြုမလား။</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"ပြောင်းလဲရန်"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"မလုပ်တော့"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား အသံဖိုင် <xliff:g id="COUNT">^2</xliff:g> ဖိုင်ကို အမှိုက်ပုံးထဲသို့ ရွှေ့ခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤအသံဖိုင်ကို အမှိုက်ပုံးထဲသို့ ရွှေ့ခွင့်ပြုမလား။</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား အသံဖိုင် <xliff:g id="COUNT">^2</xliff:g> ဖိုင်ကို အမှိုက်ပုံးသို့ ရွှေ့ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤအသံဖိုင်ကို အမှိုက်ပုံးသို့ ရွှေ့ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">ဤအသံဖိုင်များကို <xliff:g id="DURATION_1">^3</xliff:g> ရက် ပြည့်လျှင် အပြီးဖျက်ပါမည်</item>
-      <item quantity="one">ဤအသံဖိုင်ကို <xliff:g id="DURATION_0">^3</xliff:g> ရက် ပြည့်လျှင် အပြီးဖျက်ပါမည်</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဗီဒီယို <xliff:g id="COUNT">^2</xliff:g> ခုကို အမှိုက်ပုံးသို့ ရွှေ့ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤဗီဒီယိုကို အမှိုက်ပုံးသို့ ရွှေ့ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဗီဒီယို <xliff:g id="COUNT">^2</xliff:g> ခုကို အမှိုက်ပုံးထဲသို့ ရွှေ့ခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤဗီဒီယိုကို အမှိုက်ပုံးထဲသို့ ရွှေ့ခွင့်ပြုမလား။</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဓာတ်ပုံ <xliff:g id="COUNT">^2</xliff:g> ပုံကို အမှိုက်ပုံးသို့ ရွှေ့ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤဓာတ်ပုံကို အမှိုက်ပုံးသို့ ရွှေ့ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">ဤဗီဒီယိုများကို <xliff:g id="DURATION_1">^3</xliff:g> ရက် ပြည့်လျှင် အပြီးဖျက်ပါမည်</item>
-      <item quantity="one">ဤဗီဒီယိုကို <xliff:g id="DURATION_0">^3</xliff:g> ရက် ပြည့်လျှင် အပြီးဖျက်ပါမည်</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဤအရာ <xliff:g id="COUNT">^2</xliff:g> ခုကို အမှိုက်ပုံးသို့ ရွှေ့ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤအရာကို အမှိုက်ပုံးသို့ ရွှေ့ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဓာတ်ပုံ <xliff:g id="COUNT">^2</xliff:g> ပုံကို အမှိုက်ပုံးထဲသို့ ရွှေ့ခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤဓာတ်ပုံကို အမှိုက်ပုံးထဲသို့ ရွှေ့ခွင့်ပြုမလား။</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား အသံဖိုင် <xliff:g id="COUNT">^2</xliff:g> ဖိုင်ကို အမှိုက်ပုံးထဲမှ ရွှေ့ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤအသံဖိုင်ကို အမှိုက်ပုံးထဲမှ ရွှေ့ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">ဤဓာတ်ပုံများကို <xliff:g id="DURATION_1">^3</xliff:g> ရက် ပြည့်လျှင် အပြီးဖျက်ပါမည်</item>
-      <item quantity="one">ဤဓာတ်ပုံကို <xliff:g id="DURATION_0">^3</xliff:g> ရက် ပြည့်လျှင် အပြီးဖျက်ပါမည်</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား အရာ <xliff:g id="COUNT">^2</xliff:g> ခုကို အမှိုက်ပုံးထဲသို့ ရွှေ့ခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤအရာကို အမှိုက်ပုံးထဲသို့ ရွှေ့ခွင့်ပြုမလား။</item>
-    </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">ဤအရာများကို <xliff:g id="DURATION_1">^3</xliff:g> ရက် ပြည့်လျှင် အပြီးဖျက်ပါမည်</item>
-      <item quantity="one">ဤအရာကို <xliff:g id="DURATION_0">^3</xliff:g> ရက် ပြည့်လျှင် အပြီးဖျက်ပါမည်</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"အမှိုက်ပုံးသို့ ရွှေ့ရန်"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"မလုပ်တော့"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား အသံဖိုင် <xliff:g id="COUNT">^2</xliff:g> ခုကို အမှိုက်ပုံးမှ ရွှေ့ခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤအသံဖိုင်ကို အမှိုက်ပုံးမှ ရွှေ့ခွင့်ပြုမလား။</item>
-    </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဗီဒီယို <xliff:g id="COUNT">^2</xliff:g> ခုကို အမှိုက်ပုံးထဲမှ ရွှေ့ခွင့်ပြုမလား။</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤဗီဒီယိုကို အမှိုက်ပုံးထဲမှ ရွှေ့ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဓာတ်ပုံ<xliff:g id="COUNT">^2</xliff:g> ပုံကို အမှိုက်ပုံးမှ ရွှေ့ခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤဓာတ်ပုံကို အမှိုက်ပုံးမှ ရွှေ့ခွင့်ပြုမလား။</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဓာတ်ပုံ <xliff:g id="COUNT">^2</xliff:g> ပုံကို အမှိုက်ပုံးထဲမှ ရွှေ့ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤဓာတ်ပုံကို အမှိုက်ပုံးထဲမှ ရွှေ့ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ပါရှိသည့်အရာ <xliff:g id="COUNT">^2</xliff:g> ခုကိုအမှိုက်ပုံးမှ ရွှေ့ခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤအရာကို အမှိုက်ပုံးမှ ရွှေ့ခွင့်ပြုမလား။</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဤအရာ <xliff:g id="COUNT">^2</xliff:g> ခုကို အမှိုက်ပုံးထဲမှ ရွှေ့ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤအရာကို အမှိုက်ပုံးထဲမှ ရွှေ့ခွင့်ပြုမလား။</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"အမှိုက်ပုံးထဲမှ ရွှေ့ရန်"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"မလုပ်တော့"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား အသံဖိုင် <xliff:g id="COUNT">^2</xliff:g> ဖိုင်ကို ဖျက်ခွင့်ပြုမလား။</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤအသံဖိုင်ကို ဖျက်ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဗီဒီယို <xliff:g id="COUNT">^2</xliff:g> ခုကို ဖျက်ခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤဗီဒီယိုကို ဖျက်ခွင့်ပြုမလား။</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ကို ဗီဒီယို <xliff:g id="COUNT">^2</xliff:g> ခု ဖျက်ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ကို ဤဗီဒီယို ဖျက်ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဓာတ်ပုံ <xliff:g id="COUNT">^2</xliff:g> ပုံကို ဖျက်ခွင့်ပြုမလား။</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤဓာတ်ပုံကို ဖျက်ခွင့်ပြုမလား။</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ကို ဓာတ်ပုံ <xliff:g id="COUNT">^2</xliff:g> ပုံ ဖျက်ခွင့်ပြုမလား။</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ကို ဤဓာတ်ပုံ ဖျက်ခွင့်ပြုမလား။</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ပါရှိသည့်အရာ <xliff:g id="COUNT">^2</xliff:g> ခုကို ဖျက်ခွင့်ပြုမလား။</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> အား ဤအရာ <xliff:g id="COUNT">^2</xliff:g> ခုကို ဖျက်ခွင့်ပြုမလား။</item>
       <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> အား ဤအရာကို ဖျက်ခွင့်ပြုမလား။</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"ဖျက်ရန်"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"မလုပ်တော့"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index be052c1..35fd892 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Fortsett"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Tillat"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Avvis"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Pluss <xliff:g id="COUNT_1">^1</xliff:g> elementer til</item>
       <item quantity="one">Pluss <xliff:g id="COUNT_0">^1</xliff:g> element til</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> endre <xliff:g id="COUNT">^2</xliff:g> lydfiler?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> endre denne lydfilen?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Slett midlertidige appfiler"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> vil slette noen midlertidige filer. Dette kan resultere i økt bruk av batteri eller mobildata."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Sletter midlertidige appfiler …"</string>
+    <string name="clear" msgid="5524638938415865915">"Slett"</string>
+    <string name="allow" msgid="8885707816848569619">"Tillat"</string>
+    <string name="deny" msgid="6040983710442068936">"Avvis"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> endrer <xliff:g id="COUNT">^2</xliff:g> lydfiler?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> endrer denne lydfilen?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> endre <xliff:g id="COUNT">^2</xliff:g> videoer?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> endre denne videoen?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> endrer <xliff:g id="COUNT">^2</xliff:g> videoer?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> endrer denne videoen?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> endre <xliff:g id="COUNT">^2</xliff:g> bilder?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> endre dette bildet?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> endrer <xliff:g id="COUNT">^2</xliff:g> bilder?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> endrer dette bildet?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> endre <xliff:g id="COUNT">^2</xliff:g> elementer?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> endre dette elementet?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> endrer <xliff:g id="COUNT">^2</xliff:g> elementer?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> endrer dette elementet?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Endre"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Avbryt"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> flytte <xliff:g id="COUNT">^2</xliff:g> lydfiler til papirkurven?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> flytte denne lydfilen til papirkurven?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> flytter <xliff:g id="COUNT">^2</xliff:g> lydfiler til papirkurven?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> flytter denne lydfilen til papirkurven?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Disse lydfilene blir permanent slettet etter <xliff:g id="DURATION_1">^3</xliff:g> dager</item>
-      <item quantity="one">Denne lydfilen blir permanent slettet etter <xliff:g id="DURATION_0">^3</xliff:g> dager</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> flytter <xliff:g id="COUNT">^2</xliff:g> videoer til papirkurven?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> flytter denne videoen til papirkurven?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> flytte <xliff:g id="COUNT">^2</xliff:g> videoer til papirkurven?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> flytte denne videoen til papirkurven?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> flytter <xliff:g id="COUNT">^2</xliff:g> bilder til papirkurven?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> flytter dette bildet til papirkurven?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Disse videoene blir permanent slettet etter <xliff:g id="DURATION_1">^3</xliff:g> dager</item>
-      <item quantity="one">Denne videoen blir permanent slettet etter <xliff:g id="DURATION_0">^3</xliff:g> dager</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> flytter <xliff:g id="COUNT">^2</xliff:g> elementer til papirkurven?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> flytter dette elementet til papirkurven?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> flytte <xliff:g id="COUNT">^2</xliff:g> bilder til papirkurven?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> flytte dette bildet til papirkurven?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> flytter <xliff:g id="COUNT">^2</xliff:g> lydfiler ut av papirkurven?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> flytter denne lydfilen ut av papirkurven?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Disse bildene blir permanent slettet etter <xliff:g id="DURATION_1">^3</xliff:g> dager</item>
-      <item quantity="one">Dette bildet blir permanent slettet etter <xliff:g id="DURATION_0">^3</xliff:g> dager</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> flytter <xliff:g id="COUNT">^2</xliff:g> videoer ut av papirkurven?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> flytter denne videoen ut av papirkurven?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> flytte <xliff:g id="COUNT">^2</xliff:g> elementer til papirkurven?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> flytte dette elementet til papirkurven?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> flytter <xliff:g id="COUNT">^2</xliff:g> bilder ut av papirkurven?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> flytter dette bildet ut av papirkurven?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Disse elementene blir permanent slettet etter <xliff:g id="DURATION_1">^3</xliff:g> dager</item>
-      <item quantity="one">Dette elementet blir permanent slettet etter <xliff:g id="DURATION_0">^3</xliff:g> dager</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> flytter <xliff:g id="COUNT">^2</xliff:g> elementer ut av papirkurven?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> flytter dette elementet ut av papirkurven?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Flytt til papirkurven"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Avbryt"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> flytte <xliff:g id="COUNT">^2</xliff:g> lydfiler ut av papirkurven?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> flytte denne lydfilen ut av papirkurven?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> sletter <xliff:g id="COUNT">^2</xliff:g> lydfiler?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> sletter denne lydfilen?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> flytte <xliff:g id="COUNT">^2</xliff:g> videoer ut av papirkurven?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> flytte denne videoen ut av papirkurven?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> sletter <xliff:g id="COUNT">^2</xliff:g> videoer?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> sletter denne videoen?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> flytte <xliff:g id="COUNT">^2</xliff:g> bilder ut av papirkurven?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> flytte dette bildet ut av papirkurven?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> sletter <xliff:g id="COUNT">^2</xliff:g> bilder?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> sletter dette bildet?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> flytte <xliff:g id="COUNT">^2</xliff:g> elementer ut av papirkurven?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> flytte dette elementet ut av papirkurven?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Vil du tillate at <xliff:g id="APP_NAME_1">^1</xliff:g> sletter <xliff:g id="COUNT">^2</xliff:g> elementer?</item>
+      <item quantity="one">Vil du tillate at <xliff:g id="APP_NAME_0">^1</xliff:g> sletter dette elementet?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Flytt ut av papirkurven"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Avbryt"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> slette <xliff:g id="COUNT">^2</xliff:g> lydfiler?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> slette denne lydfilen?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> slette <xliff:g id="COUNT">^2</xliff:g> videoer?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> slette denne videoen?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> slette <xliff:g id="COUNT">^2</xliff:g> bilder?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> slette dette bildet?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Vil du la <xliff:g id="APP_NAME_1">^1</xliff:g> slette <xliff:g id="COUNT">^2</xliff:g> elementer?</item>
-      <item quantity="one">Vil du la <xliff:g id="APP_NAME_0">^1</xliff:g> slette dette elementet?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Slett"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Avbryt"</string>
 </resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 8e17b57..0735ae7 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"जारी राख्नुहोस्"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"अनुमति दिनुहोस्"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"अनुमति नदिनुहोस्"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">थप <xliff:g id="COUNT_1">^1</xliff:g> वटा अतिरिक्त वस्तु</item>
       <item quantity="one">थप <xliff:g id="COUNT_0">^1</xliff:g> अतिरिक्त वस्तु</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा अडियो फाइल परिवर्तन गर्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो अडियो फाइल परिवर्तन गर्न दिने हो?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"एपका अस्थायी फाइलहरू हटाउनुहोस्"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> केही अस्थायी फाइलहरू मेटाउन चाहन्छ। यो कार्य गर्ने अनुमति दिनुभएका खण्डमा ब्याट्रीको खपत वा सेलुलर डेटाको प्रयोग बढ्न सक्छ।"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"एपका अस्थायी फाइलहरू मेटाउँदै…"</string>
+    <string name="clear" msgid="5524638938415865915">"हटाउनुहोस्"</string>
+    <string name="allow" msgid="8885707816848569619">"अनुमति दिनुहोस्"</string>
+    <string name="deny" msgid="6040983710442068936">"अस्वीकार गर्नुहोस्"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> अडियो फाइलहरू परिमार्जन गर्न दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो अडियो फाइल परिमार्जन गर्न दिने हो?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा भिडियो परिवर्तन गर्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो भिडियो परिवर्तन गर्न दिने हो?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> भिडियोहरू परिमार्जन गर्न दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो भिडियो परिमार्जन गर्न दिने हो?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा तस्बिर परिवर्तन गर्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो तस्बिर परिवर्तन गर्न दिने हो?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> फोटोहरू परिमार्जन गर्न दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो फोटो परिमार्जन गर्न दिने हो?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा वस्तु परिवर्तन गर्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो वस्तु परिवर्तन गर्न दिने हो?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> वस्तुहरू परिमार्जन गर्न दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो वस्तु परिमार्जन गर्न दिने हो?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"परिवर्तन गर्नुहोस्"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"रद्द गर्नुहोस्"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा अडियो फाइल रद्दीको टोकरीमा सार्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो अडियो फाइल रद्दीको टोकरीमा सार्न दिने हो?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> अडियो फाइलहरू सारेर रद्दीको टोकरीमा लैजान दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो अडियो फाइल सारेर रद्दीको टोकरीमा लैजान दिने हो?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">यी अडियो फाइलहरू <xliff:g id="DURATION_1">^3</xliff:g> दिनपछि सदाका लागि मेटाइने छ</item>
-      <item quantity="one">यो अडियो फाइल <xliff:g id="DURATION_0">^3</xliff:g> दिनपछि सदाका लागि मेटाइने छ</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> भिडियोहरू सारेर रद्दीको टोकरीमा लैजान दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो भिडियो सारेर रद्दीको टोकरीमा लैजान दिने हो?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा भिडियो रद्दीको टोकरीमा सार्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो भिडियो रद्दीको टोकरीमा सार्न दिने हो?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> फोटोहरू सारेर रद्दीको टोकरीमा लैजान दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो फोटो सारेर रद्दीको टोकरीमा लैजान दिने हो?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">यी भिडियोहरू <xliff:g id="DURATION_1">^3</xliff:g> दिनपछि सदाका लागि मेटाइने छ</item>
-      <item quantity="one">यो भिडियो <xliff:g id="DURATION_0">^3</xliff:g> दिनपछि सदाका लागि मेटाइने छ</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> वस्तुहरू सारेर रद्दीको टोकरीमा लैजान दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो वस्तु सारेर रद्दीको टोकरीमा लैजान दिने हो?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा तस्बिर रद्दीको टोकरीमा सार्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो तस्बिर रद्दीको टोकरीमा सार्न दिने हो?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> अडियो फाइलहरू रद्दीको टोकरीबाट निकालेर ल्याउन दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो अडियो फाइल रद्दीको टोकरीबाट निकालेर ल्याउन दिने हो?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">यी तस्बिरहरू <xliff:g id="DURATION_1">^3</xliff:g> दिनपछि सदाका लागि मेटाइने छ</item>
-      <item quantity="one">यो तस्बिर <xliff:g id="DURATION_0">^3</xliff:g> दिनपछि सदाका लागि मेटाइने छ</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> भिडियोहरू रद्दीको टोकरीबाट निकालेर ल्याउन दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो भिडियो रद्दीको टोकरीबाट निकालेर ल्याउन दिने हो?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा वस्तु रद्दीको टोकरीमा सार्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो वस्तु रद्दीको टोकरीमा सार्न दिने हो?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> फोटोहरू रद्दीको टोकरीबाट निकालेर ल्याउन दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो फोटो रद्दीको टोकरीबाट निकालेर ल्याउन दिने हो?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">यी वस्तुहरू <xliff:g id="DURATION_1">^3</xliff:g> दिनपछि सदाका लागि मेटाइने छ</item>
-      <item quantity="one">यो वस्तु <xliff:g id="DURATION_0">^3</xliff:g> दिनपछि सदाका लागि मेटाइने छ</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> वस्तुहरू रद्दीको टोकरीबाट निकालेर ल्याउन दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो वस्तु रद्दीको टोकरीबाट निकालेर ल्याउन दिने हो?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"रद्दीको टोकरीमा सार्नुहोस्"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"रद्द गर्नुहोस्"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा अडियो फाइल रद्दीको टोकरीबाट निकालेर बाहिर सार्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो अडियो फाइल रद्दीको टोकरीबाट निकालेर बाहिर सार्न दिने हो?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> अडियो फाइलहरू मेटाउन दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो अडियो फाइल मेटाउन दिने हो?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा भिडियो रद्दीको टोकरीबाट निकालेर बाहिर सार्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो भिडियो रद्दीको टोकरीबाट निकालेर बाहिर सार्न दिने हो?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> भिडियोहरू मेटाउन दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो भिडियो मेटाउन दिने हो?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा तस्बिर रद्दीको टोकरीबाट निकालेर बाहिर सार्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो तस्बिर रद्दीको टोकरीबाट निकालेर बाहिर सार्न दिने हो?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> फोटोहरू मेटाउन दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो फोटो मेटाउन दिने हो?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा वस्तु रद्दीको टोकरीबाट निकालेर बाहिर सार्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो वस्तु रद्दीको टोकरीबाट निकालेर बाहिर सार्न दिने हो?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई यी <xliff:g id="COUNT">^2</xliff:g> वस्तुहरू मेटाउन दिने हो?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो वस्तु मेटाउन दिने हो?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"रद्दीको टोकरीबाट बाहिर सार्नुहोस्"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"रद्द गर्नुहोस्"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा अडियो फाइल मेट्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो अडियो फाइल मेट्न दिने हो?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा भिडियो मेट्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो भिडियो मेट्न दिने हो?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा तस्बिर मेट्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो तस्बिर मेट्न दिने हो?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> लाई <xliff:g id="COUNT">^2</xliff:g> वटा वस्तु मेट्न दिने हो?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> लाई यो वस्तु मेट्न दिने हो?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"मेट्नुहोस्"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"रद्द गर्नुहोस्"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index c3b26eb..d685675 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -25,105 +25,86 @@
     <string name="root_videos" msgid="8792703517064649453">"Video\'s"</string>
     <string name="root_audio" msgid="3505830755201326018">"Audio"</string>
     <string name="root_documents" msgid="3829103301363849237">"Documenten"</string>
-    <string name="permission_required" msgid="1460820436132943754">"Toestemming vereist om dit item aan te passen of te verwijderen."</string>
+    <string name="permission_required" msgid="1460820436132943754">"Rechten vereist om dit item aan te passen of te verwijderen."</string>
     <string name="permission_required_action" msgid="706370952366113539">"Doorgaan"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Toestaan"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Weigeren"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Plus <xliff:g id="COUNT_1">^1</xliff:g> extra items</item>
       <item quantity="one">Plus <xliff:g id="COUNT_0">^1</xliff:g> extra item</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"App-cache wissen met <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> wil een aantal tijdelijke bestanden wissen. Als je akkoord gaat, kan het batterij- of datagebruik toenemen."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Tijdelijke app-bestanden wissen"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> wil een aantal tijdelijke bestanden wissen. Dit kan leiden tot een groter verbruik van de batterij of mobiele data."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Tijdelijke app-bestanden wissen…"</string>
+    <string name="clear" msgid="5524638938415865915">"Wissen"</string>
     <string name="allow" msgid="8885707816848569619">"Toestaan"</string>
     <string name="deny" msgid="6040983710442068936">"Weigeren"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> audiobestanden wijzigt?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> dit audiobestand wijzigt?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> audiobestanden te wijzigen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan dit audiobestand te wijzigen?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> video\'s wijzigt?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> deze video wijzigt?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> video\'s te wijzigen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan deze video te wijzigen?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> foto\'s wijzigt?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> deze foto wijzigt?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> foto\'s te wijzigen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan deze foto te wijzigen?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> items wijzigt?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> dit item wijzigt?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> items te wijzigen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan dit item te wijzigen?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Wijzigen"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Annuleren"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> audiobestanden naar de prullenbak verplaatst?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> dit audiobestand naar de prullenbak verplaatst?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> audiobestanden naar de prullenbak te verplaatsen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan dit audiobestand naar de prullenbak te verplaatsen?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Deze audiobestanden worden na <xliff:g id="DURATION_1">^3</xliff:g> dagen definitief verwijderd</item>
-      <item quantity="one">Dit audiobestand wordt na <xliff:g id="DURATION_0">^3</xliff:g> dagen definitief verwijderd</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> video\'s naar de prullenbak te verplaatsen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan deze video naar de prullenbak te verplaatsen?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> video\'s naar de prullenbak verplaatst?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> deze video naar de prullenbak verplaatst?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> foto\'s naar de prullenbak te verplaatsen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan deze foto naar de prullenbak te verplaatsen?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Deze video\'s worden na <xliff:g id="DURATION_1">^3</xliff:g> dagen definitief verwijderd.</item>
-      <item quantity="one">Deze video wordt na <xliff:g id="DURATION_0">^3</xliff:g> dagen definitief verwijderd</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> items naar de prullenbak te verplaatsen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan dit item naar de prullenbak te verplaatsen?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> foto\'s naar de prullenbak verplaatst?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> deze foto naar de prullenbak verplaatst?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> audiobestanden uit de prullenbak te halen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan dit audiobestand uit de prullenbak te halen?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Deze foto\'s worden na <xliff:g id="DURATION_1">^3</xliff:g> dagen definitief verwijderd.</item>
-      <item quantity="one">Deze foto wordt na <xliff:g id="DURATION_0">^3</xliff:g> dagen definitief verwijderd</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> video\'s uit de prullenbak te halen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan deze video uit de prullenbak te halen?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> items naar de prullenbak verplaatst?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> dit item naar de prullenbak verplaatst?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> foto\'s uit de prullenbak te halen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan deze foto uit de prullenbak te halen?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Deze items worden na <xliff:g id="DURATION_1">^3</xliff:g> dagen definitief verwijderd.</item>
-      <item quantity="one">Dit item wordt na <xliff:g id="DURATION_0">^3</xliff:g> dagen definitief verwijderd</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> items uit de prullenbak te halen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan dit item uit de prullenbak te halen?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Naar prullenbak verplaatsen"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Annuleren"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> audiobestanden uit de prullenbak haalt?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> dit audiobestand uit de prullenbak haalt?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> audiobestanden te verwijderen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan dit audiobestand te verwijderen?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> video\'s uit de prullenbak haalt?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> deze video uit de prullenbak haalt?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> video\'s te verwijderen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan deze video te verwijderen?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> foto\'s uit de prullenbak haalt?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> deze foto uit de prullenbak haalt?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> foto\'s te verwijderen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan deze foto te verwijderen?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> items uit de prullenbak haalt?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> dit item uit de prullenbak haalt?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> toestaan <xliff:g id="COUNT">^2</xliff:g> items te verwijderen?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> toestaan dit item te verwijderen?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Uit de prullenbak halen"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Annuleren"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> audiobestanden verwijdert?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> dit audiobestand verwijdert?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> video\'s verwijdert?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> deze video verwijdert?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> foto\'s verwijdert?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> deze foto verwijdert?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Toestaan dat <xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> items verwijdert?</item>
-      <item quantity="one">Toestaan dat <xliff:g id="APP_NAME_0">^1</xliff:g> dit item verwijdert?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Verwijderen"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Annuleren"</string>
 </resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index a43dc1a..5ea6ea3 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -21,113 +21,90 @@
     <string name="app_label" msgid="9035307001052716210">"ମିଡିଆ ଷ୍ଟୋରେଜ୍"</string>
     <string name="artist_label" msgid="8105600993099120273">"କଳାକାର"</string>
     <string name="unknown" msgid="2059049215682829375">"ଅଜଣା"</string>
-    <string name="root_images" msgid="5861633549189045666">"ଇମେଜ୍‌"</string>
+    <string name="root_images" msgid="5861633549189045666">"Images"</string>
     <string name="root_videos" msgid="8792703517064649453">"ଭିଡିଓ"</string>
     <string name="root_audio" msgid="3505830755201326018">"ଅଡିଓ"</string>
     <string name="root_documents" msgid="3829103301363849237">"ଡକ୍ୟୁମେଣ୍ଟଗୁଡ଼ିକ"</string>
     <string name="permission_required" msgid="1460820436132943754">"ଏହି ଆଇଟମ୍‌କୁ ସଂଶୋଧନ କିମ୍ବା ଡିଲିଟ୍‌ କରିବାକୁ ଅନୁମତି ଆବଶ୍ୟକ।"</string>
     <string name="permission_required_action" msgid="706370952366113539">"ଜାରି ରଖନ୍ତୁ"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
-    <string name="grant_dialog_button_deny" msgid="6190589471415815741">"ଅସ୍ଵୀକାର କରନ୍ତୁ"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <string name="grant_dialog_button_deny" msgid="6190589471415815741">"ଅଗ୍ରାହ୍ୟ କରନ୍ତୁ"</string>
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">ଅଧିକ <xliff:g id="COUNT_1">^1</xliff:g>ଟି ଅତିରିକ୍ତ ଆଇଟମ୍</item>
       <item quantity="one">ଅଧିକ <xliff:g id="COUNT_0">^1</xliff:g>ଟି ଅତିରିକ୍ତ ଆଇଟମ୍</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଅଡିଓ ଫାଇଲ୍‌କୁ ବଦଳେଇବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଅଡିଓ ଫାଇଲ୍‌କୁ ବଦଳେଇବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"ଅସ୍ଥାୟୀ ଆପ୍ ଫାଇଲଗୁଡ଼ିକୁ ଖାଲି କରନ୍ତୁ"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> କିଛି ଅସ୍ଥାୟୀ ଫାଇଲ୍ ଖାଲି କରିବାକୁ ଚାହୁଁଛି। ଏହା ଫଳରେ ବ୍ୟାଟେରୀ କିମ୍ବା ସେଲ୍ୟୁଲାର୍ ଡାଟାର ବ୍ୟବହାର ଅଧିକ ହୋଇପାରେ।"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"ଅସ୍ଥାୟୀ ଆପ୍ ଫାଇଲଗୁଡ଼ିକୁ ଖାଲି କରାଯାଉଛି…"</string>
+    <string name="clear" msgid="5524638938415865915">"ଖାଲି କରନ୍ତୁ"</string>
+    <string name="allow" msgid="8885707816848569619">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+    <string name="deny" msgid="6040983710442068936">"ଅଗ୍ରାହ୍ୟ କରନ୍ତୁ"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଅଡିଓ ଫାଇଲକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଅଡିଓ ଫାଇଲକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଭିଡିଓକୁ ବଦଳେଇବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଭିଡିଓକୁ ବଦଳେଇବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଭିଡିଓକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଭିଡିଓକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଫଟୋକୁ ବଦଳେଇବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଫଟୋକୁ ବଦଳେଇବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଫଟୋ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଫଟୋକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଆଇଟମ୍‌କୁ ବଦଳେଇବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଆଇଟମ୍‌କୁ ବଦଳେଇବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଆଇଟମକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଆଇଟମକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"ବଦଳାନ୍ତୁ"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"ବାତିଲ୍ କରନ୍ତୁ"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଅଡିଓ ଫାଇଲ୍‌କୁ ଟ୍ରାସ୍‌କୁ ସ୍ଥାନାନ୍ତର କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଅଡିଓ ଫାଇଲ୍‌କୁ ଟ୍ରାସ୍‌କୁ ସ୍ଥାନାନ୍ତର କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଅଡିଓ ଫାଇଲକୁ ଟ୍ରାସକୁ ମୁଭ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଅଡିଓ ଫାଇଲକୁ ଟ୍ରାସକୁ ମୁଭ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other"><xliff:g id="DURATION_1">^3</xliff:g>ଦିନ ପରେ ଏହି ଅଡିଓ ଫାଇଲ୍‌ଗୁଡ଼ିକ ସ୍ଥାୟୀ ଭାବରେ ଡିଲିଟ୍ ହୋଇଯିବ</item>
-      <item quantity="one"><xliff:g id="DURATION_0">^3</xliff:g> ଦିନ ପରେ ଏହି ଅଡିଓ ଫାଇଲ୍ ସ୍ଥାୟୀ ଭାବରେ ଡିଲିଟ୍ ହୋଇଯିବ</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଭିଡିଓକୁ ଟ୍ରାସକୁ ମୁଭ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଭିଡିଓକୁ ଟ୍ରାସକୁ ମୁଭ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଭିଡିଓକୁ ଟ୍ରାସ୍‌କୁ ସ୍ଥାନାନ୍ତର କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଭିଡିଓକୁ ଟ୍ରାସ୍‌କୁ ସ୍ଥାନାନ୍ତର କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଫଟୋକୁ ଟ୍ରାସକୁ ମୁଭ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଫଟୋକୁ ଟାସକୁ ମୁଭ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other"><xliff:g id="DURATION_1">^3</xliff:g> ଦିନ ପରେ ଏହି ଭିଡିଓଗୁଡ଼ିକ ସ୍ଥାୟୀ ଭାବରେ ଡିଲିଟ୍ ହୋଇଯିବ</item>
-      <item quantity="one"><xliff:g id="DURATION_0">^3</xliff:g> ଦିନ ପରେ ଏହି ଭିଡିଓ ସ୍ଥାୟୀ ଭାବରେ ଡିଲିଟ୍ ହୋଇଯିବ</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଆଇଟମକୁ ଟ୍ରାସକୁ ମୁଭ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଆଇଟମକୁ ଟ୍ରାସକୁ ମୁଭ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଫଟୋକୁ ଟ୍ରାସ୍‌କୁ ସ୍ଥାନାନ୍ତର କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଫଟୋକୁ ଟ୍ରାସ୍‌କୁ ସ୍ଥାନାନ୍ତର କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଅଡିଓ ଫାଇଲକୁ ଟ୍ରାସରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଅଡିଓ ଫାଇଲକୁ ଟ୍ରାସରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other"><xliff:g id="DURATION_1">^3</xliff:g>ଦିନ ପରେ ଏହି ଫଟୋଗୁଡ଼ିକ ସ୍ଥାୟୀ ଭାବରେ ଡିଲିଟ୍ ହୋଇଯିବ</item>
-      <item quantity="one"><xliff:g id="DURATION_0">^3</xliff:g> ଦିନ ପରେ ଏହି ଫଟୋ ସ୍ଥାୟୀ ଭାବରେ ଡିଲିଟ୍ ହୋଇଯିବ</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଭିଡିଓକୁ ଟ୍ରାସରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଭିଡିଓକୁ ଟ୍ରାସରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଆଇଟମ୍‌କୁ ଟ୍ରାସ୍‌କୁ ସ୍ଥାନାନ୍ତର କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଆଇଟମ୍‌କୁ ଟ୍ରାସ୍‌କୁ ସ୍ଥାନାନ୍ତର କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଫଟୋକୁ ଟ୍ରାସରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଫଟୋକୁ ଟ୍ରାସରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other"><xliff:g id="DURATION_1">^3</xliff:g> ଦିନ ପରେ ଏହି ଆଇଟମ୍‌ଗୁଡ଼ିକ ସ୍ଥାୟୀ ଭାବରେ ଡିଲିଟ୍ ହୋଇଯିବ</item>
-      <item quantity="one"><xliff:g id="DURATION_0">^3</xliff:g> ଦିନ ପରେ ଏହି ଆଇଟମ୍ ସ୍ଥାୟୀ ଭାବରେ ଡିଲିଟ୍ ହୋଇଯିବ</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଆଇଟମକୁ ଟ୍ରାସରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଆଇଟମକୁ ଟ୍ରାସରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ଟ୍ରାସ୍‌କୁ ନିଅନ୍ତୁ"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"ବାତିଲ୍ କରନ୍ତୁ"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଅଡିଓ ଫାଇଲ୍‌କୁ ଟ୍ରାସ୍‌ରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଅଡିଓ ଫାଇଲ୍‌କୁ ଟ୍ରାସ୍‌ରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଅଡିଓ ଫାଇଲକୁ ଡିଲିଟ୍ କରିବାକୁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଅଡିଓ ଫାଇଲକୁ ଡିଲିଟ୍ କରିବାକୁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଭିଡିଓକୁ ଟ୍ରାସ୍‌ରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଭିଡିଓ‌କୁ ଟ୍ରାସ୍‌ରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଭିଡିଓକୁ ଡିଲିଟ୍ କରିବାକୁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଭିଡିଓକୁ ଡିଲିଟ୍ କରିବାକୁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଫଟୋକୁ ଟ୍ରାସ୍‌ରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଫଟୋକୁ ଟ୍ରାସ୍‌ରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଫଟୋକୁ ଡିଲିଟ୍ କରିବାକୁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଫଟୋକୁ ଡିଲିଟ୍ କରିବାକୁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଆଇଟମ୍‌କୁ ଟ୍ରାସ୍‌ରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଆଇଟମ୍‌କୁ ଟ୍ରାସ୍‌ରୁ ବାହାର କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଆଇଟମକୁ ଡିଲିଟ୍ କରିବାକୁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
+      <item quantity="one">ଏହି ଆଇଟମକୁ ଡିଲିଟ୍ କରିବାକୁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ଟ୍ରାସ୍‌ରୁ ବାହାରକୁ ଆଣନ୍ତୁ"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"ବାତିଲ୍ କରନ୍ତୁ"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଅଡିଓ ଫାଇଲ୍ ଡିଲିଟ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଅଡିଓ ଫାଇଲ୍‌କୁ ଡିଲିଟ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଭିଡିଓକୁ ଡିଲିଟ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଭିଡିଓକୁ ଡିଲିଟ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଫଟୋକୁ ଡିଲିଟ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଫଟୋକୁ ଡିଲିଟ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g>ଟି ଆଇଟମ୍‌କୁ ଡିଲିଟ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_1">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-      <item quantity="one">ଏହି ଆଇଟମ୍‌କୁ ଡିଲିଟ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME_0">^1</xliff:g>କୁ ଅନୁମତି ଦେବେ?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"ଡିଲିଟ୍ କରନ୍ତୁ"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"ବାତିଲ୍ କରନ୍ତୁ"</string>
 </resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 23a36f6..cb5e9b4 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -21,7 +21,7 @@
     <string name="app_label" msgid="9035307001052716210">"ਮੀਡੀਆ ਸਟੋਰੇਜ"</string>
     <string name="artist_label" msgid="8105600993099120273">"ਕਲਾਕਾਰ"</string>
     <string name="unknown" msgid="2059049215682829375">"ਅਗਿਆਤ"</string>
-    <string name="root_images" msgid="5861633549189045666">"ਚਿਤਰ"</string>
+    <string name="root_images" msgid="5861633549189045666">"ਚਿੱਤਰ"</string>
     <string name="root_videos" msgid="8792703517064649453">"ਵੀਡੀਓ"</string>
     <string name="root_audio" msgid="3505830755201326018">" ਆਡੀਓ"</string>
     <string name="root_documents" msgid="3829103301363849237">"ਦਸਤਾਵੇਜ਼"</string>
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"ਜਾਰੀ ਰੱਖੋ"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"ਕਰਨ ਦਿਓ"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"ਨਾ ਕਰਨ ਦਿਓ"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">ਇਸ ਤੋਂ ਇਲਾਵਾ <xliff:g id="COUNT_1">^1</xliff:g> ਵਾਧੂ ਆਈਟਮ</item>
       <item quantity="other">ਇਸ ਤੋਂ ਇਲਾਵਾ <xliff:g id="COUNT_1">^1</xliff:g> ਵਾਧੂ ਆਈਟਮਾਂ</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਡੀਓ ਫ਼ਾਈਲ ਨੂੰ ਬਦਲਣ ਦੇਣਾ ਹੈ?</item>
-      <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਡੀਓ ਫ਼ਾਈਲਾਂ ਨੂੰ ਬਦਲਣ ਦੇਣਾ ਹੈ?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"ਅਸਥਾਈ ਐਪ ਫ਼ਾਈਲਾਂ ਨੂੰ ਕਲੀਅਰ ਕਰੋ"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ਕੁਝ ਅਸਥਾਈ ਫ਼ਾਈਲਾਂ ਕਲੀਅਰ ਕਰਨਾ ਚਾਹੁੰਦੀ ਹੈ। ਇਸਦੇ ਨਤੀਜੇ ਵਜੋਂ ਬੈਟਰੀ ਜਾਂ ਸੈਲਿਊਲਰ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਵਧ ਸਕਦੀ ਹੈ।"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"ਅਸਥਾਈ ਐਪ ਫ਼ਾਈਲਾਂ ਨੂੰ ਕਲੀਅਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
+    <string name="clear" msgid="5524638938415865915">"ਕਲੀਅਰ ਕਰੋ"</string>
+    <string name="allow" msgid="8885707816848569619">"ਆਗਿਆ ਦਿਓ"</string>
+    <string name="deny" msgid="6040983710442068936">"ਮਨ੍ਹਾ ਕਰੋ"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਡੀਓ ਫ਼ਾਈਲ ਨੂੰ ਸੋਧਣ ਦੇਣਾ ਹੈ?</item>
+      <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਡੀਓ ਫ਼ਾਈਲਾਂ ਨੂੰ ਸੋਧਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਵੀਡੀਓ ਨੂੰ ਬਦਲਣ ਦੇਣਾ ਹੈ?</item>
-      <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਵੀਡੀਓ ਨੂੰ ਬਦਲਣ ਦੇਣਾ ਹੈ?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਵੀਡੀਓ ਨੂੰ ਸੋਧਣ ਦੇਣਾ ਹੈ?</item>
+      <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਵੀਡੀਓ ਨੂੰ ਸੋਧਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਫ਼ੋਟੋ ਨੂੰ ਬਦਲਣ ਦੇਣਾ ਹੈ?</item>
-      <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਫ਼ੋਟੋਆਂ ਨੂੰ ਬਦਲਣ ਦੇਣਾ ਹੈ?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਫ਼ੋਟੋ ਨੂੰ ਸੋਧਣ ਦੇਣਾ ਹੈ?</item>
+      <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਫ਼ੋਟੋਆਂ ਨੂੰ ਸੋਧਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਈਟਮ ਨੂੰ ਬਦਲਣ ਦੇਣਾ ਹੈ?</item>
-      <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਈਟਮਾਂ ਨੂੰ ਬਦਲਣ ਦੇਣਾ ਹੈ?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਈਟਮ ਨੂੰ ਸੋਧਣ ਦੇਣਾ ਹੈ?</item>
+      <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਈਟਮਾਂ ਨੂੰ ਸੋਧਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"ਬਦਲੋ"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"ਰੱਦ ਕਰੋ"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਡੀਓ ਫ਼ਾਈਲ ਨੂੰ ਰੱਦੀ ਵਿੱਚ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
       <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਡੀਓ ਫ਼ਾਈਲਾਂ ਨੂੰ ਰੱਦੀ ਵਿੱਚ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">ਇਸ ਆਡੀਓ ਫ਼ਾਈਲ ਨੂੰ <xliff:g id="DURATION_1">^3</xliff:g> ਦਿਨ ਬਾਅਦ ਸਥਾਈ ਤੌਰ \'ਤੇ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ</item>
-      <item quantity="other">ਇਹਨਾਂ ਆਡੀਓ ਫ਼ਾਈਲਾਂ ਨੂੰ <xliff:g id="DURATION_1">^3</xliff:g> ਦਿਨਾਂ ਬਾਅਦ ਸਥਾਈ ਤੌਰ \'ਤੇ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਵੀਡੀਓ ਨੂੰ ਰੱਦੀ ਵਿੱਚ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
       <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਵੀਡੀਓ ਨੂੰ ਰੱਦੀ ਵਿੱਚ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">ਇਸ ਵੀਡੀਓ ਨੂੰ <xliff:g id="DURATION_1">^3</xliff:g> ਦਿਨ ਬਾਅਦ ਸਥਾਈ ਤੌਰ \'ਤੇ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ</item>
-      <item quantity="other">ਇਹਨਾਂ ਵੀਡੀਓ ਨੂੰ <xliff:g id="DURATION_1">^3</xliff:g> ਦਿਨਾਂ ਬਾਅਦ ਸਥਾਈ ਤੌਰ \'ਤੇ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਫ਼ੋਟੋ ਨੂੰ ਰੱਦੀ ਵਿੱਚ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
       <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਫ਼ੋਟੋਆਂ ਨੂੰ ਰੱਦੀ ਵਿੱਚ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">ਇਸ ਫ਼ੋਟੋ ਨੂੰ <xliff:g id="DURATION_1">^3</xliff:g> ਦਿਨ ਬਾਅਦ ਸਥਾਈ ਤੌਰ \'ਤੇ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ</item>
-      <item quantity="other">ਇਹਨਾਂ ਫ਼ੋਟੋਆਂ ਨੂੰ <xliff:g id="DURATION_1">^3</xliff:g> ਦਿਨਾਂ ਬਾਅਦ ਸਥਾਈ ਤੌਰ \'ਤੇ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਈਟਮ ਨੂੰ ਰੱਦੀ ਵਿੱਚ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
       <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਈਟਮਾਂ ਨੂੰ ਰੱਦੀ ਵਿੱਚ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">ਇਸ ਆਈਟਮ ਨੂੰ <xliff:g id="DURATION_1">^3</xliff:g> ਦਿਨ ਬਾਅਦ ਸਥਾਈ ਤੌਰ \'ਤੇ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ</item>
-      <item quantity="other">ਇਹਨਾਂ ਆਈਟਮਾਂ ਨੂੰ <xliff:g id="DURATION_1">^3</xliff:g> ਦਿਨਾਂ ਬਾਅਦ ਸਥਾਈ ਤੌਰ \'ਤੇ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ਰੱਦੀ ਵਿੱਚ ਲਿਜਾਓ"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"ਰੱਦ ਕਰੋ"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਡੀਓ ਫ਼ਾਈਲ ਨੂੰ ਰੱਦੀ ਤੋਂ ਬਾਹਰ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
       <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਡੀਓ ਫ਼ਾਈਲਾਂ ਨੂੰ ਰੱਦੀ ਤੋਂ ਬਾਹਰ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਵੀਡੀਓ ਨੂੰ ਰੱਦੀ ਤੋਂ ਬਾਹਰ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
       <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਵੀਡੀਓ ਨੂੰ ਰੱਦੀ ਤੋਂ ਬਾਹਰ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਫ਼ੋਟੋ ਨੂੰ ਰੱਦੀ ਤੋਂ ਬਾਹਰ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
       <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਫ਼ੋਟੋਆਂ ਨੂੰ ਰੱਦੀ ਤੋਂ ਬਾਹਰ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਈਟਮ ਨੂੰ ਰੱਦੀ ਤੋਂ ਬਾਹਰ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
-      <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਈਟਾਂਮ ਨੂੰ ਰੱਦੀ ਤੋਂ ਬਾਹਰ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
+      <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਈਟਮਾਂ ਨੂੰ ਰੱਦੀ ਤੋਂ ਬਾਹਰ ਲਿਜਾਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ਰੱਦੀ ਵਿੱਚੋਂ ਬਾਹਰ ਲਿਜਾਓ"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"ਰੱਦ ਕਰੋ"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਡੀਓ ਫ਼ਾਈਲ ਨੂੰ ਮਿਟਾਉਣ ਦੇਣਾ ਹੈ?</item>
       <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਡੀਓ ਫ਼ਾਈਲਾਂ ਨੂੰ ਮਿਟਾਉਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਵੀਡੀਓ ਨੂੰ ਮਿਟਾਉਣ ਦੇਣਾ ਹੈ?</item>
       <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਵੀਡੀਓ ਨੂੰ ਮਿਟਾਉਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਫ਼ੋਟੋ ਨੂੰ ਮਿਟਾਉਣ ਦੇਣਾ ਹੈ?</item>
       <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਫ਼ੋਟੋਆਂ ਨੂੰ ਮਿਟਾਉਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਈਟਮ ਨੂੰ ਮਿਟਾਉਣ ਦੇਣਾ ਹੈ?</item>
       <item quantity="other">ਕੀ <xliff:g id="APP_NAME_1">^1</xliff:g> ਨੂੰ <xliff:g id="COUNT">^2</xliff:g> ਆਈਟਮਾਂ ਨੂੰ ਮਿਟਾਉਣ ਦੇਣਾ ਹੈ?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"ਮਿਟਾਓ"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"ਰੱਦ ਕਰੋ"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index ceda3c2..ea4a8ce 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -21,7 +21,7 @@
     <string name="app_label" msgid="9035307001052716210">"Przechowywanie multimediów"</string>
     <string name="artist_label" msgid="8105600993099120273">"Wykonawca"</string>
     <string name="unknown" msgid="2059049215682829375">"Nieznany"</string>
-    <string name="root_images" msgid="5861633549189045666">"Grafika"</string>
+    <string name="root_images" msgid="5861633549189045666">"Obrazy"</string>
     <string name="root_videos" msgid="8792703517064649453">"Filmy"</string>
     <string name="root_audio" msgid="3505830755201326018">"Dźwięk"</string>
     <string name="root_documents" msgid="3829103301363849237">"Dokumenty"</string>
@@ -29,147 +29,118 @@
     <string name="permission_required_action" msgid="706370952366113539">"Dalej"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Zezwól"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Odmów"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="few">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="many">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="few">I <xliff:g id="COUNT_1">^1</xliff:g> dodatkowe elementy</item>
       <item quantity="many">I <xliff:g id="COUNT_1">^1</xliff:g> dodatkowych elementów</item>
       <item quantity="other">I <xliff:g id="COUNT_1">^1</xliff:g> dodatkowego elementu</item>
       <item quantity="one">I <xliff:g id="COUNT_0">^1</xliff:g> dodatkowy element</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmienianie <xliff:g id="COUNT">^2</xliff:g> plików audio?</item>
-      <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmienianie <xliff:g id="COUNT">^2</xliff:g> plików audio?</item>
-      <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmienianie <xliff:g id="COUNT">^2</xliff:g> pliku audio?</item>
-      <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na zmienianie tego pliku audio?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Usuwanie tymczasowych plików aplikacji"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"Aplikacja <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> chce usunąć niektóre pliki tymczasowe. Może to spowodować zwiększenie wykorzystania baterii lub komórkowej transmisji danych."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Usuwam tymczasowe pliki aplikacji…"</string>
+    <string name="clear" msgid="5524638938415865915">"Wyczyść"</string>
+    <string name="allow" msgid="8885707816848569619">"Zezwól"</string>
+    <string name="deny" msgid="6040983710442068936">"Odmów"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmodyfikowanie <xliff:g id="COUNT">^2</xliff:g> plików audio?</item>
+      <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmodyfikowanie <xliff:g id="COUNT">^2</xliff:g> plików audio?</item>
+      <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmodyfikowanie <xliff:g id="COUNT">^2</xliff:g> pliku audio?</item>
+      <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na zmodyfikowanie tego pliku audio?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmienianie <xliff:g id="COUNT">^2</xliff:g> filmów?</item>
-      <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmienianie <xliff:g id="COUNT">^2</xliff:g> filmów?</item>
-      <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmienianie <xliff:g id="COUNT">^2</xliff:g> filmu?</item>
-      <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na zmienianie tego filmu?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmodyfikowanie <xliff:g id="COUNT">^2</xliff:g> filmów?</item>
+      <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmodyfikowanie <xliff:g id="COUNT">^2</xliff:g> filmów?</item>
+      <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmodyfikowanie <xliff:g id="COUNT">^2</xliff:g> filmu?</item>
+      <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na zmodyfikowanie tego filmu?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmienianie <xliff:g id="COUNT">^2</xliff:g> zdjęć?</item>
-      <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmienianie <xliff:g id="COUNT">^2</xliff:g> zdjęć?</item>
-      <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmienianie <xliff:g id="COUNT">^2</xliff:g> zdjęcia?</item>
-      <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na zmienianie tego zdjęcia?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmodyfikowanie <xliff:g id="COUNT">^2</xliff:g> zdjęć?</item>
+      <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmodyfikowanie <xliff:g id="COUNT">^2</xliff:g> zdjęć?</item>
+      <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmodyfikowanie <xliff:g id="COUNT">^2</xliff:g> zdjęcia?</item>
+      <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na zmodyfikowanie tego zdjęcia?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmienianie <xliff:g id="COUNT">^2</xliff:g> elementów?</item>
-      <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmienianie <xliff:g id="COUNT">^2</xliff:g> elementów?</item>
-      <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmienianie <xliff:g id="COUNT">^2</xliff:g> elementu?</item>
-      <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na zmienianie tego elementu?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmodyfikowanie <xliff:g id="COUNT">^2</xliff:g> elementów?</item>
+      <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmodyfikowanie <xliff:g id="COUNT">^2</xliff:g> elementów?</item>
+      <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na zmodyfikowanie <xliff:g id="COUNT">^2</xliff:g> elementu?</item>
+      <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na zmodyfikowanie tego elementu?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Zmień"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Anuluj"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> plików audio do kosza?</item>
       <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> plików audio do kosza?</item>
       <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> pliku audio do kosza?</item>
       <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na przeniesienie tego pliku audio do kosza?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="few">Te pliki audio zostaną trwale usunięte po <xliff:g id="DURATION_1">^3</xliff:g> dniach</item>
-      <item quantity="many">Te pliki audio zostaną trwale usunięte po <xliff:g id="DURATION_1">^3</xliff:g> dniach</item>
-      <item quantity="other">Te pliki audio zostaną trwale usunięte po <xliff:g id="DURATION_1">^3</xliff:g> dnia</item>
-      <item quantity="one">Ten plik audio zostanie trwale usunięty po <xliff:g id="DURATION_0">^3</xliff:g> dniu</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> filmów do kosza?</item>
       <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> filmów do kosza?</item>
       <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> filmu do kosza?</item>
       <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na przeniesienie tego filmu do kosza?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="few">Te filmy zostaną trwale usunięte po <xliff:g id="DURATION_1">^3</xliff:g> dniach</item>
-      <item quantity="many">Te filmy zostaną trwale usunięte po <xliff:g id="DURATION_1">^3</xliff:g> dniach</item>
-      <item quantity="other">Te filmy zostaną trwale usunięte po <xliff:g id="DURATION_1">^3</xliff:g> dnia</item>
-      <item quantity="one">Ten film zostanie trwale usunięty po <xliff:g id="DURATION_0">^3</xliff:g> dniu</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> zdjęć do kosza?</item>
       <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> zdjęć do kosza?</item>
       <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> zdjęcia do kosza?</item>
       <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na przeniesienie tego zdjęcia do kosza?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="few">Te zdjęcia zostaną trwale usunięte po <xliff:g id="DURATION_1">^3</xliff:g> dniach</item>
-      <item quantity="many">Te zdjęcia zostaną trwale usunięte po <xliff:g id="DURATION_1">^3</xliff:g> dniach</item>
-      <item quantity="other">Te zdjęcia zostaną trwale usunięte po <xliff:g id="DURATION_1">^3</xliff:g> dnia</item>
-      <item quantity="one">To zdjęcie zostanie trwale usunięte po <xliff:g id="DURATION_0">^3</xliff:g> dniu</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> elementów do kosza?</item>
       <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> elementów do kosza?</item>
       <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> elementu do kosza?</item>
       <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na przeniesienie tego elementu do kosza?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="few">Te elementy zostaną trwale usunięte po <xliff:g id="DURATION_1">^3</xliff:g> dniach</item>
-      <item quantity="many">Te elementy zostaną trwale usunięte po <xliff:g id="DURATION_1">^3</xliff:g> dniach</item>
-      <item quantity="other">Te elementy zostaną trwale usunięte po <xliff:g id="DURATION_1">^3</xliff:g> dnia</item>
-      <item quantity="one">Ten element zostanie trwale usunięty po <xliff:g id="DURATION_0">^3</xliff:g> dniu</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Przenieś do kosza"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Anuluj"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> plików audio z kosza?</item>
       <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> plików audio z kosza?</item>
       <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> pliku audio z kosza?</item>
       <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na przeniesienie tego pliku audio z kosza?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> filmów z kosza?</item>
       <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> filmów z kosza?</item>
       <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> filmu z kosza?</item>
       <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na przeniesienie tego filmu z kosza?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> zdjęć z kosza?</item>
       <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> zdjęć z kosza?</item>
       <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> zdjęcia z kosza?</item>
       <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na przeniesienie tego zdjęcia z kosza?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> elementów z kosza?</item>
       <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> elementów z kosza?</item>
       <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na przeniesienie <xliff:g id="COUNT">^2</xliff:g> elementu z kosza?</item>
       <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na przeniesienie tego elementu z kosza?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Przenieś z kosza"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Anuluj"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na usunięcie <xliff:g id="COUNT">^2</xliff:g> plików audio?</item>
       <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na usunięcie <xliff:g id="COUNT">^2</xliff:g> plików audio?</item>
       <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na usunięcie <xliff:g id="COUNT">^2</xliff:g> pliku audio?</item>
       <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na usunięcie tego pliku audio?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na usunięcie <xliff:g id="COUNT">^2</xliff:g> filmów?</item>
       <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na usunięcie <xliff:g id="COUNT">^2</xliff:g> filmów?</item>
       <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na usunięcie <xliff:g id="COUNT">^2</xliff:g> filmu?</item>
       <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na usunięcie tego filmu?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na usunięcie <xliff:g id="COUNT">^2</xliff:g> zdjęć?</item>
       <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na usunięcie <xliff:g id="COUNT">^2</xliff:g> zdjęć?</item>
       <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na usunięcie <xliff:g id="COUNT">^2</xliff:g> zdjęcia?</item>
       <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na usunięcie tego zdjęcia?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="few">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na usunięcie <xliff:g id="COUNT">^2</xliff:g> elementów?</item>
       <item quantity="many">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na usunięcie <xliff:g id="COUNT">^2</xliff:g> elementów?</item>
       <item quantity="other">Zezwolić aplikacji <xliff:g id="APP_NAME_1">^1</xliff:g> na usunięcie <xliff:g id="COUNT">^2</xliff:g> elementu?</item>
       <item quantity="one">Zezwolić aplikacji <xliff:g id="APP_NAME_0">^1</xliff:g> na usunięcie tego elementu?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Usuń"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Anuluj"</string>
 </resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index efc6c0b..d0ff6d6 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continuar"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Permitir"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Negar"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Mais <xliff:g id="COUNT_1">^1</xliff:g> item extra</item>
       <item quantity="other">Mais <xliff:g id="COUNT_1">^1</xliff:g> itens extras</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> arquivo de áudio?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> arquivos de áudio?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Limpar arquivos temporários de apps"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"O app <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> quer apagar alguns arquivos temporários. Isso pode aumentar o uso de bateria ou de dados da rede celular."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Limpando arquivos temporários de apps…"</string>
+    <string name="clear" msgid="5524638938415865915">"Limpar"</string>
+    <string name="allow" msgid="8885707816848569619">"Permitir"</string>
+    <string name="deny" msgid="6040983710442068936">"Negar"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> arquivo de áudio?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> arquivos de áudio?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> vídeo?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> vídeo?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> foto?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> foto?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> item?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> itens?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> item?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> itens?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Mudar"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Cancelar"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> arquivo de áudio para a lixeira?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> arquivos de áudio para a lixeira?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Esse arquivo de áudio será excluído permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-      <item quantity="other">Esses arquivos de áudio serão excluídos permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> vídeo para a lixeira?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> vídeos para a lixeira?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Esse vídeo será excluído permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-      <item quantity="other">Esses vídeos serão excluídos permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> foto para a lixeira?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> fotos para a lixeira?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Essa foto será excluída permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-      <item quantity="other">Essas fotos serão excluídas permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> item para a lixeira?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> itens para a lixeira?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Esse item será excluído permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-      <item quantity="other">Esses itens serão excluídos permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> arquivo de áudio da lixeira?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> arquivos de áudio da lixeira?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Mover para a lixeira"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Cancelar"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> arquivo de áudio da lixeira?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> arquivos de áudio da lixeira?</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> vídeo da lixeira?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> vídeos da lixeira?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> vídeo da lixeira?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> vídeos da lixeira?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> foto da lixeira?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> fotos da lixeira?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> foto da lixeira?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> fotos da lixeira?</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> item da lixeira?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> itens da lixeira?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> item da lixeira?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> itens da lixeira?</item>
-    </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Remover da lixeira"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Cancelar"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> arquivo de áudio?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> arquivos de áudio?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> vídeo?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> foto?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> item?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> itens?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Excluir"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Cancelar"</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 9bedb45..27c1cb0 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continuar"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Permitir"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Recusar"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">E <xliff:g id="COUNT_1">^1</xliff:g> itens adicionais</item>
       <item quantity="one">E <xliff:g id="COUNT_0">^1</xliff:g> item adicional</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> altere <xliff:g id="COUNT">^2</xliff:g> ficheiros de áudio?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> altere este ficheiro de áudio?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Limpe ficheiros de apps temporários"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"A app <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> pretende limpar alguns ficheiros temporários. Isto pode resultar num aumento da utilização da bateria ou dos dados móveis."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"A limpar ficheiros temporários da app…"</string>
+    <string name="clear" msgid="5524638938415865915">"Limpar"</string>
+    <string name="allow" msgid="8885707816848569619">"Permitir"</string>
+    <string name="deny" msgid="6040983710442068936">"Recusar"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> ficheiros de áudio?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> modifique este ficheiro de áudio?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> altere <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> altere este vídeo?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> modifique este vídeo?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> altere <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> altere esta foto?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> modifique esta foto?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> altere <xliff:g id="COUNT">^2</xliff:g> itens?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> altere este item?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> itens?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> modifique este item?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Alterar"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Cancelar"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> ficheiros de áudio para o lixo?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> mova este ficheiro de áudio para o lixo?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> ficheiros de áudio para o lixo?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> mova este ficheiro de áudio para o lixo?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Estes ficheiros de áudio serão eliminados definitivamente após <xliff:g id="DURATION_1">^3</xliff:g> dias.</item>
-      <item quantity="one">Este ficheiro de áudio será eliminado definitivamente após <xliff:g id="DURATION_0">^3</xliff:g> dias.</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> vídeos para o lixo?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> mova este vídeo para o lixo?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> vídeos para o lixo?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> mova este vídeo para o lixo?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> fotos para o lixo?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> mova esta foto para o lixo?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Estes vídeos serão eliminados definitivamente após <xliff:g id="DURATION_1">^3</xliff:g> dias.</item>
-      <item quantity="one">Este vídeo será eliminado definitivamente após <xliff:g id="DURATION_0">^3</xliff:g> dias.</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> itens para o lixo?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> mova este item para o lixo?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Permite que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> fotos para o lixo?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> mova esta foto para o lixo?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> ficheiros de áudio do lixo?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> retire este ficheiro de áudio do lixo?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Estas fotos serão eliminadas definitivamente após <xliff:g id="DURATION_1">^3</xliff:g> dias.</item>
-      <item quantity="one">Esta foto será eliminada definitivamente após <xliff:g id="DURATION_0">^3</xliff:g> dias.</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> vídeos do lixo?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> retire este vídeo do lixo?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> itens para o lixo?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> mova este item para o lixo?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> fotos do lixo?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> retire esta foto do lixo?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Estes itens serão eliminados definitivamente após <xliff:g id="DURATION_1">^3</xliff:g> dias.</item>
-      <item quantity="one">Este item será eliminado definitivamente após <xliff:g id="DURATION_0">^3</xliff:g> dias.</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> itens do lixo?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> retire este item do lixo?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Mover para o lixo"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Cancelar"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> ficheiros de áudio do lixo?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> retire este ficheiro de áudio do lixo?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> ficheiros de áudio?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este ficheiro de áudio?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> vídeos do lixo?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> retire este vídeo do lixo?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este vídeo?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> fotos do lixo?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> retire esta foto do lixo?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> elimine esta foto?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> itens do lixo?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> retire este item do lixo?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Permitir que a app <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> itens?</item>
+      <item quantity="one">Permitir que a app <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este item?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Retirar do lixo"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Cancelar"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> ficheiros de áudio?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este ficheiro de áudio?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este vídeo?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> elimine esta foto?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Pretende permitir que a aplicação <xliff:g id="APP_NAME_1">^1</xliff:g> elimine <xliff:g id="COUNT">^2</xliff:g> itens?</item>
-      <item quantity="one">Pretende permitir que a aplicação <xliff:g id="APP_NAME_0">^1</xliff:g> elimine este item?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Eliminar"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Cancelar"</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index efc6c0b..d0ff6d6 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continuar"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Permitir"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Negar"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Mais <xliff:g id="COUNT_1">^1</xliff:g> item extra</item>
       <item quantity="other">Mais <xliff:g id="COUNT_1">^1</xliff:g> itens extras</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> arquivo de áudio?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> arquivos de áudio?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Limpar arquivos temporários de apps"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"O app <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> quer apagar alguns arquivos temporários. Isso pode aumentar o uso de bateria ou de dados da rede celular."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Limpando arquivos temporários de apps…"</string>
+    <string name="clear" msgid="5524638938415865915">"Limpar"</string>
+    <string name="allow" msgid="8885707816848569619">"Permitir"</string>
+    <string name="deny" msgid="6040983710442068936">"Negar"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> arquivo de áudio?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> arquivos de áudio?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> vídeo?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> vídeo?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> foto?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> foto?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> item?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mude <xliff:g id="COUNT">^2</xliff:g> itens?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> item?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> modifique <xliff:g id="COUNT">^2</xliff:g> itens?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Mudar"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Cancelar"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> arquivo de áudio para a lixeira?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> arquivos de áudio para a lixeira?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Esse arquivo de áudio será excluído permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-      <item quantity="other">Esses arquivos de áudio serão excluídos permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> vídeo para a lixeira?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> vídeos para a lixeira?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Esse vídeo será excluído permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-      <item quantity="other">Esses vídeos serão excluídos permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> foto para a lixeira?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> fotos para a lixeira?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Essa foto será excluída permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-      <item quantity="other">Essas fotos serão excluídas permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> item para a lixeira?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> mova <xliff:g id="COUNT">^2</xliff:g> itens para a lixeira?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Esse item será excluído permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
-      <item quantity="other">Esses itens serão excluídos permanentemente após <xliff:g id="DURATION_1">^3</xliff:g> dias</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> arquivo de áudio da lixeira?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> arquivos de áudio da lixeira?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Mover para a lixeira"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Cancelar"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> arquivo de áudio da lixeira?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> arquivos de áudio da lixeira?</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> vídeo da lixeira?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> vídeos da lixeira?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> vídeo da lixeira?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> vídeos da lixeira?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> foto da lixeira?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> fotos da lixeira?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> foto da lixeira?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> fotos da lixeira?</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> item da lixeira?</item>
+      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> retire <xliff:g id="COUNT">^2</xliff:g> itens da lixeira?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> item da lixeira?</item>
-      <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> remova <xliff:g id="COUNT">^2</xliff:g> itens da lixeira?</item>
-    </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Remover da lixeira"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Cancelar"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> arquivo de áudio?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> arquivos de áudio?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> vídeo?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> vídeos?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> foto?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> fotos?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> item?</item>
       <item quantity="other">Permitir que o app <xliff:g id="APP_NAME_1">^1</xliff:g> exclua <xliff:g id="COUNT">^2</xliff:g> itens?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Excluir"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Cancelar"</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 0c3fc33..8df20b8 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -29,126 +29,100 @@
     <string name="permission_required_action" msgid="706370952366113539">"Continuați"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Permiteți"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Refuzați"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="few">+ <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+ <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+ <xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="few">Și încă <xliff:g id="COUNT_1">^1</xliff:g> elemente</item>
       <item quantity="other">Și încă <xliff:g id="COUNT_1">^1</xliff:g> de elemente</item>
       <item quantity="one">Și încă <xliff:g id="COUNT_0">^1</xliff:g> element</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> fișiere audio?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> de fișiere audio?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să modifice acest fișier audio?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Ștergeți fișierele temporare ale aplicațiilor"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> vrea să șteargă fișiere temporare. Aceasta poate duce la creșterea gradului de utilizare a bateriei sau a datelor mobile."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Se șterg fișierele temporare ale aplicațiilor…"</string>
+    <string name="clear" msgid="5524638938415865915">"Ștergeți"</string>
+    <string name="allow" msgid="8885707816848569619">"Permiteți"</string>
+    <string name="deny" msgid="6040983710442068936">"Refuzați"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> fișiere audio?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> de fișiere audio?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să modifice acest fișier audio?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> videoclipuri?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> de videoclipuri?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să modifice acest videoclip?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> videoclipuri?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> de videoclipuri?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să modifice acest videoclip?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> fotografii?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> de fotografii?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să modifice această fotografie?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> fotografii?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> de fotografii?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să modifice această fotografie?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> elemente?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> de elemente?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să modifice acest element?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> elemente?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să modifice <xliff:g id="COUNT">^2</xliff:g> de elemente?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să modifice acest element?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Schimbați"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Anulați"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> fișiere audio în coșul de gunoi?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> de fișiere audio în coșul de gunoi?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să mute acest fișier audio în coșul de gunoi?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> fișiere audio în coșul de gunoi?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> de fișiere audio în coșul de gunoi?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să mute acest fișier audio în coșul de gunoi?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="few">Fișierele audio vor fi șterse definitiv după <xliff:g id="DURATION_1">^3</xliff:g> zile</item>
-      <item quantity="other">Fișierele audio vor fi șterse definitiv după <xliff:g id="DURATION_1">^3</xliff:g> de zile</item>
-      <item quantity="one">Fișierul audio va fi șters definitiv după <xliff:g id="DURATION_0">^3</xliff:g> zi</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> videoclipuri în coșul de gunoi?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> de videoclipuri în coșul de gunoi?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să mute acest videoclip în coșul de gunoi?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> videoclipuri în coșul de gunoi?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> de videoclipuri în coșul de gunoi?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să mute acest videoclip în coșul de gunoi?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> fotografii în coșul de gunoi?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> de fotografii în coșul de gunoi?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să mute această fotografie în coșul de gunoi?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="few">Videoclipurile vor fi șterse definitiv după <xliff:g id="DURATION_1">^3</xliff:g> zile.</item>
-      <item quantity="other">Videoclipurile vor fi șterse definitiv după <xliff:g id="DURATION_1">^3</xliff:g> de zile.</item>
-      <item quantity="one">Videoclipul va fi șters definitiv după <xliff:g id="DURATION_0">^3</xliff:g> zi</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> elemente în coșul de gunoi?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> de elemente în coșul de gunoi?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să mute acest element în coșul de gunoi?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> fotografii în coșul de gunoi?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> de fotografii în coșul de gunoi?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să mute această fotografie în coșul de gunoi?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> fișiere audio din coșul de gunoi?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> de fișiere audio din coșul de gunoi?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să scoată acest fișier audio din coșul de gunoi?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="few">Fotografiile vor fi șterse definitiv după <xliff:g id="DURATION_1">^3</xliff:g> zile.</item>
-      <item quantity="other">Fotografiile vor fi șterse definitiv după <xliff:g id="DURATION_1">^3</xliff:g> de zile.</item>
-      <item quantity="one">Fotografia va fi ștearsă definitiv după <xliff:g id="DURATION_0">^3</xliff:g> zi</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> videoclipuri din coșul de gunoi?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> de videoclipuri din coșul de gunoi?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să scoată acest videoclip din coșul de gunoi?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> elemente în coșul de gunoi?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să mute <xliff:g id="COUNT">^2</xliff:g> de elemente în coșul de gunoi?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să mute acest element în coșul de gunoi?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> fotografii din coșul de gunoi?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> de fotografii din coșul de gunoi?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să scoată această fotografie din coșul de gunoi?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="few">Elementele vor fi șterse definitiv după <xliff:g id="DURATION_1">^3</xliff:g> zile.</item>
-      <item quantity="other">Elementele vor fi șterse definitiv după <xliff:g id="DURATION_1">^3</xliff:g> de zile.</item>
-      <item quantity="one">Elementul va fi șters definitiv după <xliff:g id="DURATION_0">^3</xliff:g> zi</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> elemente din coșul de gunoi?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> de elemente din coșul de gunoi?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să scoată acest element din coșul de gunoi?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Mutați în Coșul de gunoi"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Anulați"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> fișiere audio din coșul de gunoi?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> de fișiere audio din coșul de gunoi?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să scoată acest fișier audio din coșul de gunoi?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> fișiere audio?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> de fișiere audio?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să șteargă acest fișier audio?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> videoclipuri din coșul de gunoi?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> de videoclipuri din coșul de gunoi?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să scoată acest videoclip din coșul de gunoi?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> videoclipuri?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> de videoclipuri?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să șteargă acest videoclip?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> fotografii din coșul de gunoi?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> de fotografii din coșul de gunoi?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să scoată această fotografie din coșul de gunoi?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> fotografii?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> de fotografii?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să șteargă această fotografie?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> elemente din coșul de gunoi?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să scoată <xliff:g id="COUNT">^2</xliff:g> de elemente din coșul de gunoi?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să scoată acest element din coșul de gunoi?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="few">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> elemente?</item>
+      <item quantity="other">Permiteți ca <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> de elemente?</item>
+      <item quantity="one">Permiteți ca <xliff:g id="APP_NAME_0">^1</xliff:g> să șteargă acest element?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Scoateți din coșul de gunoi"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Anulați"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> fișiere audio?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> de fișiere audio?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să șteargă acest fișier audio?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> videoclipuri?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> de videoclipuri?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să șteargă acest videoclip?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> fotografii?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> de fotografii?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să șteargă această fotografie?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="few">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> elemente?</item>
-      <item quantity="other">Lăsați <xliff:g id="APP_NAME_1">^1</xliff:g> să șteargă <xliff:g id="COUNT">^2</xliff:g> de elemente?</item>
-      <item quantity="one">Lăsați <xliff:g id="APP_NAME_0">^1</xliff:g> să șteargă acest element?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Ștergeți"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Anulați"</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 6dfd99e..d7a1aaa 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -29,147 +29,118 @@
     <string name="permission_required_action" msgid="706370952366113539">"Продолжить"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Разрешить"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Запретить"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">Ещё <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="few">Ещё <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="many">Ещё <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">Ещё <xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">и ещё <xliff:g id="COUNT_1">^1</xliff:g> объект</item>
       <item quantity="few">и ещё <xliff:g id="COUNT_1">^1</xliff:g> объекта</item>
       <item quantity="many">и ещё <xliff:g id="COUNT_1">^1</xliff:g> объектов</item>
       <item quantity="other">и ещё <xliff:g id="COUNT_1">^1</xliff:g> объекта</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Удалить временные файлы приложений"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"Приложение \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\" запрашивает разрешение на удаление временных файлов. Это может увеличить расход заряда или трафика."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Удаление временных файлов приложения…"</string>
+    <string name="clear" msgid="5524638938415865915">"Удалить"</string>
+    <string name="allow" msgid="8885707816848569619">"Разрешить"</string>
+    <string name="deny" msgid="6040983710442068936">"Запретить"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> аудиофайл?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> аудиофайла?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> аудиофайлов?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> аудиофайла?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> видео?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> видео?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> видео?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> видео?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> фото?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> фото?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> фото?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> фото?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> объект?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> объекта?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> объектов?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" изменить <xliff:g id="COUNT">^2</xliff:g> объекта?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Разрешить"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Отмена"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> аудиофайл в корзину?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> аудиофайла в корзину?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> аудиофайлов в корзину?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> аудиофайла в корзину?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Аудиофайлы будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> день.</item>
-      <item quantity="few">Аудиофайлы будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> дня.</item>
-      <item quantity="many">Аудиофайлы будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> дней.</item>
-      <item quantity="other">Аудиофайлы будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> дня.</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> видео в корзину?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> видео в корзину?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> видео в корзину?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> видео в корзину?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Видео будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> день.</item>
-      <item quantity="few">Видео будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> дня.</item>
-      <item quantity="many">Видео будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> дней.</item>
-      <item quantity="other">Видео будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> дня.</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> фото в корзину?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> фото в корзину?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> фото в корзину?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> фото в корзину?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Фото будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> день.</item>
-      <item quantity="few">Фото будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> дня.</item>
-      <item quantity="many">Фото будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> дней.</item>
-      <item quantity="other">Фото будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> дня.</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> объект в корзину?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> объекта в корзину?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> объектов в корзину?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" переместить <xliff:g id="COUNT">^2</xliff:g> объекта в корзину?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Объекты будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> день.</item>
-      <item quantity="few">Объекты будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> дня.</item>
-      <item quantity="many">Объекты будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> дней.</item>
-      <item quantity="other">Объекты будут удалены без возможности восстановления через <xliff:g id="DURATION_1">^3</xliff:g> дня.</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Разрешить"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Отмена"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> аудиофайл из корзины?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> аудиофайла из корзины?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> аудиофайлов из корзины?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> аудиофайла из корзины?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> видео из корзины?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> видео из корзины?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> видео из корзины?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> видео из корзины?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> фото из корзины?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> фото из корзины?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> фото из корзины?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> фото из корзины?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> объект из корзины?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> объекта из корзины?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> объектов из корзины?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" восстановить <xliff:g id="COUNT">^2</xliff:g> объекта из корзины?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Разрешить"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Отмена"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> аудиофайл?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> аудиофайла?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> аудиофайлов?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> аудиофайла?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> видео?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> видео?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> видео?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> видео?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> фото?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> фото?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> фото?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> фото?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> объект?</item>
       <item quantity="few">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> объекта?</item>
       <item quantity="many">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> объектов?</item>
       <item quantity="other">Разрешить приложению \"<xliff:g id="APP_NAME_1">^1</xliff:g>\" удалить <xliff:g id="COUNT">^2</xliff:g> объекта?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Разрешить"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Отмена"</string>
 </resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index f526e25..ad22297 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"ඉදිරියට යන්න"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"ඉඩ දෙන්න"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"ප්‍රතික්ෂේප කරන්න"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">සහ අමතර අයිතම <xliff:g id="COUNT_1">^1</xliff:g></item>
       <item quantity="other">සහ අමතර අයිතම <xliff:g id="COUNT_1">^1</xliff:g></item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g> වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g> වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"තාවකාලික යෙදුම් ගොනු හිස් කරන්න"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> සමහර තාවකාලික ගොනු හිස් කිරීමට කැමතියි. මෙය බැටරි බලයේ හෝ සෙලියුලර් දත්තවල වැඩි භාවිතයකට හේතු විය හැකිය."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"තාවකාලික යෙදුම් ගොනු හිස් කරමින්…"</string>
+    <string name="clear" msgid="5524638938415865915">"හිස් කරන්න"</string>
+    <string name="allow" msgid="8885707816848569619">"ඉඩ දෙන්න"</string>
+    <string name="deny" msgid="6040983710442068936">"ප්‍රතික්ෂේප කරන්න"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g>ක් වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g>ක් වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g> වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g> වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g>ක් වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g>ක් වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g> වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g> වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g>ක් වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g>ක් වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g> වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g> වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g>ක් වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g>ක් වෙනස් කිරීමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"වෙනස් කරන්න"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"අවලංගු කරන්න"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">මෙම ඕඩියෝ ගොනු දින <xliff:g id="DURATION_1">^3</xliff:g>කට පසු ස්ථීරවම මැකෙනු ඇත</item>
-      <item quantity="other">මෙම ඕඩියෝ ගොනු දින <xliff:g id="DURATION_1">^3</xliff:g>කට පසු ස්ථීරවම මැකෙනු ඇත</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">මෙම වීඩියෝ දින <xliff:g id="DURATION_1">^3</xliff:g>කට පසු ස්ථීරවම මැකෙනු ඇත</item>
-      <item quantity="other">මෙම වීඩියෝ දින <xliff:g id="DURATION_1">^3</xliff:g>කට පසු ස්ථීරවම මැකෙනු ඇත</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">මෙම ඡායාරූප දින <xliff:g id="DURATION_1">^3</xliff:g>කට පසු ස්ථීරවම මැකෙනු ඇත</item>
-      <item quantity="other">මෙම ඡායාරූප දින <xliff:g id="DURATION_1">^3</xliff:g>කට පසු ස්ථීරවම මැකෙනු ඇත</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩය වෙත ගෙන යාමට ඉඩ දෙන්නද?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">මෙම අයිතම දින <xliff:g id="DURATION_1">^3</xliff:g>කට පසු ස්ථීරවම මැකෙනු ඇත</item>
-      <item quantity="other">මෙම අයිතම දින <xliff:g id="DURATION_1">^3</xliff:g>කට පසු ස්ථීරවම මැකෙනු ඇත</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g>ක් කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"කුණු කූඩය වෙත ගෙන යන්න"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"අවලංගු කරන්න"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g>ක් මැකීමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g>ක් මැකීමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g>ක් මැකීමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g>ක් මැකීමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g>ක් මැකීමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g>ක් මැකීමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g> කුණු කුඩයෙන් පිටතට ගෙන යාමට ඉඩ දෙන්නද?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g>ක් මැකීමට ඉඩ දෙන්නද?</item>
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g>ක් මැකීමට ඉඩ දෙන්නද?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"කුණු කූඩයෙන් ඉවතට ගෙන යන්න"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"අවලංගු කරන්න"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g> මැකීමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඕඩියෝ ගොනු <xliff:g id="COUNT">^2</xliff:g> මැකීමට ඉඩ දෙන්නද?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g> මැකීමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට වීඩියෝ <xliff:g id="COUNT">^2</xliff:g> මැකීමට ඉඩ දෙන්නද?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g> මැකීමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට ඡායාරූප <xliff:g id="COUNT">^2</xliff:g> මැකීමට ඉඩ දෙන්නද?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="one"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g> මැකීමට ඉඩ දෙන්නද?</item>
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g>ට අයිතම <xliff:g id="COUNT">^2</xliff:g> මැකීමට ඉඩ දෙන්නද?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"මකන්න"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"අවලංගු කරන්න"</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index a00d747..359ba24 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -29,147 +29,118 @@
     <string name="permission_required_action" msgid="706370952366113539">"Pokračovať"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Povoliť"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Zamietnuť"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="few">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="many">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="few">A <xliff:g id="COUNT_1">^1</xliff:g> ďalšie položky</item>
       <item quantity="many">A <xliff:g id="COUNT_1">^1</xliff:g> ďalšej položky</item>
       <item quantity="other">A <xliff:g id="COUNT_1">^1</xliff:g> ďalších položiek</item>
       <item quantity="one">A <xliff:g id="COUNT_0">^1</xliff:g> ďalšia položka</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> zmeniť <xliff:g id="COUNT">^2</xliff:g> zvukové súbory?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
-      <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> zmeniť <xliff:g id="COUNT">^2</xliff:g> zvukových súborov?</item>
-      <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> zmeniť tento zvukový súbor?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Vymazanie dočasných súborov aplikácií"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"Aplikácia <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> chce vymazať niekoľko dočasných súborov. To môže viesť k vyššiemu využívaniu batérie alebo mobilných dát."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Odstraňujú sa dočasné súbory aplikácie…"</string>
+    <string name="clear" msgid="5524638938415865915">"Vymazať"</string>
+    <string name="allow" msgid="8885707816848569619">"Povoliť"</string>
+    <string name="deny" msgid="6040983710442068936">"Zamietnuť"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> upraviť <xliff:g id="COUNT">^2</xliff:g> zvukové súbory?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
+      <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> upraviť <xliff:g id="COUNT">^2</xliff:g> zvukových súborov?</item>
+      <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> upraviť tento zvukový súbor?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> zmeniť <xliff:g id="COUNT">^2</xliff:g> videá?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> videos?</item>
-      <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> zmeniť <xliff:g id="COUNT">^2</xliff:g> videí?</item>
-      <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> zmeniť toto video?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> upraviť <xliff:g id="COUNT">^2</xliff:g> videá?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> videos?</item>
+      <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> upraviť <xliff:g id="COUNT">^2</xliff:g> videí?</item>
+      <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> upraviť toto video?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> zmeniť <xliff:g id="COUNT">^2</xliff:g> fotky?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> change <xliff:g id="COUNT">^2</xliff:g> photos?</item>
-      <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> zmeniť <xliff:g id="COUNT">^2</xliff:g> fotiek?</item>
-      <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> zmeniť túto fotku?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> upraviť <xliff:g id="COUNT">^2</xliff:g> fotky?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> photos?</item>
+      <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> upraviť <xliff:g id="COUNT">^2</xliff:g> fotiek?</item>
+      <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> upraviť túto fotku?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> zmeniť <xliff:g id="COUNT">^2</xliff:g> položky?</item>
-      <item quantity="many">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> zmeniť <xliff:g id="COUNT">^2</xliff:g> položky?</item>
-      <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> zmeniť <xliff:g id="COUNT">^2</xliff:g> položiek?</item>
-      <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> zmeniť túto položku?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> upraviť <xliff:g id="COUNT">^2</xliff:g> položky?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to modify <xliff:g id="COUNT">^2</xliff:g> items?</item>
+      <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> upraviť <xliff:g id="COUNT">^2</xliff:g> položiek?</item>
+      <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> upraviť túto položku?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Zmeniť"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Zrušiť"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> zvukové súbory do koša?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> audio files to trash?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> audio files to trash?</item>
       <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> zvukových súborov do koša?</item>
       <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> presunúť tento zvukový súbor do koša?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="few">Tento zvukový súbor bude po <xliff:g id="DURATION_1">^3</xliff:g> dňoch natrvalo odstránený</item>
-      <item quantity="many">Tento zvukový súbor bude po <xliff:g id="DURATION_1">^3</xliff:g> dňa natrvalo odstránený</item>
-      <item quantity="other">Tento zvukový súbor bude po <xliff:g id="DURATION_1">^3</xliff:g> dňoch natrvalo odstránený</item>
-      <item quantity="one">Tento zvukový súbor bude po <xliff:g id="DURATION_0">^3</xliff:g> dni natrvalo odstránený</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> videá do koša?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> videos to trash?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> videos to trash?</item>
       <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> videí do koša?</item>
       <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> presunúť toto video do koša?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="few">Tieto videá budú po <xliff:g id="DURATION_1">^3</xliff:g> dňoch natrvalo odstránené</item>
-      <item quantity="many">Tieto videá budú po <xliff:g id="DURATION_1">^3</xliff:g> dňa natrvalo odstránené</item>
-      <item quantity="other">Tieto videá budú po <xliff:g id="DURATION_1">^3</xliff:g> dňoch natrvalo odstránené</item>
-      <item quantity="one">Toto video bude po <xliff:g id="DURATION_0">^3</xliff:g> dni natrvalo odstránené</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> fotky do koša?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> photos to trash?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> photos to trash?</item>
       <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> fotiek do koša?</item>
       <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> presunúť túto fotku do koša?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="few">Tieto fotky budú po <xliff:g id="DURATION_1">^3</xliff:g> dňoch natrvalo odstránené</item>
-      <item quantity="many">Tieto fotky budú po <xliff:g id="DURATION_1">^3</xliff:g> dňa natrvalo odstránené</item>
-      <item quantity="other">Tieto fotky budú po <xliff:g id="DURATION_1">^3</xliff:g> dňoch natrvalo odstránené</item>
-      <item quantity="one">Táto fotka bude po <xliff:g id="DURATION_0">^3</xliff:g> dni natrvalo odstránená</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> položky do koša?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> items to trash?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> items to trash?</item>
       <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> položiek do koša?</item>
       <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> presunúť túto položku do koša?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="few">Tieto položky budú po <xliff:g id="DURATION_1">^3</xliff:g> dňoch natrvalo odstránené</item>
-      <item quantity="many">Tieto položky budú po <xliff:g id="DURATION_1">^3</xliff:g> dňa natrvalo odstránené</item>
-      <item quantity="other">Tieto položky budú po <xliff:g id="DURATION_1">^3</xliff:g> dňoch natrvalo odstránené</item>
-      <item quantity="one">Táto položka bude po <xliff:g id="DURATION_0">^3</xliff:g> dni natrvalo odstránená</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Presunúť do koša"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Zrušiť"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> zvukové súbory z koša?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> audio files out of trash?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> audio files out of trash?</item>
       <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> zvukových súborov z koša?</item>
       <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> presunúť tento zvukový súbor z koša?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> videá z koša?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> videos out of trash?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> videos out of trash?</item>
       <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> videí z koša?</item>
       <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> presunúť toto video z koša?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> fotky z koša?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> move <xliff:g id="COUNT">^2</xliff:g> photos out of trash?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> photos out of trash?</item>
       <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> fotiek z koša?</item>
       <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> presunúť túto fotku z koša?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> položky z koša?</item>
-      <item quantity="many">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> položky z koša?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to move <xliff:g id="COUNT">^2</xliff:g> items out of trash?</item>
       <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> presunúť <xliff:g id="COUNT">^2</xliff:g> položiek z koša?</item>
       <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> presunúť túto položku z koša?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Presunúť z koša"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Zrušiť"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> odstrániť <xliff:g id="COUNT">^2</xliff:g> zvukové súbory?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> audio files?</item>
       <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> odstrániť <xliff:g id="COUNT">^2</xliff:g> zvukových súborov?</item>
       <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> odstrániť tento zvukový súbor?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> odstrániť <xliff:g id="COUNT">^2</xliff:g> videá?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> videos?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> videos?</item>
       <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> odstrániť <xliff:g id="COUNT">^2</xliff:g> videí?</item>
       <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> odstrániť toto video?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> odstrániť <xliff:g id="COUNT">^2</xliff:g> fotky?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> photos?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> photos?</item>
       <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> odstrániť <xliff:g id="COUNT">^2</xliff:g> fotiek?</item>
       <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> odstrániť túto fotku?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="few">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> odstrániť <xliff:g id="COUNT">^2</xliff:g> položky?</item>
-      <item quantity="many">Let <xliff:g id="APP_NAME_1">^1</xliff:g> delete <xliff:g id="COUNT">^2</xliff:g> items?</item>
+      <item quantity="many">Allow <xliff:g id="APP_NAME_1">^1</xliff:g> to delete <xliff:g id="COUNT">^2</xliff:g> items?</item>
       <item quantity="other">Chcete povoliť aplikácii <xliff:g id="APP_NAME_1">^1</xliff:g> odstrániť <xliff:g id="COUNT">^2</xliff:g> položiek?</item>
       <item quantity="one">Chcete povoliť aplikácii <xliff:g id="APP_NAME_0">^1</xliff:g> odstrániť túto položku?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Odstrániť"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Zrušiť"</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index b53576a..ff63498 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -29,147 +29,118 @@
     <string name="permission_required_action" msgid="706370952366113539">"Nadaljuj"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Dovoli"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Zavrni"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="two">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="few">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">In še <xliff:g id="COUNT_1">^1</xliff:g> dodaten element</item>
       <item quantity="two">In še <xliff:g id="COUNT_1">^1</xliff:g> dodatna elementa</item>
       <item quantity="few">In še <xliff:g id="COUNT_1">^1</xliff:g> dodatni elementi</item>
       <item quantity="other">In še <xliff:g id="COUNT_1">^1</xliff:g> dodatnih elementov</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> zvočno datoteko?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> zvočni datoteki?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> zvočne datoteke?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> zvočnih datotek?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Brisanje začasnih datotek aplikacij"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"Aplikacija <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> želi izbrisati nekaj začasnih datotek. To lahko povzroči povečano porabo energije baterije ali povečan prenos podatkov v mobilnem omrežju."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Brisanje začasnih datotek aplikacij …"</string>
+    <string name="clear" msgid="5524638938415865915">"Počisti"</string>
+    <string name="allow" msgid="8885707816848569619">"Dovoli"</string>
+    <string name="deny" msgid="6040983710442068936">"Zavrni"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> zvočno datoteko?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> zvočni datoteki?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> zvočne datoteke?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> zvočnih datotek?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> videoposnetek?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> videoposnetka?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> videoposnetke?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> videoposnetkov?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> videoposnetek?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> videoposnetka?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> videoposnetke?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> videoposnetkov?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> fotografijo?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> fotografiji?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> fotografije?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> fotografij?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> fotografijo?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> fotografiji?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> fotografije?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> fotografij?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> element?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> elementa?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> elemente?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> spremeni <xliff:g id="COUNT">^2</xliff:g> elementov?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> element?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> elementa?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> elemente?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da spremeni <xliff:g id="COUNT">^2</xliff:g> elementov?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Spremeni"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Prekliči"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> zvočno datoteko v smetnjak?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> zvočni datoteki v smetnjak?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> zvočne datoteke v smetnjak?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> zvočnih datotek v smetnjak?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> zvočno datoteko v smetnjak?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> zvočni datoteki v smetnjak?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> zvočne datoteke v smetnjak?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> zvočnih datotek v smetnjak?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Te zvočne datoteke bodo trajno izbrisane po <xliff:g id="DURATION_1">^3</xliff:g> dnevu</item>
-      <item quantity="two">Te zvočne datoteke bodo trajno izbrisane po <xliff:g id="DURATION_1">^3</xliff:g> dneh</item>
-      <item quantity="few">Te zvočne datoteke bodo trajno izbrisane po <xliff:g id="DURATION_1">^3</xliff:g> dneh</item>
-      <item quantity="other">Te zvočne datoteke bodo trajno izbrisane po <xliff:g id="DURATION_1">^3</xliff:g> dneh</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetek v smetnjak?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetka v smetnjak?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetke v smetnjak?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetkov v smetnjak?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetek v smetnjak?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetka v smetnjak?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetke v smetnjak?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetkov v smetnjak?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> fotografijo v smetnjak?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> fotografiji v smetnjak?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> fotografije v smetnjak?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> fotografij v smetnjak?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Ti videoposnetki bodo trajno izbrisani po <xliff:g id="DURATION_1">^3</xliff:g> dnevu</item>
-      <item quantity="two">Ti videoposnetki bodo trajno izbrisani po <xliff:g id="DURATION_1">^3</xliff:g> dneh</item>
-      <item quantity="few">Ti videoposnetki bodo trajno izbrisani po <xliff:g id="DURATION_1">^3</xliff:g> dneh</item>
-      <item quantity="other">Ti videoposnetki bodo trajno izbrisani po <xliff:g id="DURATION_1">^3</xliff:g> dneh</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> element v smetnjak?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> elementa v smetnjak?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> elemente v smetnjak?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> elementov v smetnjak?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> fotografijo v smetnjak?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> fotografiji v smetnjak?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> fotografije v smetnjak?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> fotografij v smetnjak?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> zvočno datoteko iz smetnjaka?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> zvočni datoteki iz smetnjaka?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> zvočne datoteke iz smetnjaka?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> zvočnih datotek iz smetnjaka?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Te fotografije bodo trajno izbrisane po <xliff:g id="DURATION_1">^3</xliff:g> dnevu</item>
-      <item quantity="two">Te fotografije bodo trajno izbrisane po <xliff:g id="DURATION_1">^3</xliff:g> dneh</item>
-      <item quantity="few">Te fotografije bodo trajno izbrisane po <xliff:g id="DURATION_1">^3</xliff:g> dneh</item>
-      <item quantity="other">Te fotografije bodo trajno izbrisane po <xliff:g id="DURATION_1">^3</xliff:g> dneh</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetek iz smetnjaka?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetka iz smetnjaka?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetke iz smetnjaka?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetkov iz smetnjaka?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> element v smetnjak?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> elementa v smetnjak?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> elemente v smetnjak?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> elementov v smetnjak?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> fotografijo iz smetnjaka?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> fotografiji iz smetnjaka?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> fotografije iz smetnjaka?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> fotografij iz smetnjaka?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Ti elementi bodo trajno izbrisani po <xliff:g id="DURATION_1">^3</xliff:g> dnevu</item>
-      <item quantity="two">Ti elementi bodo trajno izbrisani po <xliff:g id="DURATION_1">^3</xliff:g> dneh</item>
-      <item quantity="few">Ti elementi bodo trajno izbrisani po <xliff:g id="DURATION_1">^3</xliff:g> dneh</item>
-      <item quantity="other">Ti elementi bodo trajno izbrisani po <xliff:g id="DURATION_1">^3</xliff:g> dneh</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> element iz smetnjaka?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> elementa iz smetnjaka?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> elemente iz smetnjaka?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da premakne <xliff:g id="COUNT">^2</xliff:g> elementov iz smetnjaka?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Premakni v smetnjak"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Prekliči"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> zvočno datoteko iz smetnjaka?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> zvočni datoteki iz smetnjaka?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> zvočne datoteke iz smetnjaka?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> zvočnih datotek iz smetnjaka?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> zvočno datoteko?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> zvočni datoteki?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> zvočne datoteke?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> zvočnih datotek?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetek iz smetnjaka?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetka iz smetnjaka?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetke iz smetnjaka?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> videoposnetkov iz smetnjaka?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> videoposnetek?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> videoposnetka?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> videoposnetke?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> videoposnetkov?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> fotografijo iz smetnjaka?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> fotografiji iz smetnjaka?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> fotografije iz smetnjaka?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> fotografij iz smetnjaka?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> fotografijo?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> fotografiji?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> fotografije?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> fotografij?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> element iz smetnjaka?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> elementa iz smetnjaka?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> elemente iz smetnjaka?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> premakne <xliff:g id="COUNT">^2</xliff:g> elementov iz smetnjaka?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="one">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> element?</item>
+      <item quantity="two">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> elementa?</item>
+      <item quantity="few">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> elemente?</item>
+      <item quantity="other">Želite dovoliti aplikaciji <xliff:g id="APP_NAME_1">^1</xliff:g>, da izbriše <xliff:g id="COUNT">^2</xliff:g> elementov?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Premakni iz smetnjaka"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Prekliči"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> zvočno datoteko?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> zvočni datoteki?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> zvočne datoteke?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> zvočnih datotek?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> videoposnetek?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> videoposnetka?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> videoposnetke?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> videoposnetkov?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> fotografijo?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> fotografiji?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> fotografije?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> fotografij?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="one">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> element?</item>
-      <item quantity="two">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> elementa?</item>
-      <item quantity="few">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> elemente?</item>
-      <item quantity="other">Želite dovoliti, da aplikacija <xliff:g id="APP_NAME_1">^1</xliff:g> izbriše <xliff:g id="COUNT">^2</xliff:g> elementov?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Izbriši"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Prekliči"</string>
 </resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index a284613..1e90f35 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Vazhdo"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Lejo"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Refuzo"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Dhe <xliff:g id="COUNT_1">^1</xliff:g> artikuj të tjerë</item>
       <item quantity="one">Dhe <xliff:g id="COUNT_0">^1</xliff:g> artikull tjetër</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i ndryshojë <xliff:g id="COUNT">^2</xliff:g> skedarë audio?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta ndryshojë këtë skedar audio?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Pastro skedarët e përkohshëm të aplikacioneve"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> dëshiron të pastrojë disa skedarë të përkohshëm. Kjo mund të rezultojë në një rritje të përdorimit të baterisë ose të të dhënave celulare."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Skedarët e përkohshëm të aplikacioneve po pastrohen…"</string>
+    <string name="clear" msgid="5524638938415865915">"Pastro"</string>
+    <string name="allow" msgid="8885707816848569619">"Lejo"</string>
+    <string name="deny" msgid="6040983710442068936">"Refuzo"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të modifikojë <xliff:g id="COUNT">^2</xliff:g> skedarë audio?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që ta modifikojë këtë skedar audio?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i ndryshojë <xliff:g id="COUNT">^2</xliff:g> video?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta ndryshojë këtë video?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të modifikojë <xliff:g id="COUNT">^2</xliff:g> video?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që ta modifikojë këtë video?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i ndryshojë <xliff:g id="COUNT">^2</xliff:g> fotografi?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta ndryshojë këtë fotografi?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të modifikojë <xliff:g id="COUNT">^2</xliff:g> fotografi?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që ta modifikojë këtë fotografi?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i ndryshojë <xliff:g id="COUNT">^2</xliff:g> artikuj?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta ndryshojë këtë artikull?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të modifikojë <xliff:g id="COUNT">^2</xliff:g> artikuj?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që ta modifikojë këtë artikull?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Ndrysho"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Anulo"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i zhvendosë <xliff:g id="COUNT">^2</xliff:g> skedarë audio te koshi?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta zhvendosë këtë skedar audio te koshi?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të zhvendosë <xliff:g id="COUNT">^2</xliff:g> skedarë audio te koshi?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që ta zhvendosë këtë skedar audio te koshi?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Këta skedarë audio do të fshihen përgjithmonë pas <xliff:g id="DURATION_1">^3</xliff:g> ditësh</item>
-      <item quantity="one">Ky skedar audio do të fshihet përgjithmonë pas <xliff:g id="DURATION_0">^3</xliff:g> ditësh</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të zhvendosë <xliff:g id="COUNT">^2</xliff:g> video te koshi?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që ta zhvendosë këtë video te koshi?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i zhvendosë <xliff:g id="COUNT">^2</xliff:g> video te koshi?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta zhvendosë këtë video te koshi?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të zhvendosë <xliff:g id="COUNT">^2</xliff:g> fotografi te koshi?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që ta zhvendosë këtë fotografi te koshi?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Këto video do të fshihen përgjithmonë pas <xliff:g id="DURATION_1">^3</xliff:g> ditësh</item>
-      <item quantity="one">Kjo video do të fshihet përgjithmonë pas <xliff:g id="DURATION_0">^3</xliff:g> ditësh</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të zhvendosë <xliff:g id="COUNT">^2</xliff:g> artikuj te koshi?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që ta zhvendosë këtë artikull te koshi?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i zhvendosë <xliff:g id="COUNT">^2</xliff:g> fotografi te koshi?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta zhvendosë këtë fotografi te koshi?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të zhvendosë <xliff:g id="COUNT">^2</xliff:g> skedarë audio nga koshi?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që ta zhvendosë këtë skedar audio nga koshi?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Këto fotografi do të fshihen përgjithmonë pas <xliff:g id="DURATION_1">^3</xliff:g> ditësh</item>
-      <item quantity="one">Kjo fotografi do të fshihet përgjithmonë pas <xliff:g id="DURATION_0">^3</xliff:g> ditësh</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të zhvendosë <xliff:g id="COUNT">^2</xliff:g> video nga koshi?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që ta zhvendosë këtë video nga koshi?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i zhvendosë <xliff:g id="COUNT">^2</xliff:g> artikuj te koshi?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta zhvendosë këtë artikull te koshi?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të zhvendosë <xliff:g id="COUNT">^2</xliff:g> fotografi nga koshi?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që ta zhvendosë këtë fotografi nga koshi?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Këta artikuj do të fshihen përgjithmonë pas <xliff:g id="DURATION_1">^3</xliff:g> ditësh</item>
-      <item quantity="one">Ky artikull do të fshihet përgjithmonë pas <xliff:g id="DURATION_0">^3</xliff:g> ditësh</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të zhvendosë <xliff:g id="COUNT">^2</xliff:g> artikuj nga koshi?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që ta zhvendosë këtë artikull nga koshi?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Zhvendos te koshi"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Anulo"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i zhvendosë <xliff:g id="COUNT">^2</xliff:g> skedarë audio nga koshi?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta zhvendosë këtë skedar audio te koshi?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të fshijë <xliff:g id="COUNT">^2</xliff:g> skedarë audio?</item>
+      <item quantity="one">Të lejohet <xliff:g id="APP_NAME_0">^1</xliff:g> që të fshijë këtë skedar audio?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i zhvendosë <xliff:g id="COUNT">^2</xliff:g> video nga koshi?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta zhvendosë këtë video nga koshi?</item>
-    </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i zhvendosë <xliff:g id="COUNT">^2</xliff:g> fotografi nga koshi?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta zhvendosë këtë fotografi nga koshi?</item>
-    </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i zhvendosë <xliff:g id="COUNT">^2</xliff:g> artikuj nga koshi?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta zhvendosë këtë artikull nga koshi?</item>
-    </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Zhvendos nga koshi"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Anulo"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i fshijë <xliff:g id="COUNT">^2</xliff:g> skedarë audio?</item>
-      <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta fshijë këtë skedar audio?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i fshijë <xliff:g id="COUNT">^2</xliff:g> video?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të fshijë <xliff:g id="COUNT">^2</xliff:g> video?</item>
       <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta fshijë këtë video?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i fshijë <xliff:g id="COUNT">^2</xliff:g> fotografi?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të fshijë <xliff:g id="COUNT">^2</xliff:g> fotografi?</item>
       <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta fshijë këtë fotografi?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Të lejohet që <xliff:g id="APP_NAME_1">^1</xliff:g> t\'i fshijë <xliff:g id="COUNT">^2</xliff:g> artikuj?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Të lejohet <xliff:g id="APP_NAME_1">^1</xliff:g> që të fshijë <xliff:g id="COUNT">^2</xliff:g> artikuj?</item>
       <item quantity="one">Të lejohet që <xliff:g id="APP_NAME_0">^1</xliff:g> ta fshijë këtë artikull?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Fshi"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Anulo"</string>
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index b6da163..079f9aa 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -29,122 +29,100 @@
     <string name="permission_required_action" msgid="706370952366113539">"Настави"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Дозволи"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Одбиј"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">и још <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="few">и још <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">и још <xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">И још <xliff:g id="COUNT_1">^1</xliff:g> ставка</item>
       <item quantity="few">И још <xliff:g id="COUNT_1">^1</xliff:g> ставке</item>
       <item quantity="other">И још <xliff:g id="COUNT_1">^1</xliff:g> ставки</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Желите да обришете кеш апликације уз <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> жели да обрише неке привремене датотеке. Прихватање може да повећа потрошњу батерије или података."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Обришите привремене датотеке апликација"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> жели да обрише неке привремене датотеке. Ово може да доведе до повећане потрошње батерије или мобилних података."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Бришу се привремене датотеке апликација…"</string>
+    <string name="clear" msgid="5524638938415865915">"Обриши"</string>
     <string name="allow" msgid="8885707816848569619">"Дозволи"</string>
     <string name="deny" msgid="6040983710442068936">"Одбиј"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> промени <xliff:g id="COUNT">^2</xliff:g> аудио датотеку?</item>
-      <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> промени <xliff:g id="COUNT">^2</xliff:g> аудио датотеке?</item>
-      <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> промени <xliff:g id="COUNT">^2</xliff:g> аудио датотека?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> измени <xliff:g id="COUNT">^2</xliff:g> аудио датотеку?</item>
+      <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> измени <xliff:g id="COUNT">^2</xliff:g> аудио датотеке?</item>
+      <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> измени <xliff:g id="COUNT">^2</xliff:g> аудио датотека?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> промени <xliff:g id="COUNT">^2</xliff:g> видео?</item>
-      <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> промени <xliff:g id="COUNT">^2</xliff:g> видео снимка?</item>
-      <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> промени <xliff:g id="COUNT">^2</xliff:g> видео снимака?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> измени <xliff:g id="COUNT">^2</xliff:g> видео?</item>
+      <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> измени <xliff:g id="COUNT">^2</xliff:g> видео снимка?</item>
+      <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> измени <xliff:g id="COUNT">^2</xliff:g> видео снимака?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> промени <xliff:g id="COUNT">^2</xliff:g> слику?</item>
-      <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> промени <xliff:g id="COUNT">^2</xliff:g> слике?</item>
-      <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> промени <xliff:g id="COUNT">^2</xliff:g> слика?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> измени <xliff:g id="COUNT">^2</xliff:g> слику?</item>
+      <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> измени <xliff:g id="COUNT">^2</xliff:g> слике?</item>
+      <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> измени <xliff:g id="COUNT">^2</xliff:g> слика?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> промени <xliff:g id="COUNT">^2</xliff:g> ставку?</item>
-      <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> промени <xliff:g id="COUNT">^2</xliff:g> ставке?</item>
-      <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> промени <xliff:g id="COUNT">^2</xliff:g> ставки?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> измени <xliff:g id="COUNT">^2</xliff:g> ставку?</item>
+      <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> измени <xliff:g id="COUNT">^2</xliff:g> ставке?</item>
+      <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> измени <xliff:g id="COUNT">^2</xliff:g> ставки?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Промени"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Откажи"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> аудио датотеку у отпад?</item>
       <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> аудио датотеке у отпад?</item>
       <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> аудио датотека у отпад?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Ове аудио датотеке се трајно бришу за <xliff:g id="DURATION_1">^3</xliff:g> дан</item>
-      <item quantity="few">Ове аудио датотеке се трајно бришу за <xliff:g id="DURATION_1">^3</xliff:g> дана</item>
-      <item quantity="other">Ове аудио датотеке се трајно бришу за <xliff:g id="DURATION_1">^3</xliff:g> дана</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> видео у отпад?</item>
       <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> видео снимка у отпад?</item>
       <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> видео снимака у отпад?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Ови видео снимци се трајно бришу за <xliff:g id="DURATION_1">^3</xliff:g> дан</item>
-      <item quantity="few">Ови видео снимци се трајно бришу за <xliff:g id="DURATION_1">^3</xliff:g> дана</item>
-      <item quantity="other">Ови видео снимци се трајно бришу за <xliff:g id="DURATION_1">^3</xliff:g> дана</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> слику у отпад?</item>
       <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> слике у отпад?</item>
       <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> слика у отпад?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Ове слике се трајно бришу за <xliff:g id="DURATION_1">^3</xliff:g> дан</item>
-      <item quantity="few">Ове слике се трајно бришу за <xliff:g id="DURATION_1">^3</xliff:g> дана</item>
-      <item quantity="other">Ове слике се трајно бришу за <xliff:g id="DURATION_1">^3</xliff:g> дана</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> ставку у отпад?</item>
       <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> ставке у отпад?</item>
       <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> ставки у отпад?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Ове ставке се трајно бришу за <xliff:g id="DURATION_1">^3</xliff:g> дан</item>
-      <item quantity="few">Ове ставке се трајно бришу за <xliff:g id="DURATION_1">^3</xliff:g> дана</item>
-      <item quantity="other">Ове ставке се трајно бришу за <xliff:g id="DURATION_1">^3</xliff:g> дана</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Премести у отпад"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Откажи"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> аудио датотеку из отпада?</item>
       <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> аудио датотеке из отпада?</item>
       <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> аудио датотека из отпада?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> видео из отпада?</item>
       <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> видео снимка из отпада?</item>
       <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> видео снимака из отпада?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> слику из отпада?</item>
       <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> слике из отпада?</item>
       <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> слика из отпада?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> ставку из отпада?</item>
       <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> ставке из отпада?</item>
       <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> премести <xliff:g id="COUNT">^2</xliff:g> ставки из отпада?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Премести из отпада"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Откажи"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> аудио датотеку?</item>
-      <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> аудио датотеке?</item>
+      <item quantity="few">Желите ли да дозволите <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> аудио датотеке?</item>
       <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> аудио датотека?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> видео?</item>
       <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> видео снимка?</item>
       <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> видео снимака?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> слику?</item>
       <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> слике?</item>
       <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> слика?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> ставку?</item>
       <item quantity="few">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> ставке?</item>
       <item quantity="other">Желите ли да дозволите да <xliff:g id="APP_NAME_1">^1</xliff:g> избрише <xliff:g id="COUNT">^2</xliff:g> ставки?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Избриши"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Откажи"</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 4fe1978..b0b990c 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -22,112 +22,89 @@
     <string name="artist_label" msgid="8105600993099120273">"Artist"</string>
     <string name="unknown" msgid="2059049215682829375">"Okänd"</string>
     <string name="root_images" msgid="5861633549189045666">"Bilder"</string>
-    <string name="root_videos" msgid="8792703517064649453">"Videoklipp"</string>
+    <string name="root_videos" msgid="8792703517064649453">"Videor"</string>
     <string name="root_audio" msgid="3505830755201326018">"Ljud"</string>
     <string name="root_documents" msgid="3829103301363849237">"Dokument"</string>
     <string name="permission_required" msgid="1460820436132943754">"Behörighet krävs för att ändra eller radera objektet."</string>
     <string name="permission_required_action" msgid="706370952366113539">"Fortsätt"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Tillåt"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Neka"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+ <xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">och <xliff:g id="COUNT_1">^1</xliff:g> objekt till</item>
       <item quantity="one">och <xliff:g id="COUNT_0">^1</xliff:g> objekt till</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> ändrar <xliff:g id="COUNT">^2</xliff:g> ljudfilerna?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> ändrar ljudfilen?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Rensa tillfälliga appfiler"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> vill ta bort några tillfälliga filer. Det kan leda till ökad batteriförbrukning eller användning av mobildata."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Tillfälliga appfiler rensas …"</string>
+    <string name="clear" msgid="5524638938415865915">"Rensa"</string>
+    <string name="allow" msgid="8885707816848569619">"Tillåt"</string>
+    <string name="deny" msgid="6040983710442068936">"Neka"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> ändrar <xliff:g id="COUNT">^2</xliff:g> ljudfiler?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> ändrar den här ljudfilen?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> ändrar <xliff:g id="COUNT">^2</xliff:g> videor?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> ändrar videon?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> ändrar den här videon?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> ändrar <xliff:g id="COUNT">^2</xliff:g> fotot?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> ändrar fotot?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> ändrar <xliff:g id="COUNT">^2</xliff:g> foton?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> ändrar det här fotot?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> ändrar <xliff:g id="COUNT">^2</xliff:g> objekt?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> ändrar objektet?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> ändrar det här objektet?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Ändra"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Avbryt"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> flyttar <xliff:g id="COUNT">^2</xliff:g> ljudfiler till papperskorgen?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar ljudfilen till papperskorgen?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar den här ljudfilen till papperskorgen?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">De här ljudfilerna raderas permanent efter <xliff:g id="DURATION_1">^3</xliff:g> dagar</item>
-      <item quantity="one">Den här ljudfilen raderas permanent efter <xliff:g id="DURATION_0">^3</xliff:g> dagar</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> flyttar <xliff:g id="COUNT">^2</xliff:g> videor till papperskorgen?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar videon till papperskorgen?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar den här videon till papperskorgen?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">De här videorna raderas permanent efter <xliff:g id="DURATION_1">^3</xliff:g> dagar</item>
-      <item quantity="one">Den här videon raderas permanent efter <xliff:g id="DURATION_0">^3</xliff:g> dagar</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> flyttar <xliff:g id="COUNT">^2</xliff:g> foton till papperskorgen?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar fotot till papperskorgen?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar det här fotot till papperskorgen?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">De här fotona raderas permanent efter <xliff:g id="DURATION_1">^3</xliff:g> dagar</item>
-      <item quantity="one">Det här fotot raderas permanent efter <xliff:g id="DURATION_0">^3</xliff:g> dagar</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> flyttar <xliff:g id="COUNT">^2</xliff:g> objekt till papperskorgen?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar objektet till papperskorgen?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar det här objektet till papperskorgen?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">De här objekten raderas permanent efter <xliff:g id="DURATION_1">^3</xliff:g> dagar.</item>
-      <item quantity="one">Det här objektet raderas permanent efter <xliff:g id="DURATION_0">^3</xliff:g> dagar</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Flytta till papperskorgen"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Avbryt"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> flyttar <xliff:g id="COUNT">^2</xliff:g> ljudfiler från papperskorgen?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar ljudfilen från papperskorgen?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar den här ljudfilen från papperskorgen?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> flyttar <xliff:g id="COUNT">^2</xliff:g> videorna från papperskorgen?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar videon från papperskorgen?</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> flyttar <xliff:g id="COUNT">^2</xliff:g> videor från papperskorgen?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar den här videon från papperskorgen?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> flyttar <xliff:g id="COUNT">^2</xliff:g> foton från papperskorgen?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar fotot från papperskorgen?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar det här fotot från papperskorgen?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> flyttar <xliff:g id="COUNT">^2</xliff:g> objekt från papperskorgen?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar objektet från papperskorgen?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> flyttar det här objektet från papperskorgen?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Flytta från papperskorgen"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Avbryt"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> raderar <xliff:g id="COUNT">^2</xliff:g> ljudfiler?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> ljudfilen?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> raderar den här ljudfilen?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> raderar <xliff:g id="COUNT">^2</xliff:g> videor?</item>
-      <item quantity="one">Vill du tillåt att <xliff:g id="APP_NAME_0">^1</xliff:g> raderar videon?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> raderar den här videon?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> raderar <xliff:g id="COUNT">^2</xliff:g> foton?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> raderar fotot?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> raderar det här fotot?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other">Vill du tillåta att <xliff:g id="APP_NAME_1">^1</xliff:g> raderar <xliff:g id="COUNT">^2</xliff:g> objekt?</item>
-      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> raderar objektet?</item>
+      <item quantity="one">Vill du tillåta att <xliff:g id="APP_NAME_0">^1</xliff:g> raderar det här objektet?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Radera"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Avbryt"</string>
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 7ab06df..4917e30 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Endelea"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Ruhusu"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Kataa"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Pamoja na vipengee <xliff:g id="COUNT_1">^1</xliff:g> zaidi</item>
       <item quantity="one">Pamoja na kipengee <xliff:g id="COUNT_0">^1</xliff:g> zaidi</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Ungependa kufuta akiba ya programu ukitumia <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ingependa kufuta baadhi ya faili za muda. Hatua ya kukubali inaweza kuongeza matumizi ya data au betri."</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Futa faili za muda za programu"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ingependa kufuta baadhi ya faili za muda. Huenda hii ikasababisha kuongezeka kwa matumizi ya betri au data ya mtandao wa simu."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Inafuta faili za muda za programu…"</string>
+    <string name="clear" msgid="5524638938415865915">"Futa"</string>
     <string name="allow" msgid="8885707816848569619">"Ruhusu"</string>
     <string name="deny" msgid="6040983710442068936">"Kataa"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ibadilishe faili hizi <xliff:g id="COUNT">^2</xliff:g> za sauti?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ibadilishe faili <xliff:g id="COUNT">^2</xliff:g> za sauti?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> ibadilishe faili hii ya sauti?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ibadilishe video hizi <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ibadilishe video <xliff:g id="COUNT">^2</xliff:g>?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> ibadilishe video hii?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ibadilishe picha hizi <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ibadilishe picha <xliff:g id="COUNT">^2</xliff:g>?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> ibadilishe picha hii?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ibadilishe vipengee hivi <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ibadilishe vipengee <xliff:g id="COUNT">^2</xliff:g>?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> ibadilishe kipengee hiki?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Badilisha"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Ghairi"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ihamishie faili hizi <xliff:g id="COUNT">^2</xliff:g> za sauti kwenye tupio?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ihamishie faili <xliff:g id="COUNT">^2</xliff:g> za sauti kwenye tupio?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> ihamishie faili hii ya sauti kwenye tupio?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Faili hizi za sauti zitafutwa kabisa baada ya siku <xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="one">Faili hii ya sauti itafutwa kabisa baada ya siku <xliff:g id="DURATION_0">^3</xliff:g></item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ihamishie video hizi <xliff:g id="COUNT">^2</xliff:g> kwenye tupio?</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ihamishie video <xliff:g id="COUNT">^2</xliff:g> kwenye tupio?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> ihamishie video hii kwenye tupio?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Video hizi zitafutwa kabisa baada ya siku <xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="one">Video hii itafutwa kabisa baada ya siku <xliff:g id="DURATION_0">^3</xliff:g></item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ihamishie picha hizi <xliff:g id="COUNT">^2</xliff:g> kwenye tupio?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ihamishie picha <xliff:g id="COUNT">^2</xliff:g> kwenye tupio?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> ihamishie picha hii kwenye tupio?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Picha hizi zitafutwa kabisa baada ya siku <xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="one">Picha hii itafutwa kabisa baada ya siku <xliff:g id="DURATION_0">^3</xliff:g></item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ihamishie vipengee hivi <xliff:g id="COUNT">^2</xliff:g> kwenye tupio?</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ihamishie vipengee <xliff:g id="COUNT">^2</xliff:g> kwenye tupio?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> ihamishie kipengee hiki kwenye tupio?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Vipengee hivi vitafutwa kabisa baada ya siku <xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="one">Kipengee hiki kitafutwa kabisa baada ya siku <xliff:g id="DURATION_0">^3</xliff:g></item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Weka kwenye tupio"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Ghairi"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> iondoe faili hizi <xliff:g id="COUNT">^2</xliff:g> za sauti kwenye tupio?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> iondoe faili <xliff:g id="COUNT">^2</xliff:g> za sauti kwenye tupio?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> iondoe faili hii ya sauti kwenye tupio?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> iondoe video hizi <xliff:g id="COUNT">^2</xliff:g> kwenye tupio?</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> iondoe video <xliff:g id="COUNT">^2</xliff:g> kwenye tupio?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> iondoe video hii kwenye tupio?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> iondoe picha hizi <xliff:g id="COUNT">^2</xliff:g> kwenye tupio?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> iondoe picha <xliff:g id="COUNT">^2</xliff:g> kwenye tupio?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> iondoe picha hii kwenye tupio?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> iondoe vipengee hivi <xliff:g id="COUNT">^2</xliff:g> kwenye tupio?</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> iondoe vipengee <xliff:g id="COUNT">^2</xliff:g> kwenye tupio?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> iondoe kipengee hiki kwenye tupio?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Iondoe kwenye tupio"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Ghairi"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ifute faili hizi <xliff:g id="COUNT">^2</xliff:g> za sauti?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ifute faili <xliff:g id="COUNT">^2</xliff:g> za sauti?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> ifute faili hii ya sauti?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ifute video hizi <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ifute video <xliff:g id="COUNT">^2</xliff:g>?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> ifute video hii?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ifute picha hizi <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ifute picha <xliff:g id="COUNT">^2</xliff:g>?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> ifute picha hii?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ifute vipengee hivi <xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">Ungependa kuruhusu <xliff:g id="APP_NAME_1">^1</xliff:g> ifute vipengee <xliff:g id="COUNT">^2</xliff:g>?</item>
       <item quantity="one">Ungependa kuruhusu <xliff:g id="APP_NAME_0">^1</xliff:g> ifute kipengee hiki?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Futa"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Ghairi"</string>
 </resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 85e2394..f13588a 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -21,7 +21,7 @@
     <string name="app_label" msgid="9035307001052716210">"மீடியா சேமிப்பிடம்"</string>
     <string name="artist_label" msgid="8105600993099120273">"கலைஞர்"</string>
     <string name="unknown" msgid="2059049215682829375">"அறியாதது"</string>
-    <string name="root_images" msgid="5861633549189045666">"படங்கள்"</string>
+    <string name="root_images" msgid="5861633549189045666">"Images"</string>
     <string name="root_videos" msgid="8792703517064649453">"வீடியோக்கள்"</string>
     <string name="root_audio" msgid="3505830755201326018">"ஆடியோ"</string>
     <string name="root_documents" msgid="3829103301363849237">"ஆவணங்கள்"</string>
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"தொடர்க"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"அனுமதி"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"நிராகரி"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">அத்துடன் கூடுதலாக <xliff:g id="COUNT_1">^1</xliff:g></item>
       <item quantity="one">அத்துடன் கூடுதலாக <xliff:g id="COUNT_0">^1</xliff:g></item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஆடியோ ஃபைல்களை மாற்ற <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இந்த ஆடியோ ஃபைலை மாற்ற <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"ஆப்ஸின் தற்காலிக ஃபைல்களை அழித்தல்"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"சில தற்காலிக ஃபைல்களை நீக்குவதற்கு <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> அனுமதி கேட்கின்றது. இதனால் பேட்டரி அல்லது மொபைல் டேட்டா பயன்பாடு அதிகரிக்கக்கூடும்."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"ஆப்ஸிலுள்ள தற்காலிக ஃபைல்களை அழிக்கிறது…"</string>
+    <string name="clear" msgid="5524638938415865915">"அழி"</string>
+    <string name="allow" msgid="8885707816848569619">"அனுமதி"</string>
+    <string name="deny" msgid="6040983710442068936">"நிராகரி"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஆடியோ ஃபைல்களில் மாற்றங்களைச் செய்ய <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்த ஆடியோ ஃபைலில் மாற்றங்களைச் செய்ய <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> வீடியோக்களை மாற்ற <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இந்த வீடியோவை மாற்ற <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> வீடியோக்களில் மாற்றங்களைச் செய்ய <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்த வீடியோவில் மாற்றங்களைச் செய்ய <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> படங்களை மாற்ற <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இந்தப் படத்தை மாற்ற <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> படங்களில் மாற்றங்களைச் செய்ய <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்தப் படத்தில் மாற்றங்களைச் செய்ய <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஐயும் மாற்ற <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இதை மாற்ற <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஃபைல்களில் மாற்றங்களைச் செய்ய <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்த ஃபைலில் மாற்றங்களைச் செய்ய <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"மாற்று"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"வேண்டாம்"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஆடியோ ஃபைல்களைக் குப்பைக்கு நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இந்த ஆடியோ ஃபைலைக் குப்பைக்கு நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஆடியோ ஃபைல்களை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்த ஆடியோ ஃபைலை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other"><xliff:g id="DURATION_1">^3</xliff:g> நாட்களுக்குப் பிறகு இந்த ஆடியோ ஃபைல்கள் நிரந்தரமாக நீக்கப்படும்</item>
-      <item quantity="one"><xliff:g id="DURATION_0">^3</xliff:g> நாட்களுக்குப் பிறகு இந்த ஆடியோ ஃபைல் நிரந்தரமாக நீக்கப்படும்</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> வீடியோக்களை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்த வீடியோவை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> வீடியோக்களைக் குப்பைக்கு நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இந்த வீடியோவைக் குப்பைக்கு நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> படங்களை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்தப் படத்தை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">இந்த வீடியோக்கள் <xliff:g id="DURATION_1">^3</xliff:g> நாட்களுக்குப் பிறகு நிரந்தரமாக நீக்கப்படும்</item>
-      <item quantity="one">இந்த வீடியோ <xliff:g id="DURATION_0">^3</xliff:g> நாட்களுக்குப் பிறகு நிரந்தரமாக நீக்கப்படும்</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஃபைல்களை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்த ஃபைலை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> படங்களைக் குப்பைக்கு நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இந்தப் படத்தைக் குப்பைக்கு நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஆடியோ ஃபைல்களை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்த ஆடியோ ஃபைலை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">இந்தப் படங்கள் <xliff:g id="DURATION_1">^3</xliff:g> நாட்களுக்குப் பிறகு நிரந்தரமாக நீக்கப்படும்</item>
-      <item quantity="one">இந்தப் படம் <xliff:g id="DURATION_0">^3</xliff:g> நாட்களுக்குப் பிறகு நிரந்தரமாக நீக்கப்படும்</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> வீடியோக்களை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்த வீடியோவை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஐயும் குப்பைக்கு நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இதைக் குப்பைக்கு நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> படங்களை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்தப் படத்தை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">இவை <xliff:g id="DURATION_1">^3</xliff:g> நாட்களுக்குப் பிறகு நிரந்தரமாக நீக்கப்படும்</item>
-      <item quantity="one">இது <xliff:g id="DURATION_0">^3</xliff:g> நாட்களுக்குப் பிறகு நிரந்தரமாக நீக்கப்படும்</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஃபைல்களை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்த ஃபைலை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"குப்பைக்கு நகர்த்து"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"வேண்டாம்"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஆடியோ ஃபைல்களைக் குப்பையிலிருந்து நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இந்த ஆடியோ ஃபைலைக் குப்பையிலிருந்து நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-    </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> வீடியோக்களைக் குப்பையிலிருந்து நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இந்த வீடியோவைக் குப்பையிலிருந்து நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-    </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> படங்களைக் குப்பையிலிருந்து நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இந்தப் படத்தைக் குப்பையிலிருந்து நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-    </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஐயும் குப்பையிலிருந்து நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இதைக் குப்பையிலிருந்து நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-    </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"குப்பையிலிருந்து நகர்த்து"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"வேண்டாம்"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஆடியோ ஃபைல்களை நீக்க <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
       <item quantity="one">இந்த ஆடியோ ஃபைலை நீக்க <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> வீடியோக்களை நீக்க <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
       <item quantity="one">இந்த வீடியோவை நீக்க <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> படங்களை நீக்க <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
       <item quantity="one">இந்தப் படத்தை நீக்க <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஐயும் நீக்க <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
-      <item quantity="one">இதை நீக்க <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஃபைல்களை நீக்க <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
+      <item quantity="one">இந்த ஃபைலை நீக்க <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"நீக்கு"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"வேண்டாம்"</string>
 </resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 3966ef8..30c0faa 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -21,7 +21,7 @@
     <string name="app_label" msgid="9035307001052716210">"మీడియా నిల్వ"</string>
     <string name="artist_label" msgid="8105600993099120273">"కళాకారుడు"</string>
     <string name="unknown" msgid="2059049215682829375">"తెలియదు"</string>
-    <string name="root_images" msgid="5861633549189045666">"చిత్రాలు"</string>
+    <string name="root_images" msgid="5861633549189045666">"ఇమేజ్‌లు"</string>
     <string name="root_videos" msgid="8792703517064649453">"వీడియోలు"</string>
     <string name="root_audio" msgid="3505830755201326018">"ఆడియో"</string>
     <string name="root_documents" msgid="3829103301363849237">"డాక్యుమెంట్‌లు"</string>
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"కొనసాగించు"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"అనుమతించు"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"తిరస్కరించు"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">దానితో పాటు, <xliff:g id="COUNT_1">^1</xliff:g> అదనపు అంశాలు</item>
       <item quantity="one">దానితో పాటు, <xliff:g id="COUNT_0">^1</xliff:g> అదనపు అంశం</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ఆడియో ఫైల్‌లను మార్చడానికి అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ ఆడియో ఫైల్‌ను మార్చడానికి అనుమతిస్తారా?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"తాత్కాలిక యాప్ ఫైల్‌లను క్లియర్ చేయండి"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"కొన్ని తాత్కాలిక ఫైల్స్‌ను క్లియర్ చేయడానికి <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> అనుమతి కోరుతోంది. దీని వలన బ్యాటరీ లేదా సెల్యూలార్ డేటా వినియోగం పెరగవచ్చు."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"తాత్కాలిక యాప్ ఫైల్‌లను క్లియర్ చేస్తోంది…"</string>
+    <string name="clear" msgid="5524638938415865915">"క్లియర్ చేయండి"</string>
+    <string name="allow" msgid="8885707816848569619">"అనుమతించు"</string>
+    <string name="deny" msgid="6040983710442068936">"నిరాకరించు"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఆడియో ఫైల్‌లను సవరించడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ ఆడియో ఫైల్‌ను సవరించడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> వీడియోలను మార్చడానికి అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ వీడియోను మార్చడానికి అనుమతిస్తారా?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> వీడియోలను సవరించడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ వీడియోను సవరించడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ఫోటోలను మార్చడానికి అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ ఫోటోను మార్చడానికి అనుమతిస్తారా?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఫోటోలను సవరించడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ ఫోటోను సవరించడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> అంశాలను మార్చడానికి అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g>ఈ అంశాన్ని మార్చడానికి అనుమతిస్తారా?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఐటెమ్‌లను సవరించడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ ఐటెమ్‌ను సవరించడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"మార్చు"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"అనుమతిని రద్దు చేయి"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ఆడియో ఫైల్‌లను ట్రాష్‌కి తరలించడానికి అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ ఆడియో ఫైల్‌ను ట్రాష్‌కి తరలించడానికి అనుమతిస్తారా?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఆడియో ఫైల్‌లను ట్రాష్‌కు తరలించడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ ఆడియో ఫైల్‌ను ట్రాష్‌కు తరలించడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">ఈ ఆడియో ఫైల్‌లు <xliff:g id="DURATION_1">^3</xliff:g> రోజుల తర్వాత శాశ్వతంగా తొలగించబడతాయి</item>
-      <item quantity="one">ఈ ఆడియో ఫైల్ <xliff:g id="DURATION_0">^3</xliff:g> రోజుల తర్వాత శాశ్వతంగా తొలగించబడుతుంది</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> వీడియోలను ట్రాష్‌కు తరలించడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ వీడియోను ట్రాష్‌కు తరలించడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> వీడియోలను ట్రాష్‌కు తరలించేందుకు అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ వీడియోను ట్రాష్‌కు తరలించేందుకు అనుమతిస్తారా?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఫోటోలను ట్రాష్‌కు తరలించడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ ఫోటోను ట్రాష్‌కు తరలించడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">ఈ వీడియోలు <xliff:g id="DURATION_1">^3</xliff:g> రోజుల తర్వాత శాశ్వతంగా తొలగించబడతాయి</item>
-      <item quantity="one">ఈ వీడియో <xliff:g id="DURATION_0">^3</xliff:g> రోజుల తర్వాత శాశ్వతంగా తొలగించబడుతుంది</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఐటెమ్‌లను ట్రాష్‌కు తరలించడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ ఐటెమ్‌ను ట్రాష్‌కు తరలించడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ఫోటోలను ట్రాష్‌కు తరలించేందుకు అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ ఫోటోను ట్రాష్‌కు తరలించేందుకు అనుమతిస్తారా?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఆడియో ఫైల్‌లను ట్రాష్ నుండి బయటకు తీయడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ ఆడియో ఫైల్‌ను ట్రాష్ నుండి బయటకు తీయడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">ఈ ఫోటోలు <xliff:g id="DURATION_1">^3</xliff:g> రోజుల తర్వాత శాశ్వతంగా తొలగించబడతాయి</item>
-      <item quantity="one">ఈ ఫోటో <xliff:g id="DURATION_0">^3</xliff:g> రోజుల తర్వాత శాశ్వతంగా తొలగించబడుతుంది</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> వీడియోలను ట్రాష్ నుండి బయటకు తీయడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ వీడియోను ట్రాష్ నుండి బయటకు తీయడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> అంశాలను ట్రాష్‌కు తరలించేందుకు అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ అంశాన్ని ట్రాష్‌కు తరలించేందుకు అనుమతిస్తారా?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఫోటోలను ట్రాష్ నుండి బయటకు తీయడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ ఫోటోను ట్రాష్ నుండి బయటకు తీయడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">ఈ అంశాలు <xliff:g id="DURATION_1">^3</xliff:g> రోజుల తర్వాత శాశ్వతంగా తొలగించబడతాయి</item>
-      <item quantity="one">ఈ అంశం <xliff:g id="DURATION_0">^3</xliff:g>రోజుల తర్వాత శాశ్వతంగా తొలగించబడుతుంది</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఐటెమ్‌లను ట్రాష్ నుండి బయటకు తీయడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ ఐటెమ్‌ను ట్రాష్ నుండి బయటకు తీయడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ట్రాష్‌కి తరలించు"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"అనుమతిని రద్దు చేయి"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ఆడియో ఫైల్‌లను ట్రాష్ నుండి వెలుపలకు తీయడానికి అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ ఆడియో ఫైల్‌ను ట్రాష్ నుండి వెలుపలకు తీయడానికి అనుమతిస్తారా?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఆడియో ఫైల్‌లను తొలగించడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ ఆడియో ఫైల్‌ను తొలగించడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> వీడియోలను ట్రాష్ నుండి వెలుపలకు తీయడానికి అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ వీడియోను ట్రాష్ నుండి వెలుపలకు తీయడానికి అనుమతిస్తారా?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> వీడియోలను తొలగించడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ వీడియోను తొలగించడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ఫోటోలను ట్రాష్ నుండి వెలుపలకు తీయడానికి అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ ఫోటోను ట్రాష్ నుండి వెలుపలకు తీయడానికి అనుమతిస్తారా?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఫోటోలను తొలగించడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ ఫోటోను తొలగించడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> అంశాలను ట్రాష్ నుండి వెలుపలకు తీయడానికి అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ అంశాన్ని ట్రాష్ నుండి వెలుపలకు తీయడానికి అనుమతిస్తారా?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఐటెమ్‌లను తొలగించడానికి <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతించాలా?</item>
+      <item quantity="one">ఈ ఐటెమ్‌ను తొలగించడానికి <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతించాలా?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ట్రాష్ నుండి వెలుపలికి తీయి"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"అనుమతిని రద్దు చేయి"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ఆడియో ఫైల్‌లను తొలగించేందుకు <xliff:g id="APP_NAME_1">^1</xliff:g>ను అనుమతిస్తారా?</item>
-      <item quantity="one">ఈ ఆడియో ఫైల్‌ను తొలగించేందుకు <xliff:g id="APP_NAME_0">^1</xliff:g>ను అనుమతిస్తారా?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> వీడియోలను తొలగించేందుకు అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ వీడియోను తొలగించేందుకు అనుమతిస్తారా?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ఫోటోలను తొలగించేందుకు అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ ఫోటోను తొలగించేందుకు అనుమతిస్తారా?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> అంశాలను తొలగించేందుకు అనుమతిస్తారా?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ఈ అంశాన్ని తొలగించేందుకు అనుమతిస్తారా?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"తొలగించు"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"అనుమతిని రద్దు చేయి"</string>
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 098ce0a..db76bee 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"ต่อไป"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"อนุญาต"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"ปฏิเสธ"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">และอีก <xliff:g id="COUNT_1">^1</xliff:g> รายการ</item>
       <item quantity="one">และอีก <xliff:g id="COUNT_0">^1</xliff:g> รายการ</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> เปลี่ยนแปลงไฟล์เสียง <xliff:g id="COUNT">^2</xliff:g> ไฟล์ไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> เปลี่ยนแปลงไฟล์เสียงนี้ไหม</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"ล้างไฟล์แอปชั่วคราว"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ต้องการล้างไฟล์ชั่วคราวบางไฟล์ ซึ่งอาจส่งผลให้ใช้แบตเตอรี่หรืออินเทอร์เน็ตมือถือมากขึ้น"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"กำลังล้างไฟล์แอปชั่วคราว…"</string>
+    <string name="clear" msgid="5524638938415865915">"ล้าง"</string>
+    <string name="allow" msgid="8885707816848569619">"อนุญาต"</string>
+    <string name="deny" msgid="6040983710442068936">"ปฏิเสธ"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> แก้ไขไฟล์เสียง <xliff:g id="COUNT">^2</xliff:g> ไฟล์ไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> แก้ไขไฟล์เสียงนี้ไหม</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> เปลี่ยนแปลงวิดีโอ <xliff:g id="COUNT">^2</xliff:g> รายการไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> เปลี่ยนแปลงวิดีโอนี้ไหม</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> แก้ไขวิดีโอ <xliff:g id="COUNT">^2</xliff:g> รายการไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> แก้ไขวิดีโอนี้ไหม</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> เปลี่ยนแปลงรูปภาพ <xliff:g id="COUNT">^2</xliff:g> รูปไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> เปลี่ยนแปลงรูปภาพนี้ไหม</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> แก้ไขรูปภาพ <xliff:g id="COUNT">^2</xliff:g> รูปไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> แก้ไขรูปภาพนี้ไหม</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> เปลี่ยนแปลง <xliff:g id="COUNT">^2</xliff:g> รายการไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> เปลี่ยนแปลงรายการนี้ไหม</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> แก้ไข <xliff:g id="COUNT">^2</xliff:g> รายการไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> แก้ไขรายการนี้ไหม</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"เปลี่ยน"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"ยกเลิก"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้ายไฟล์เสียง <xliff:g id="COUNT">^2</xliff:g> ไฟล์ไปที่ถังขยะไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายไฟล์เสียงนี้ไปที่ถังขยะไหม</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้ายไฟล์เสียง <xliff:g id="COUNT">^2</xliff:g> ไฟล์ไปที่ถังขยะไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายไฟล์เสียงนี้ไปที่ถังขยะไหม</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">ไฟล์เสียงเหล่านี้จะถูกลบออกอย่างถาวรหลังจาก <xliff:g id="DURATION_1">^3</xliff:g> วัน</item>
-      <item quantity="one">ไฟล์เสียงนี้จะถูกลบออกอย่างถาวรหลังจาก <xliff:g id="DURATION_0">^3</xliff:g> วัน</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้ายวิดีโอ <xliff:g id="COUNT">^2</xliff:g> รายการไปที่ถังขยะไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายวิดีโอนี้ไปที่ถังขยะไหม</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้ายวิดีโอ <xliff:g id="COUNT">^2</xliff:g> รายการไปที่ถังขยะไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายวิดีโอนี้ไปที่ถังขยะไหม</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้ายรูปภาพ <xliff:g id="COUNT">^2</xliff:g> รูปไปที่ถังขยะไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายรูปภาพนี้ไปที่ถังขยะไหม</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">วิดีโอเหล่านี้จะถูกลบออกอย่างถาวรหลังจาก <xliff:g id="DURATION_1">^3</xliff:g> วัน</item>
-      <item quantity="one">วิดีโอนี้จะถูกลบออกอย่างถาวรหลังจาก <xliff:g id="DURATION_0">^3</xliff:g> วัน</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้าย <xliff:g id="COUNT">^2</xliff:g> รายการไปที่ถังขยะไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายรายการนี้ไปที่ถังขยะไหม</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้ายรูปภาพ <xliff:g id="COUNT">^2</xliff:g> รูปไปที่ถังขยะไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายรูปภาพนี้ไปที่ถังขยะไหม</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้ายไฟล์เสียง <xliff:g id="COUNT">^2</xliff:g> ไฟล์ออกจากถังขยะไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายไฟล์เสียงนี้ออกจากถังขยะไหม</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">รูปภาพเหล่านี้จะถูกลบออกอย่างถาวรหลังจาก <xliff:g id="DURATION_1">^3</xliff:g> วัน</item>
-      <item quantity="one">รูปภาพนี้จะถูกลบออกอย่างถาวรหลังจาก <xliff:g id="DURATION_0">^3</xliff:g> วัน</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้ายวิดีโอ <xliff:g id="COUNT">^2</xliff:g> รายการออกจากถังขยะไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายวิดีโอนี้ออกจากถังขยะไหม</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้าย <xliff:g id="COUNT">^2</xliff:g> รายการไปที่ถังขยะไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายรายการนี้ไปที่ถังขยะไหม</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้ายรูปภาพ <xliff:g id="COUNT">^2</xliff:g> รูปออกจากถังขยะไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายรูปภาพนี้ออกจากถังขยะไหม</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">รายการเหล่านี้จะถูกลบออกอย่างถาวรหลังจาก <xliff:g id="DURATION_1">^3</xliff:g> วัน</item>
-      <item quantity="one">รายการนี้จะถูกลบออกอย่างถาวรหลังจาก <xliff:g id="DURATION_0">^3</xliff:g> วัน</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้าย <xliff:g id="COUNT">^2</xliff:g> รายการออกจากถังขยะไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายรายการนี้ออกจากถังขยะไหม</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"ย้ายไปที่ถังขยะ"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"ยกเลิก"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้ายไฟล์เสียง <xliff:g id="COUNT">^2</xliff:g> ไฟล์ออกจากถังขยะไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายไฟล์เสียงนี้ออกจากถังขยะไหม</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ลบไฟล์เสียง <xliff:g id="COUNT">^2</xliff:g> ไฟล์ไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ลบไฟล์เสียงนี้ไหม</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้ายวิดีโอ <xliff:g id="COUNT">^2</xliff:g> รายการออกจากถังขยะไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายวิดีโอนี้ออกจากถังขยะไหม</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ลบวิดีโอ <xliff:g id="COUNT">^2</xliff:g> รายการไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ลบวิดีโอนี้ไหม</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้ายรูปภาพ <xliff:g id="COUNT">^2</xliff:g> รูปออกจากถังขยะไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายรูปภาพนี้ออกจากถังขยะไหม</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ลบรูปภาพ <xliff:g id="COUNT">^2</xliff:g> รูปไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ลบรูปภาพนี้ไหม</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ย้าย <xliff:g id="COUNT">^2</xliff:g> รายการออกจากถังขยะไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ย้ายรายการนี้ออกจากถังขยะไหม</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">อนุญาตให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ลบ <xliff:g id="COUNT">^2</xliff:g> รายการไหม</item>
+      <item quantity="one">อนุญาตให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ลบรายการนี้ไหม</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"ย้ายออกจากถังขยะ"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"ยกเลิก"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ลบไฟล์เสียง <xliff:g id="COUNT">^2</xliff:g> ไฟล์ไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ลบไฟล์เสียงนี้ไหม</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ลบวิดีโอ <xliff:g id="COUNT">^2</xliff:g> รายการไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ลบวิดีโอนี้ไหม</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ลบรูปภาพ <xliff:g id="COUNT">^2</xliff:g> รูปไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ลบรูปภาพนี้ไหม</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">ให้ <xliff:g id="APP_NAME_1">^1</xliff:g> ลบ <xliff:g id="COUNT">^2</xliff:g> รายการไหม</item>
-      <item quantity="one">ให้ <xliff:g id="APP_NAME_0">^1</xliff:g> ลบรายการนี้ไหม</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"ลบ"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"ยกเลิก"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index b00baa6..79452b3 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Magpatuloy"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Payagan"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Tanggihan"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">At <xliff:g id="COUNT_1">^1</xliff:g> pang item</item>
       <item quantity="other">At <xliff:g id="COUNT_1">^1</xliff:g> pang item</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na baguhin ang <xliff:g id="COUNT">^2</xliff:g> audio file?</item>
-      <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na baguhin ang <xliff:g id="COUNT">^2</xliff:g> na audio file?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"I-clear ang mga pansamantalang file ng app"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"Gustong mag-clear ng <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ng ilang pansamantalang file. Baka lumakas ang paggamit ng baterya o cellular data dahil dito."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Kini-clear ang mga pansamantalang file ng app…"</string>
+    <string name="clear" msgid="5524638938415865915">"I-clear"</string>
+    <string name="allow" msgid="8885707816848569619">"Payagan"</string>
+    <string name="deny" msgid="6040983710442068936">"Tanggihan"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na i-modify ang <xliff:g id="COUNT">^2</xliff:g> audio file?</item>
+      <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na i-modify ang <xliff:g id="COUNT">^2</xliff:g> na audio file?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na baguhin ang <xliff:g id="COUNT">^2</xliff:g> video?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na baguhin ang <xliff:g id="COUNT">^2</xliff:g> na video?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na baguhin ang <xliff:g id="COUNT">^2</xliff:g> larawan?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na baguhin ang <xliff:g id="COUNT">^2</xliff:g> na larawan?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na baguhin ang <xliff:g id="COUNT">^2</xliff:g> item?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na baguhin ang <xliff:g id="COUNT">^2</xliff:g> na item?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Baguhin"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Kanselahin"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na ilipat sa trash ang <xliff:g id="COUNT">^2</xliff:g> audio file?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na ilipat sa trash ang <xliff:g id="COUNT">^2</xliff:g> na audio file?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Permanenteng made-delete ang mga audio file na ito pagkalipas ng <xliff:g id="DURATION_1">^3</xliff:g> (na) araw</item>
-      <item quantity="other">Permanenteng made-delete ang mga audio file na ito pagkalipas ng <xliff:g id="DURATION_1">^3</xliff:g> (na) araw</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na ilipat sa trash ang <xliff:g id="COUNT">^2</xliff:g> video?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na ilipat sa trash ang <xliff:g id="COUNT">^2</xliff:g> na video?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Permanenteng made-delete ang mga video na ito pagkalipas ng <xliff:g id="DURATION_1">^3</xliff:g> (na) araw</item>
-      <item quantity="other">Permanenteng made-delete ang mga video na ito pagkalipas ng <xliff:g id="DURATION_1">^3</xliff:g> (na) araw</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na ilipat sa trash ang <xliff:g id="COUNT">^2</xliff:g> larawan?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na ilipat sa trash ang <xliff:g id="COUNT">^2</xliff:g> na larawan?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Permanenteng made-delete ang mga larawang ito pagkalipas ng <xliff:g id="DURATION_1">^3</xliff:g> (na) araw</item>
-      <item quantity="other">Permanenteng made-delete ang mga larawang ito pagkalipas ng <xliff:g id="DURATION_1">^3</xliff:g> (na) araw</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na ilipat sa trash ang <xliff:g id="COUNT">^2</xliff:g> item?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na ilipat sa trash ang <xliff:g id="COUNT">^2</xliff:g> na item?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Permanenteng made-delete ang mga item na ito pagkalipas ng <xliff:g id="DURATION_1">^3</xliff:g> (na) araw</item>
-      <item quantity="other">Permanenteng made-delete ang mga item na ito pagkalipas ng <xliff:g id="DURATION_1">^3</xliff:g> (na) araw</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Ilipat sa trash"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Kanselahin"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na alisin sa trash ang <xliff:g id="COUNT">^2</xliff:g> audio file?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na alisin sa trash ang <xliff:g id="COUNT">^2</xliff:g> na audio file?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na alisin sa trash ang <xliff:g id="COUNT">^2</xliff:g> video?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na alisin sa trash ang <xliff:g id="COUNT">^2</xliff:g> na video?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na alisin sa trash ang <xliff:g id="COUNT">^2</xliff:g> larawan?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na alisin sa trash ang <xliff:g id="COUNT">^2</xliff:g> na larawan?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na alisin sa trash ang <xliff:g id="COUNT">^2</xliff:g> item?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na alisin sa trash ang <xliff:g id="COUNT">^2</xliff:g> na item?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Alisin sa trash"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Kanselahin"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na i-delete ang <xliff:g id="COUNT">^2</xliff:g> audio file?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na i-delete ang <xliff:g id="COUNT">^2</xliff:g> na audio file?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na i-delete ang <xliff:g id="COUNT">^2</xliff:g> video?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na i-delete ang <xliff:g id="COUNT">^2</xliff:g> na video?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na i-delete ang <xliff:g id="COUNT">^2</xliff:g> larawan?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na i-delete ang <xliff:g id="COUNT">^2</xliff:g> na larawan?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na i-delete ang <xliff:g id="COUNT">^2</xliff:g> item?</item>
       <item quantity="other">Payagan ang <xliff:g id="APP_NAME_1">^1</xliff:g> na i-delete ang <xliff:g id="COUNT">^2</xliff:g> na item?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"I-delete"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Kanselahin"</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 5d70cc4..669eac9 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Devam"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"İzin ver"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Reddet"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Ayrıca <xliff:g id="COUNT_1">^1</xliff:g> ek öğe</item>
       <item quantity="one">Ayrıca <xliff:g id="COUNT_0">^1</xliff:g> ek öğe</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> ses dosyasını değiştirsin mi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu ses dosyasını değiştirsin mi?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Geçici uygulama dosyalarını temizleyin"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> bazı geçici dosyaları temizlemek istiyor. Bu, pil veya hücresel veri kullanımında artışa yol açabilir."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Geçici uygulama dosyaları temizleniyor…"</string>
+    <string name="clear" msgid="5524638938415865915">"Temizle"</string>
+    <string name="allow" msgid="8885707816848569619">"İzin ver"</string>
+    <string name="deny" msgid="6040983710442068936">"Reddet"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> ses dosyasını değiştirmesine izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu ses dosyasını değiştirmesine izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> videoyu değiştirsin mi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu videoyu değiştirsin mi?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> videoyu değiştirmesine izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu videoyu değiştirmesine izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> fotoğrafı değiştirsin mi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu fotoğrafı değiştirsin mi?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> fotoğrafı değiştirmesine izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu fotoğrafı değiştirmesine izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> öğeyi değiştirsin mi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu öğeyi değiştirsin mi?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> öğeyi değiştirmesine izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu öğeyi değiştirmesine izin verilsin mi?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Değiştir"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"İptal"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> ses dosyasını çöp kutusuna taşısın mı?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu ses dosyasını çöp kutusuna taşısın mı?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> ses dosyasını çöp kutusuna taşımasına izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu ses dosyasını çöp kutusuna taşımasına izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Bu ses dosyaları <xliff:g id="DURATION_1">^3</xliff:g> gün sonra kalıcı olarak silinecektir</item>
-      <item quantity="one">Bu ses dosyası <xliff:g id="DURATION_0">^3</xliff:g> gün sonra kalıcı olarak silinecektir</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> videoyu çöp kutusuna taşımasına izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu videoyu çöp kutusuna taşımasına izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> videoyu çöp kutusuna taşısın mı?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu videoyu çöp kutusuna taşısın mı?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> fotoğrafı çöp kutusuna taşımasına izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu fotoğrafı çöp kutusuna taşımasına izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Bu videolar <xliff:g id="DURATION_1">^3</xliff:g> gün sonra kalıcı olarak silinecektir</item>
-      <item quantity="one">Bu video <xliff:g id="DURATION_0">^3</xliff:g> gün sonra kalıcı olarak silinecektir</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> öğeyi çöp kutusuna taşımasına izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu öğeyi çöp kutusuna taşımasına izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> fotoğrafı çöp kutusuna taşısın mı?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu fotoğrafı çöp kutusuna taşısın mı?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> ses dosyasını çöp kutusundan geri yüklemesine izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu ses dosyasını çöp kutusundan geri yüklemesine izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Bu fotoğraflar <xliff:g id="DURATION_1">^3</xliff:g> gün sonra kalıcı olarak silinecektir</item>
-      <item quantity="one">Bu fotoğraf <xliff:g id="DURATION_0">^3</xliff:g> gün sonra kalıcı olarak silinecektir</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> videoyu çöp kutusundan geri yüklemesine izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu videoyu çöp kutusundan geri yüklemesine izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> öğeyi çöp kutusuna taşısın mı?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu öğeyi çöp kutusuna taşısın mı?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> fotoğrafı çöp kutusundan geri yüklemesine izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu fotoğrafı çöp kutusundan geri yüklemesine izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Bu öğeler <xliff:g id="DURATION_1">^3</xliff:g> gün sonra kalıcı olarak silinecektir</item>
-      <item quantity="one">Bu öğe <xliff:g id="DURATION_0">^3</xliff:g> gün sonra kalıcı olarak silinecektir</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> öğeyi çöp kutusundan geri yüklemesine izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu öğeyi çöp kutusundan geri yüklemesine izin verilsin mi?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Çöp kutusuna taşı"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"İptal"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> videoyu çöp kutusundan geri yüklesin mi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu videoyu çöp kutusundan geri yüklesin mi?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> ses dosyasını silmesine izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu ses dosyasını silmesine izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> videoyu çöp kutusundan geri yüklesin mi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu videoyu çöp kutusundan geri yüklesin mi?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> videoyu silmesine izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu videoyu silmesine izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> fotoğrafı çöp kutusundan geri yüklesin mi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu fotoğrafı çöp kutusundan geri yüklesin mi?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> fotoğrafı silmesine izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu fotoğrafı silmesine izin verilsin mi?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> öğeyi çöp kutusundan geri yüklesin mi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu öğeyi çöp kutusundan geri yüklesin mi?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulamasının <xliff:g id="COUNT">^2</xliff:g> öğeyi silmesine izin verilsin mi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulamasının bu öğeyi silmesine izin verilsin mi?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Çöp kutusundan geri yükle"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"İptal"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> ses dosyasını silsin mi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu ses dosyasını silsin mi?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> videoyu silsin mi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu videoyu silsin mi?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> fotoğrafı silsin mi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu fotoğrafı silsin mi?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> uygulaması <xliff:g id="COUNT">^2</xliff:g> öğeyi silsin mi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> uygulaması bu öğeyi silsin mi?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Sil"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"İptal"</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 7504e5e..281c8b2 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -28,148 +28,119 @@
     <string name="permission_required" msgid="1460820436132943754">"Щоб змінити або видалити цей елемент, потрібен дозвіл."</string>
     <string name="permission_required_action" msgid="706370952366113539">"Продовжити"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Надати"</string>
-    <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Відмовити"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Заборонити"</string>
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="few">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="many">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Ще <xliff:g id="COUNT_1">^1</xliff:g> додатковий елемент</item>
       <item quantity="few">Ще <xliff:g id="COUNT_1">^1</xliff:g> додаткові елементи</item>
       <item quantity="many">Ще <xliff:g id="COUNT_1">^1</xliff:g> додаткових елементів</item>
       <item quantity="other">Ще <xliff:g id="COUNT_1">^1</xliff:g> додаткового елемента</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Видалити тимчасові файли додатків"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"Додаток <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> хоче видалити деякі тимчасові файли. Це може збільшити використання акумулятора або мобільного трафіку."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Видалення тимчасових файлів додатків…"</string>
+    <string name="clear" msgid="5524638938415865915">"Очистити"</string>
+    <string name="allow" msgid="8885707816848569619">"Дозволити"</string>
+    <string name="deny" msgid="6040983710442068936">"Заборонити"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> аудіофайл?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> аудіофайли?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> аудіофайлів?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> аудіофайлу?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> відео?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> відео?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> відео?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> відео?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> фотографію?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> фотографії?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> фотографій?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> фотографії?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> елемент?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> елементи?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> елементів?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> змінити <xliff:g id="COUNT">^2</xliff:g> елемента?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Змінити"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Скасувати"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> аудіофайл у кошик?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> аудіофайли в кошик?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> аудіофайлів у кошик?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> аудіофайлу в кошик?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Цей аудіофайл буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> день</item>
-      <item quantity="few">Цей аудіофайл буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> дні</item>
-      <item quantity="many">Цей аудіофайл буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> днів</item>
-      <item quantity="other">Цей аудіофайл остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> дня</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> відео в кошик?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> відео в кошик?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> відео в кошик?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> відео в кошик?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Ці відео буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> день</item>
-      <item quantity="few">Ці відео буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> дні</item>
-      <item quantity="many">Ці відео буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> днів</item>
-      <item quantity="other">Ці відео буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> дня</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> фотографію в кошик?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> фотографії в кошик?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> фотографій у кошик?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> фотографії в кошик?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Ці фотографії буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> день</item>
-      <item quantity="few">Ці фотографії буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> дні</item>
-      <item quantity="many">Ці фотографії буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> днів</item>
-      <item quantity="other">Ці фотографії буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> дня</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> елемент у кошик?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> елементи в кошик?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> елементів у кошик?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> перемістити <xliff:g id="COUNT">^2</xliff:g> елемента в кошик?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Ці елементи буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> день</item>
-      <item quantity="few">Ці елементи буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> дні</item>
-      <item quantity="many">Ці елементи буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> днів</item>
-      <item quantity="other">Ці елементи буде остаточно видалено за <xliff:g id="DURATION_1">^3</xliff:g> дня</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Перемістити в кошик"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Скасувати"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> аудіофайл?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> аудіофайли?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> аудіофайлів?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> аудіофайлу?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> відео?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> відео?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> відео?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> відео?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> фотографію?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> фотографії?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> фотографій?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> фотографії?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> елемент?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> елементи?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> елементів?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> відновити <xliff:g id="COUNT">^2</xliff:g> елемента?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Відновити"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Скасувати"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> аудіофайл?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> аудіофайли?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> аудіофайлів?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> аудіофайлу?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> відео?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> відео?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> відео?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> відео?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> фотографію?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> фотографії?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> фотографій?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> фотографії?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> елемент?</item>
       <item quantity="few">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> елементи?</item>
       <item quantity="many">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> елементів?</item>
       <item quantity="other">Дозволити додатку <xliff:g id="APP_NAME_1">^1</xliff:g> видалити <xliff:g id="COUNT">^2</xliff:g> елемента?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Видалити"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Скасувати"</string>
 </resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 55d528d..ad6cdf1 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"جاری رکھیں"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"اجازت دیں"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"مسترد کریں"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">‎<xliff:g id="COUNT_1">^1</xliff:g>+</item>
+      <item quantity="one">‎+<xliff:g id="COUNT_0">^1</xliff:g>‎</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">مزید <xliff:g id="COUNT_1">^1</xliff:g> اضافی آئٹمز</item>
       <item quantity="one">مزید <xliff:g id="COUNT_0">^1</xliff:g> اضافی آئٹم</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> آڈیو فائلز کو تبدیل کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس آڈیو فائل کو تبدیل کرنے دیں؟</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"ایپ کی عارضی فائلز کو صاف کریں"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> کچھ عارضی فائلز کو صاف کرنا چاہتی ہے۔ اس کی وجہ سے بیٹری یا سیلولر ڈیٹا کے استعمال میں اضافہ ہو سکتا ہے۔"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"ایپ کی عارضی فائلز کو صاف کیا جا رہا ہے…"</string>
+    <string name="clear" msgid="5524638938415865915">"صاف کریں"</string>
+    <string name="allow" msgid="8885707816848569619">"اجازت دیں"</string>
+    <string name="deny" msgid="6040983710442068936">"مسترد کریں"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> آڈیو فائلز میں ترمیم کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس آڈیو فائل میں ترمیم کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے<xliff:g id="COUNT">^2</xliff:g> ویڈیوز کو تبدیل کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس ویڈیو کو تبدیل کرنے دیں؟</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> ویڈیوز میں ترمیم کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس ویڈیو میں ترمیم کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> تصاویر کو تبدیل کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس تصویر کو تبدیل کرنے دیں؟</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> تصاویر میں ترمیم کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس تصویر میں ترمیم کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> آئٹمز کو تبدیل کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس آئٹم کو تبدیل کرنے دیں؟</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> آئٹمز میں ترمیم کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس آئٹم میں ترمیم کرنے کی اجازت دیں؟</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"تبدیل کریں"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"منسوخ کریں"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> آڈیو فائل کو کوڑے دان میں منتقل کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس آڈیو فائل کو کوڑے دان میں منتقل کرنے دیں؟</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> آڈیو فائلز کو کوڑے دان میں منتقل کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس آڈیو فائل کو کوڑے دان میں منتقل کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">یہ آڈیو فائلز <xliff:g id="DURATION_1">^3</xliff:g> دنوں کے بعد مستقل طور پر حذف کر دیے جائیں گے</item>
-      <item quantity="one">اس آڈیو فائل کو <xliff:g id="DURATION_0">^3</xliff:g> دنوں کے بعد مستقل طور پر حذف کر دیا جائے گا</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> ویڈیوز کو کوڑے دان میں منتقل کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس ویڈیو کو کوڑے دان میں منتقل کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> ویڈیوز کو کوڑے دان میں منتقل کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس ویڈیو کو کوڑے دان میں منتقل کرنے دیں؟</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> تصاویر کو کوڑے دان میں منتقل کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس تصویر کو کوڑے دان میں منتقل کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">یہ ویڈیوز <xliff:g id="DURATION_1">^3</xliff:g> دنوں کے بعد مستقل طور پر حذف کر دیے جائیں گے</item>
-      <item quantity="one">یہ ویڈیو <xliff:g id="DURATION_0">^3</xliff:g> دنوں کے بعد مستقل طور پر حذف کر دیا جائے گا</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> آئٹمز کو کوڑے دان میں منتقل کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس آئٹم کو کوڑے دان میں منتقل کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> تصاویر کو کوڑے دان میں منتقل کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس تصویر کو کوڑے دان میں منتقل کرنے دیں؟</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> آڈیو فائلز کو کوڑے دان سے باہر منتقل کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس آڈیو فائل کو کوڑے دان سے باہر منتقل کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">یہ تصاویر <xliff:g id="DURATION_1">^3</xliff:g> دنوں کے بعد مستقل طور پر حذف کر دی جائیں گی</item>
-      <item quantity="one">یہ تصویر <xliff:g id="DURATION_0">^3</xliff:g> دنوں کے بعد مستقل طور پر حذف کر دی جائے گی</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> ویڈیوز کو کوڑے دان سے باہر منتقل کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس ویڈیو کو کوڑے دان سے باہر منتقل کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> آئٹمز کو کوڑے دان میں منتقل کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس آئٹم کو کوڑے دان میں منتقل کرنے دیں؟</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> تصاویر کو کوڑے دان سے باہر منتقل کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس تصویر کو کوڑے دان سے باہر منتقل کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">یہ آئٹمز <xliff:g id="DURATION_1">^3</xliff:g> دنوں کے بعد مستقل طور پر حذف کر دیے جائیں گے</item>
-      <item quantity="one">یہ آئٹم <xliff:g id="DURATION_0">^3</xliff:g> دنوں کے بعد مستقل طور پر حذف کر دیا جائے گا</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> آئٹمز کو کوڑے دان سے باہر منتقل کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس آئٹم کو کوڑے دان سے باہر منتقل کرنے کی اجازت دیں؟</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"کوڑے دان میں منتقل کریں"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"منسوخ کریں"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> آڈیو فائلز کو کوڑے دان سے باہر منتقل کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس آڈیو فائل کو کوڑے دان سے باہر منتقل کرنے دیں؟</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> آڈیو فائلز کو حذف کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس آڈیو فائل کو حذف کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> ویڈیوز کو کوڑے دان سے باہر منتقل کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس ویڈیو کو کوڑے دان سے باہر منتقل کرنے دیں؟</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> ویڈیوز کو حذف کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس ویڈیو کو حذف کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> تصاویر کو کوڑے دان سے باہر منتقل کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس تصویر کو کوڑے دان سے باہر منتقل کرنے دیں؟</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> تصاویر کو حذف کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس تصویر کو حذف کرنے کی اجازت دیں؟</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> آئٹمز کو کوڑے دان سے باہر منتقل کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس آئٹم کو کوڑے دان سے باہر منتقل کرنے دیں؟</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کو <xliff:g id="COUNT">^2</xliff:g> آئٹمز کو حذف کرنے کی اجازت دیں؟</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کو اس آئٹم کو حذف کرنے کی اجازت دیں؟</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"کوڑے دان سے باہر منتقل کریں"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"منسوخ کریں"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> آڈیو فائلز کو حذف کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس آڈیو فائل کو حذف کرنے دیں؟</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> ویڈیوز کو حذف کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس ویڈیو کو حذف کرنے دیں؟</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> تصاویر کو حذف کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس تصویر کو حذف کرنے دیں؟</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> کے <xliff:g id="COUNT">^2</xliff:g> آئٹمز کو حذف کرنے دیں؟</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> کے اس آئٹم کو حذف کرنے دیں؟</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"حذف کریں"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"منسوخ کریں"</string>
 </resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index fd605b8..0dcad99 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Davom etish"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Ruxsat"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Rad etish"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Yana <xliff:g id="COUNT_1">^1</xliff:g> ta qoʻshimcha element</item>
       <item quantity="one">Yana <xliff:g id="COUNT_0">^1</xliff:g> ta qoʻshimcha element</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"Ilova keshi <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> orqali tozalansinmi?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ayrim vaqtincha fayllarni tozalamoqchi. Ruxsat berilsa, batareya yoki trafik sarfi tejaladi."</string>
-    <string name="allow" msgid="8885707816848569619">"Ruxsat berish"</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Ilovaga oid vaqtincha fayllarni tozalash"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ayrim vaqtincha fayllarni tozalamoqchi. Bunda batareya quvvati yoki internet trafigi ortiqcha sarflanishi mumkin."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Ilovaga oid vaqtincha fayllar tozalanmoqda…"</string>
+    <string name="clear" msgid="5524638938415865915">"Tozalash"</string>
+    <string name="allow" msgid="8885707816848569619">"Ruxsat"</string>
     <string name="deny" msgid="6040983710442068936">"Rad etish"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta audio faylni oʻzgartirsinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu audio faylni oʻzgartirsinmi?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta audio faylni oʻzgartirishi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu audio faylni oʻzgartirishi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta videoni oʻzgartirsinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu videoni oʻzgartirsinmi?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta videoni oʻzgartirishi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu videoni oʻzgartirishi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta rasmni oʻzgartirsinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu rasmni oʻzgartirsinmi?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta suratni oʻzgartirishi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu suratni oʻzgartirishi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta elementni oʻzgartirsinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu elementni oʻzgartirsinmi?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta elementni oʻzgartirishi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu elementni oʻzgartirishi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Oʻzgartirish"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Bekor qilish"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta audio faylni chiqitdonga tashlasinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu audio faylni chiqitdonga tashlasinmi?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta audio faylni chiqitdonga tashlashi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu audio faylni chiqitdonga tashlashi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Bu audio fayllar <xliff:g id="DURATION_1">^3</xliff:g> kundan keyin butunlay tozalab tashlanadi</item>
-      <item quantity="one">Bu audio fayl <xliff:g id="DURATION_0">^3</xliff:g> kundan keyin butunlay tozalab tashlanadi</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta videoni chiqitdonga tashlashi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu videoni chiqitdonga tashlashi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta videoni chiqitdonga tashlasinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu videoni chiqitdonga tashlasinmi?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta suratni chiqitdonga tashlashi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu suratni chiqitdonga tashlashi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Bu videolar <xliff:g id="DURATION_1">^3</xliff:g> kundan keyin butunlay tozalab tashlanadi</item>
-      <item quantity="one">Bu video <xliff:g id="DURATION_0">^3</xliff:g> kundan keyin butunlay tozalab tashlanadi</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta elementni chiqitdonga tashlashi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu elementni chiqitdonga tashlashi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta rasmni chiqitdonga tashlasinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu rasmni chiqitdonga tashlasinmi?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta audio faylni chiqitdondan chiqarib olishi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu audio faylni chiqitdondan chiqarib olishi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Bu rasmlar <xliff:g id="DURATION_1">^3</xliff:g> kundan keyin butunlay tozalab tashlanadi</item>
-      <item quantity="one">Bu rasm <xliff:g id="DURATION_0">^3</xliff:g> kundan keyin butunlay tozalab tashlanadi</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta videoni chiqitdondan chiqarib olishi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu videoni chiqitdondan chiqarib olishi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta elementni chiqitdonga tashlasinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu elementni chiqitdonga tashlasinmi?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta suratni chiqitdondan chiqarib olishi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu suratni chiqitdondan chiqarib olishi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Bu elementlar <xliff:g id="DURATION_1">^3</xliff:g> kundan keyin butunlay tozalab tashlanadi</item>
-      <item quantity="one">Bu element <xliff:g id="DURATION_0">^3</xliff:g> kundan keyin butunlay tozalab tashlanadi</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta elementni chiqitdondan chiqarib olishi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu elementni chiqitdondan chiqarib olishi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Chiqitdonga tashlash"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Bekor qilish"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta audio faylni chiqitdondan chiqarib olsinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu audio faylni chiqitdondan chiqarib olsinmi?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta audio faylni oʻchirib tashlashi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu audio faylni oʻchirib tashlashi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta videoni chiqitdondan chiqarib olsinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu videoni chiqitdondan chiqarib olsinmi?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta videoni oʻchirib tashlashi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu videoni oʻchirib tashlashi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta rasmni chiqitdondan chiqarib olsinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu rasmni chiqitdondan chiqarib olsinmi?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta suratni oʻchirib tashlashi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu suratni oʻchirib tashlashi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta elementni chiqitdondan chiqarib olsinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu elementni chiqitdondan chiqarib olsinmi?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> ilovasiga <xliff:g id="COUNT">^2</xliff:g> ta elementni oʻchirib tashlashi uchun ruxsat berilsinmi?</item>
+      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> ilovasiga bu elementni oʻchirib tashlashi uchun ruxsat berilsinmi?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Chiqitdondan chiqarish"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Bekor qilish"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta audio faylni oʻchirib tashlasinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu audio faylni oʻchirib tashlasinmi?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta videoni oʻchirib tashlasinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu videoni oʻchirib tashlasinmi?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta rasmni oʻchirib tashlasinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu rasmni oʻchirib tashlasinmi?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other"><xliff:g id="APP_NAME_1">^1</xliff:g> <xliff:g id="COUNT">^2</xliff:g> ta elementni oʻchirib tashlasinmi?</item>
-      <item quantity="one"><xliff:g id="APP_NAME_0">^1</xliff:g> bu elementni oʻchirib tashlasinmi?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Oʻchirish"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Bekor qilish"</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index b0c1524..d0cbec7 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Tiếp tục"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Cho phép"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Từ chối"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="one">+<xliff:g id="COUNT_0">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">Và <xliff:g id="COUNT_1">^1</xliff:g> mục khác</item>
       <item quantity="one">Và <xliff:g id="COUNT_0">^1</xliff:g> mục khác</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> thay đổi <xliff:g id="COUNT">^2</xliff:g> tệp âm thanh?</item>
-      <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> thay đổi tệp âm thanh này?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Xóa tệp ứng dụng tạm thời"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> muốn xóa một số tệp tạm thời. Điều này có thể làm tăng mức sử dụng pin hoặc dữ liệu di động."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Đang xóa tệp ứng dụng tạm thời…"</string>
+    <string name="clear" msgid="5524638938415865915">"Xóa"</string>
+    <string name="allow" msgid="8885707816848569619">"Cho phép"</string>
+    <string name="deny" msgid="6040983710442068936">"Từ chối"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> sửa đổi <xliff:g id="COUNT">^2</xliff:g> tệp âm thanh?</item>
+      <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> sửa đổi tệp âm thanh này?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> thay đổi <xliff:g id="COUNT">^2</xliff:g> video?</item>
-      <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> thay đổi video này?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> sửa đổi <xliff:g id="COUNT">^2</xliff:g> video?</item>
+      <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> sửa đổi video này?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> thay đổi <xliff:g id="COUNT">^2</xliff:g> ảnh?</item>
-      <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> thay đổi ảnh này?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> sửa đổi <xliff:g id="COUNT">^2</xliff:g> ảnh?</item>
+      <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> sửa đổi ảnh này?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> thay đổi <xliff:g id="COUNT">^2</xliff:g> mục?</item>
-      <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> thay đổi mục này?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> sửa đổi <xliff:g id="COUNT">^2</xliff:g> mục?</item>
+      <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> sửa đổi mục này?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Thay đổi"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Hủy"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> chuyển <xliff:g id="COUNT">^2</xliff:g> tệp âm thanh vào thùng rác?</item>
       <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> chuyển tệp âm thanh này vào thùng rác?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">Các tệp âm thanh này sẽ bị xóa vĩnh viễn sau <xliff:g id="DURATION_1">^3</xliff:g> ngày</item>
-      <item quantity="one">Tệp âm thanh này sẽ bị xóa vĩnh viễn sau <xliff:g id="DURATION_0">^3</xliff:g> ngày</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> chuyển <xliff:g id="COUNT">^2</xliff:g> video vào thùng rác?</item>
       <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> chuyển video này vào thùng rác?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">Các video này sẽ bị xóa vĩnh viễn sau <xliff:g id="DURATION_1">^3</xliff:g> ngày</item>
-      <item quantity="one">Video này sẽ bị xóa vĩnh viễn sau <xliff:g id="DURATION_0">^3</xliff:g> ngày</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> chuyển <xliff:g id="COUNT">^2</xliff:g> ảnh vào thùng rác?</item>
       <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> chuyển ảnh này vào thùng rác?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">Các ảnh này sẽ bị xóa vĩnh viễn sau <xliff:g id="DURATION_1">^3</xliff:g> ngày</item>
-      <item quantity="one">Ảnh này sẽ bị xóa vĩnh viễn sau <xliff:g id="DURATION_0">^3</xliff:g> ngày</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
       <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> chuyển <xliff:g id="COUNT">^2</xliff:g> mục vào thùng rác?</item>
       <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> chuyển mục này vào thùng rác?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">Các mục này sẽ bị xóa vĩnh viễn sau <xliff:g id="DURATION_1">^3</xliff:g> ngày</item>
-      <item quantity="one">Mục này sẽ bị xóa vĩnh viễn sau <xliff:g id="DURATION_0">^3</xliff:g> ngày</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Chuyển vào thùng rác"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Hủy"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> chuyển <xliff:g id="COUNT">^2</xliff:g> tệp âm thanh ra khỏi thùng rác?</item>
-      <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> chuyển tệp âm thành này ra khỏi thùng rác?</item>
+      <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> chuyển tệp âm thanh này ra khỏi thùng rác?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> chuyển <xliff:g id="COUNT">^2</xliff:g> video ra khỏi thùng rác?</item>
       <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> chuyển video này ra khỏi thùng rác?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> chuyển <xliff:g id="COUNT">^2</xliff:g> ảnh ra khỏi thùng rác?</item>
       <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> chuyển ảnh này ra khỏi thùng rác?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> chuyển <xliff:g id="COUNT">^2</xliff:g> mục ra khỏi thùng rác?</item>
       <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> chuyển mục này ra khỏi thùng rác?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Chuyển ra khỏi thùng rác"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Hủy"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> xóa <xliff:g id="COUNT">^2</xliff:g> tệp âm thanh?</item>
       <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> xóa tệp âm thanh này?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> xóa <xliff:g id="COUNT">^2</xliff:g> video?</item>
       <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> xóa video này?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> xóa <xliff:g id="COUNT">^2</xliff:g> ảnh?</item>
       <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> xóa ảnh này?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="other">Cho phép <xliff:g id="APP_NAME_1">^1</xliff:g> xóa <xliff:g id="COUNT">^2</xliff:g> mục?</item>
       <item quantity="one">Cho phép <xliff:g id="APP_NAME_0">^1</xliff:g> xóa mục này?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Xóa"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Hủy"</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 80e824a..6cd41f7 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"继续"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"允许"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"拒绝"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">另外 <xliff:g id="COUNT_1">^1</xliff:g> 项</item>
+      <item quantity="one">另外 <xliff:g id="COUNT_0">^1</xliff:g> 项</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">还有 <xliff:g id="COUNT_1">^1</xliff:g> 项</item>
       <item quantity="one">还有 <xliff:g id="COUNT_0">^1</xliff:g> 项</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>更改这 <xliff:g id="COUNT">^2</xliff:g> 个音频文件吗?</item>
-      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>更改这个音频文件吗?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"清除临时应用文件"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>请求清除一些临时文件。这可能消耗更多电量或数据流量。"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"正在清除临时应用文件…"</string>
+    <string name="clear" msgid="5524638938415865915">"清除"</string>
+    <string name="allow" msgid="8885707816848569619">"允许"</string>
+    <string name="deny" msgid="6040983710442068936">"拒绝"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>修改这 <xliff:g id="COUNT">^2</xliff:g> 个音频文件吗?</item>
+      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>修改这个音频文件吗?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>更改这 <xliff:g id="COUNT">^2</xliff:g> 个视频吗?</item>
-      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>更改这个视频吗?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>修改这 <xliff:g id="COUNT">^2</xliff:g> 个视频吗?</item>
+      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>修改这个视频吗?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>更改这 <xliff:g id="COUNT">^2</xliff:g> 张照片吗?</item>
-      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>更改这张照片吗?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>修改这 <xliff:g id="COUNT">^2</xliff:g> 张照片吗?</item>
+      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>修改这张照片吗?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>更改这 <xliff:g id="COUNT">^2</xliff:g> 个项目吗?</item>
-      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>更改这个项目吗?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>修改这 <xliff:g id="COUNT">^2</xliff:g> 项内容吗?</item>
+      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>修改这项内容吗?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"更改"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"取消"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>将这 <xliff:g id="COUNT">^2</xliff:g> 个音频文件移入回收站吗?</item>
       <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>将这个音频文件移入回收站吗?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">这些音频文件将在 <xliff:g id="DURATION_1">^3</xliff:g> 天后被永久删除</item>
-      <item quantity="one">这个音频文件将在 <xliff:g id="DURATION_0">^3</xliff:g> 天后被永久删除</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>将这 <xliff:g id="COUNT">^2</xliff:g> 个视频移入回收站吗?</item>
       <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>将这个视频移入回收站吗?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">这些视频将在 <xliff:g id="DURATION_1">^3</xliff:g> 天后被永久删除</item>
-      <item quantity="one">这个视频将在 <xliff:g id="DURATION_0">^3</xliff:g> 天后被永久删除</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
       <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>将这 <xliff:g id="COUNT">^2</xliff:g> 张照片移入回收站吗?</item>
       <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>将这张照片移入回收站吗?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">这些照片将在 <xliff:g id="DURATION_1">^3</xliff:g> 天后被永久删除</item>
-      <item quantity="one">这张照片将在 <xliff:g id="DURATION_0">^3</xliff:g> 天后被永久删除</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>将这 <xliff:g id="COUNT">^2</xliff:g> 项内容移入回收站吗?</item>
+      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>将这项内容移入回收站吗?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>将这 <xliff:g id="COUNT">^2</xliff:g> 个项目移入回收站吗?</item>
-      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>将这个项目移入回收站吗?</item>
-    </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">这些项目将在 <xliff:g id="DURATION_1">^3</xliff:g> 天后被永久删除</item>
-      <item quantity="one">这个项目将在 <xliff:g id="DURATION_0">^3</xliff:g> 天后被永久删除</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"移入回收站"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"取消"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
       <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>将这 <xliff:g id="COUNT">^2</xliff:g> 个音频文件从回收站中移出吗?</item>
       <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>将这个音频文件从回收站中移出吗?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>将这 <xliff:g id="COUNT">^2</xliff:g> 个视频从回收站中移出吗?</item>
       <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>将这个视频从回收站中移出吗?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>将这 <xliff:g id="COUNT">^2</xliff:g> 张照片从回收站中移出吗?</item>
       <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>将这张照片从回收站中移出吗?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>将这 <xliff:g id="COUNT">^2</xliff:g> 个项目从回收站中移出吗?</item>
-      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>将这个项目从回收站中移出吗?</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>将这 <xliff:g id="COUNT">^2</xliff:g> 项内容从回收站中移出吗?</item>
+      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>将这项内容从回收站中移出吗?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"从回收站中移出"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"取消"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
       <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>删除这 <xliff:g id="COUNT">^2</xliff:g> 个音频文件吗?</item>
       <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>删除这个音频文件吗?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
       <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>删除这 <xliff:g id="COUNT">^2</xliff:g> 个视频吗?</item>
       <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>删除这个视频吗?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
       <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>删除这 <xliff:g id="COUNT">^2</xliff:g> 张照片吗?</item>
       <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>删除这张照片吗?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>删除这 <xliff:g id="COUNT">^2</xliff:g> 个项目吗?</item>
-      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>删除这个项目吗?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">要允许<xliff:g id="APP_NAME_1">^1</xliff:g>删除这 <xliff:g id="COUNT">^2</xliff:g> 项内容吗?</item>
+      <item quantity="one">要允许<xliff:g id="APP_NAME_0">^1</xliff:g>删除这项内容吗?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"删除"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"取消"</string>
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 4c89acd..3243f9b 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"繼續"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"允許"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"拒絕"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">還有 <xliff:g id="COUNT_1">^1</xliff:g> 個項目</item>
+      <item quantity="one">還有 <xliff:g id="COUNT_0">^1</xliff:g> 個項目</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">以及另外 <xliff:g id="COUNT_1">^1</xliff:g> 個項目</item>
       <item quantity="one">以及另外 <xliff:g id="COUNT_0">^1</xliff:g> 個項目</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"是否要清除「<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>」的應用程式快取?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"「<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>」要求清除部分臨時檔案。如接受要求,電池或數據用量可能會增加。"</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"清除應用程式暫存檔案"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"「<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>」要求清除部分臨時檔案。這可能會導致耗電量或流動數據用量增加。"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"正在清除應用程式暫存檔案…"</string>
+    <string name="clear" msgid="5524638938415865915">"清除"</string>
     <string name="allow" msgid="8885707816848569619">"允許"</string>
     <string name="deny" msgid="6040983710442068936">"拒絕"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」變更 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」變更此音訊檔案嗎?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 修改 <xliff:g id="COUNT">^2</xliff:g> 部影片嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 修改此影片嗎?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」變更 <xliff:g id="COUNT">^2</xliff:g> 條影片嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」變更此影片嗎?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 修改 <xliff:g id="COUNT">^2</xliff:g> 部影片嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 修改此影片嗎?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」變更 <xliff:g id="COUNT">^2</xliff:g> 張相片嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」變更此相片嗎?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 修改 <xliff:g id="COUNT">^2</xliff:g> 張相片嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 修改此相片嗎?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」變更 <xliff:g id="COUNT">^2</xliff:g> 個項目嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」變更此項目嗎?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 修改 <xliff:g id="COUNT">^2</xliff:g> 個項目嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 修改此項目嗎?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"變更"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"取消"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案移至垃圾桶嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將此音訊檔案移至垃圾桶嗎?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 將 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案移至垃圾桶嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 將此音訊檔案移至垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">這些音訊檔案會在 <xliff:g id="DURATION_1">^3</xliff:g> 天後永久刪除</item>
-      <item quantity="one">此音訊檔案會在 <xliff:g id="DURATION_0">^3</xliff:g> 天後永久刪除</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 將 <xliff:g id="COUNT">^2</xliff:g> 部影片移至垃圾桶嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 將此影片移至垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 條影片移至垃圾桶嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將此影片移至垃圾桶嗎?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 將 <xliff:g id="COUNT">^2</xliff:g> 張相片移至垃圾桶嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 將此相片移至垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">這些影片會在 <xliff:g id="DURATION_1">^3</xliff:g> 天後永久刪除</item>
-      <item quantity="one">此影片會在 <xliff:g id="DURATION_0">^3</xliff:g> 天後永久刪除</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 將 <xliff:g id="COUNT">^2</xliff:g> 個項目移至垃圾桶嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 將此項目移至垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 張相片移至垃圾桶嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將此相片移至垃圾桶嗎?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 將 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案移出垃圾桶嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 將此音訊檔案移出垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">這些相片會在 <xliff:g id="DURATION_1">^3</xliff:g> 天後永久刪除</item>
-      <item quantity="one">此相片會在 <xliff:g id="DURATION_0">^3</xliff:g> 天後永久刪除</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 將 <xliff:g id="COUNT">^2</xliff:g> 部影片移出垃圾桶嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 將此影片移出垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 個項目移至垃圾桶嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將此項目移至垃圾桶嗎?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 將 <xliff:g id="COUNT">^2</xliff:g> 張相片移出垃圾桶嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 將此相片移出垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">這些項目會在 <xliff:g id="DURATION_1">^3</xliff:g> 天後永久刪除</item>
-      <item quantity="one">此項目會在 <xliff:g id="DURATION_0">^3</xliff:g> 天後永久刪除</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 將 <xliff:g id="COUNT">^2</xliff:g> 個項目移出垃圾桶嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 將此項目移出垃圾桶嗎?</item>
     </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"移至垃圾桶"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"取消"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案移出垃圾桶嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將此音訊檔案移出垃圾桶嗎?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 刪除 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 刪除此音訊檔案嗎?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 條影片移出垃圾桶嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將此影片移出垃圾桶嗎?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 刪除 <xliff:g id="COUNT">^2</xliff:g> 部影片嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 刪除此影片嗎?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 張相片移出垃圾桶嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將此相片移出垃圾桶嗎?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 刪除 <xliff:g id="COUNT">^2</xliff:g> 張相片嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 刪除此相片嗎?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 個項目移出垃圾桶嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將此項目移出垃圾桶嗎?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">允許 <xliff:g id="APP_NAME_1">^1</xliff:g> 刪除 <xliff:g id="COUNT">^2</xliff:g> 個項目嗎?</item>
+      <item quantity="one">允許 <xliff:g id="APP_NAME_0">^1</xliff:g> 刪除此項目嗎?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"移出垃圾桶"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"取消"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」刪除 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」刪除此音訊檔案嗎?</item>
-    </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」刪除 <xliff:g id="COUNT">^2</xliff:g> 條影片嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」刪除此影片嗎?</item>
-    </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」刪除 <xliff:g id="COUNT">^2</xliff:g> 張相片嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」刪除此相片嗎?</item>
-    </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」刪除 <xliff:g id="COUNT">^2</xliff:g> 個項目嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」刪除此項目嗎?</item>
-    </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"刪除"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"取消"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 945371c..1a37210 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -29,101 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"繼續"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"允許"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"拒絕"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="other">還有 <xliff:g id="COUNT_1">^1</xliff:g> 個項目</item>
+      <item quantity="one">還有 <xliff:g id="COUNT_0">^1</xliff:g> 個項目</item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="other">還有另外 <xliff:g id="COUNT_1">^1</xliff:g> 個項目</item>
       <item quantity="one">還有另外 <xliff:g id="COUNT_0">^1</xliff:g> 個項目</item>
     </plurals>
-    <string name="cache_clearing_dialog_title" msgid="543177167845854283">"要使用「<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>」清除應用程式快取嗎?"</string>
-    <string name="cache_clearing_dialog_text" msgid="425995541409682360">"「<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>」想要清除某些暫存檔案。如果你授予權限,可能會增加耗電量或數據用量。"</string>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"清除應用程式暫存檔案"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"「<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>」想要清除某些暫存檔案,這可能會導致耗電量或行動數據用量增加。"</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"正在清除應用程式暫存檔案…"</string>
+    <string name="clear" msgid="5524638938415865915">"清除"</string>
     <string name="allow" msgid="8885707816848569619">"允許"</string>
     <string name="deny" msgid="6040983710442068936">"拒絕"</string>
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」變更 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」變更這個音訊檔案嗎?</item>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」修改這 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案嗎?</item>
+      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」修改這個音訊檔案嗎?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」變更 <xliff:g id="COUNT">^2</xliff:g> 部影片嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」變更這部影片嗎?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」修改這 <xliff:g id="COUNT">^2</xliff:g> 部影片嗎?</item>
+      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」修改這部影片嗎?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」變更 <xliff:g id="COUNT">^2</xliff:g> 張相片嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」變更這張相片嗎?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」修改這 <xliff:g id="COUNT">^2</xliff:g> 張相片嗎?</item>
+      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」修改這張相片嗎?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」變更 <xliff:g id="COUNT">^2</xliff:g> 個項目嗎?</item>
-      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」變更這個項目嗎?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」修改這 <xliff:g id="COUNT">^2</xliff:g> 個項目嗎?</item>
+      <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」修改這個項目嗎?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"變更"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"取消"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案移至垃圾桶嗎?</item>
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將這 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案移至垃圾桶嗎?</item>
       <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將這個音訊檔案移至垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="other">系統將在 <xliff:g id="DURATION_1">^3</xliff:g> 天之後永久刪除這個音訊檔案</item>
-      <item quantity="one">系統將在 <xliff:g id="DURATION_0">^3</xliff:g> 天之後永久刪除這個音訊檔案</item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 部影片移至垃圾桶嗎?</item>
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將這 <xliff:g id="COUNT">^2</xliff:g> 部影片移至垃圾桶嗎?</item>
       <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將這部影片移至垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="other">系統將在 <xliff:g id="DURATION_1">^3</xliff:g> 天之後永久刪除這些影片</item>
-      <item quantity="one">系統將在 <xliff:g id="DURATION_0">^3</xliff:g> 天之後永久刪除這部影片</item>
-    </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 張相片移至垃圾桶嗎?</item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將這 <xliff:g id="COUNT">^2</xliff:g> 張相片移至垃圾桶嗎?</item>
       <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將這張相片移至垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="other">系統將在 <xliff:g id="DURATION_1">^3</xliff:g> 天之後永久刪除這些相片</item>
-      <item quantity="one">系統將在 <xliff:g id="DURATION_0">^3</xliff:g> 天之後永久刪除這張相片</item>
-    </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 個項目移至垃圾桶嗎?</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將這 <xliff:g id="COUNT">^2</xliff:g> 個項目移至垃圾桶嗎?</item>
       <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將這個項目移至垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="other">系統將在 <xliff:g id="DURATION_1">^3</xliff:g> 天之後永久刪除這些項目</item>
-      <item quantity="one">系統將在 <xliff:g id="DURATION_0">^3</xliff:g> 天之後永久刪除這個項目</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"移至垃圾桶"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"取消"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案移出垃圾桶嗎?</item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將這 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案移出垃圾桶嗎?</item>
       <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將這個音訊檔案移出垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 部影片移出垃圾桶嗎?</item>
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將這 <xliff:g id="COUNT">^2</xliff:g> 部影片移出垃圾桶嗎?</item>
       <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將這部影片移出垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 張相片移出垃圾桶嗎?</item>
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將這 <xliff:g id="COUNT">^2</xliff:g> 張相片移出垃圾桶嗎?</item>
       <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將這張相片移出垃圾桶嗎?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將 <xliff:g id="COUNT">^2</xliff:g> 個項目移出垃圾桶嗎?</item>
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」將這 <xliff:g id="COUNT">^2</xliff:g> 個項目移出垃圾桶嗎?</item>
       <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」將這個項目移出垃圾桶嗎?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"移出垃圾桶"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"取消"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」刪除 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案嗎?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」刪除這 <xliff:g id="COUNT">^2</xliff:g> 個音訊檔案嗎?</item>
       <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」刪除這個音訊檔案嗎?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」刪除 <xliff:g id="COUNT">^2</xliff:g> 部影片嗎?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」刪除這 <xliff:g id="COUNT">^2</xliff:g> 部影片嗎?</item>
       <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」刪除這部影片嗎?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」刪除 <xliff:g id="COUNT">^2</xliff:g> 張相片嗎?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」刪除這 <xliff:g id="COUNT">^2</xliff:g> 張相片嗎?</item>
       <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」刪除這張相片嗎?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
-      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」刪除 <xliff:g id="COUNT">^2</xliff:g> 個項目嗎?</item>
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
+      <item quantity="other">要允許「<xliff:g id="APP_NAME_1">^1</xliff:g>」刪除這 <xliff:g id="COUNT">^2</xliff:g> 個項目嗎?</item>
       <item quantity="one">要允許「<xliff:g id="APP_NAME_0">^1</xliff:g>」刪除這個項目嗎?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"刪除"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"取消"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index e7ebb87..e2f528d 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -29,105 +29,82 @@
     <string name="permission_required_action" msgid="706370952366113539">"Qhubeka"</string>
     <string name="grant_dialog_button_allow" msgid="1644287024501033471">"Vumela"</string>
     <string name="grant_dialog_button_deny" msgid="6190589471415815741">"Phika"</string>
-    <!-- no translation found for permission_more_thumb (3530243737498196228) -->
+    <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923">
+      <item quantity="one">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+      <item quantity="other">+<xliff:g id="COUNT_1">^1</xliff:g></item>
+    </plurals>
     <plurals name="permission_more_text" formatted="false" msgid="7291997297174507324">
       <item quantity="one">Kanye no-<xliff:g id="COUNT_1">^1</xliff:g> izinto ezingeziwe</item>
       <item quantity="other">Kanye no-<xliff:g id="COUNT_1">^1</xliff:g> izinto ezingeziwe</item>
     </plurals>
-    <!-- no translation found for cache_clearing_dialog_title (543177167845854283) -->
-    <skip />
-    <!-- no translation found for cache_clearing_dialog_text (425995541409682360) -->
-    <skip />
-    <!-- no translation found for allow (8885707816848569619) -->
-    <skip />
-    <!-- no translation found for deny (6040983710442068936) -->
-    <skip />
-    <plurals name="permission_write_audio" formatted="false" msgid="3539998638571517689">
-      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukushintsha amafayela omsindo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukushintsha amafayela omsindo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+    <string name="cache_clearing_dialog_title" msgid="8907893815183913664">"Sula amafayela ohlelo lokusebenza wesikhashana"</string>
+    <string name="cache_clearing_dialog_text" msgid="7057784635111940957">"I-<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ingathanda ukusula amanye amafayela esikhashana. Lokhu kungaholela ekusetshenzisweni kwebhethri okuphezulu noma kwedatha yeselula."</string>
+    <string name="cache_clearing_in_progress_title" msgid="6902220064511664209">"Isula amafayela wohlelo lokusebenza wesikhashana…"</string>
+    <string name="clear" msgid="5524638938415865915">"Sula"</string>
+    <string name="allow" msgid="8885707816848569619">"Vumela"</string>
+    <string name="deny" msgid="6040983710442068936">"Nqaba"</string>
+    <plurals name="permission_write_audio" formatted="false" msgid="8914759422381305478">
+      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuguqula amafayela omsindo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuguqula amafayela omsindo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
     </plurals>
-    <plurals name="permission_write_video" formatted="false" msgid="8695335317588947410">
-      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukushintsha amavidiyo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukushintsha amavidiyo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084">
+      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuguqula amavidiyo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuguqula amavidiyo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
     </plurals>
-    <plurals name="permission_write_image" formatted="false" msgid="9032317900030650266">
-      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukushintsha izithombe ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukushintsha izithombe ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_write_image" formatted="false" msgid="748745548893845892">
+      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuguqula izithombe ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuguqula izithombe ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
     </plurals>
-    <plurals name="permission_write_generic" formatted="false" msgid="3099002288826692797">
-      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukushintsha izinto ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukushintsha izinto ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_write_generic" formatted="false" msgid="3270172714743671779">
+      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuguqula izinto ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuguqula izinto ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
     </plurals>
-    <string name="permission_write_grant" msgid="3160858917750790130">"Guqula"</string>
-    <string name="permission_write_deny" msgid="7090074081877311071">"Hoxa"</string>
-    <plurals name="permission_trash_audio" formatted="false" msgid="6116371056718108592">
+    <plurals name="permission_trash_audio" formatted="false" msgid="8907813869381755423">
       <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa amafayela omsindo angu-<xliff:g id="COUNT">^2</xliff:g> kudoti?</item>
       <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa amafayela omsindo angu-<xliff:g id="COUNT">^2</xliff:g> kudoti?</item>
     </plurals>
-    <plurals name="permission_trash_audio_info" formatted="false" msgid="5002847308948758655">
-      <item quantity="one">Lawa mafayela womsindo azosuswa unaphakade ngemuva kwezinsuku ezingu-<xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="other">Lawa mafayela womsindo azosuswa unaphakade ngemuva kwezinsuku ezingu-<xliff:g id="DURATION_1">^3</xliff:g></item>
-    </plurals>
-    <plurals name="permission_trash_video" formatted="false" msgid="7900111984425589714">
+    <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438">
       <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa amavidiyo angu-<xliff:g id="COUNT">^2</xliff:g> kudoti?</item>
       <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa amavidiyo angu-<xliff:g id="COUNT">^2</xliff:g> kudoti?</item>
     </plurals>
-    <plurals name="permission_trash_video_info" formatted="false" msgid="4604871492287117394">
-      <item quantity="one">Lawa mavidiyo azosuswa unaphakade ngemuva kwezinsuku ezingu-<xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="other">Lawa mavidiyo azosuswa unaphakade ngemuva kwezinsuku ezingu-<xliff:g id="DURATION_1">^3</xliff:g></item>
+    <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227">
+      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa izithombe ezingu ku-<xliff:g id="COUNT">^2</xliff:g>?</item>
+      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa izithombe ezingu ku-<xliff:g id="COUNT">^2</xliff:g>?</item>
     </plurals>
-    <plurals name="permission_trash_image" formatted="false" msgid="9204660448046457869">
-      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ihambise izithombe ezingu-<xliff:g id="COUNT">^2</xliff:g> kudoti?</item>
-      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ihambise izithombe ezingu-<xliff:g id="COUNT">^2</xliff:g> kudoti?</item>
+    <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711">
+      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa izinto ezingu-<xliff:g id="COUNT">^2</xliff:g> kudoti?</item>
+      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa izinto ezingu-<xliff:g id="COUNT">^2</xliff:g> kudoti?</item>
     </plurals>
-    <plurals name="permission_trash_image_info" formatted="false" msgid="4214797662365755925">
-      <item quantity="one">Lezi zithombe zizosuswa unaphakade ngemuva kwezinsuku ezingu-<xliff:g id="DURATION_1">^3</xliff:g></item>
-      <item quantity="other">Lezi zithombe zizosuswa unaphakade ngemuva kwezinsuku ezingu-<xliff:g id="DURATION_1">^3</xliff:g></item>
+    <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321">
+      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa amafayela omsindo angu-<xliff:g id="COUNT">^2</xliff:g> ngaphandle kwedoti?</item>
+      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa amafayela omsindo angu-<xliff:g id="COUNT">^2</xliff:g> ngaphandle kwedoti?</item>
     </plurals>
-    <plurals name="permission_trash_generic" formatted="false" msgid="427752775725644743">
-      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ihambise izinto ezingu-<xliff:g id="COUNT">^2</xliff:g> items kudoti?</item>
-      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ihambise izinto ezingu-<xliff:g id="COUNT">^2</xliff:g> items kudoti?</item>
-    </plurals>
-    <plurals name="permission_trash_generic_info" formatted="false" msgid="7932965324027540546">
-      <item quantity="one">Lezi zinto zizosuswa unaphakade emuva kwezinsuku ezingu-<xliff:g id="DURATION_1">^3</xliff:g>.</item>
-      <item quantity="other">Lezi zinto zizosuswa unaphakade emuva kwezinsuku ezingu-<xliff:g id="DURATION_1">^3</xliff:g>.</item>
-    </plurals>
-    <string name="permission_trash_grant" msgid="2279489962040272178">"Hambisa kudoti"</string>
-    <string name="permission_trash_deny" msgid="2447949475239137483">"Hoxa"</string>
-    <plurals name="permission_untrash_audio" formatted="false" msgid="5716379492864435914">
-      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa amafayela womsindo angu-<xliff:g id="COUNT">^2</xliff:g> ngaphandle kwedoti?</item>
-      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa amafayela womsindo angu-<xliff:g id="COUNT">^2</xliff:g> ngaphandle kwedoti?</item>
-    </plurals>
-    <plurals name="permission_untrash_video" formatted="false" msgid="4554487646802678525">
+    <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879">
       <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa amavidiyo angu-<xliff:g id="COUNT">^2</xliff:g> ngaphandle kwedoti?</item>
       <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa amavidiyo angu-<xliff:g id="COUNT">^2</xliff:g> ngaphandle kwedoti?</item>
     </plurals>
-    <plurals name="permission_untrash_image" formatted="false" msgid="3209306923499767662">
+    <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056">
       <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa izithombe ezingu-<xliff:g id="COUNT">^2</xliff:g> ngaphandle kwedoti?</item>
       <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa izithombe ezingu-<xliff:g id="COUNT">^2</xliff:g> ngaphandle kwedoti?</item>
     </plurals>
-    <plurals name="permission_untrash_generic" formatted="false" msgid="4607666277638602132">
+    <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374">
       <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa izinto ezingu-<xliff:g id="COUNT">^2</xliff:g> ngaphandle kwedoti?</item>
       <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukuhambisa izinto ezingu-<xliff:g id="COUNT">^2</xliff:g> ngaphandle kwedoti?</item>
     </plurals>
-    <string name="permission_untrash_grant" msgid="8438940480373451790">"Khipha kudoti"</string>
-    <string name="permission_untrash_deny" msgid="8008055757469903604">"Hoxa"</string>
-    <plurals name="permission_delete_audio" formatted="false" msgid="6390202287788379608">
-      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukususa amafayela womsindo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukususa amafayela womsindo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719">
+      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukususa amafayela omsindo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukususa amafayela omsindo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
     </plurals>
-    <plurals name="permission_delete_video" formatted="false" msgid="1577978206881284398">
-      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> isuse amavidiyo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> isuse amavidiyo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563">
+      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukususa amavidiyo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukususa amavidiyo angu-<xliff:g id="COUNT">^2</xliff:g>?</item>
     </plurals>
-    <plurals name="permission_delete_image" formatted="false" msgid="8435429587272893063">
-      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> isuse izithombe ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
-      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> isuse izithombe ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+    <plurals name="permission_delete_image" formatted="false" msgid="2303409455224710111">
+      <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukususa izithombe ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
+      <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukususa izithombe ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
     </plurals>
-    <plurals name="permission_delete_generic" formatted="false" msgid="5949614272661654178">
+    <plurals name="permission_delete_generic" formatted="false" msgid="1412218850351841181">
       <item quantity="one">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukususa izinto ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
       <item quantity="other">Vumela i-<xliff:g id="APP_NAME_1">^1</xliff:g> ukususa izinto ezingu-<xliff:g id="COUNT">^2</xliff:g>?</item>
     </plurals>
-    <string name="permission_delete_grant" msgid="8682518049167813926">"Susa"</string>
-    <string name="permission_delete_deny" msgid="3742780367403897552">"Hoxa"</string>
 </resources>
diff --git a/sqlite3.sh b/sqlite3.sh
index 7f7780b..cf9b4a5 100644
--- a/sqlite3.sh
+++ b/sqlite3.sh
@@ -59,6 +59,26 @@
     adb shell am force-stop $package
 }
 
+function get-id-from-data () {
+    adb root
+    path="$1"
+    package=$(get-package)
+    dir="/data/user/0/$package/databases/external.db"
+    clause="\"select _id from files where _data='$path';\""
+    echo $clause
+    adb shell sqlite3 $dir $clause
+}
+
+function get-data-from-id () {
+    adb root
+    _id="$1"
+    package=$(get-package)
+    dir="/data/user/0/$package/databases/external.db"
+    clause="\"select _data from files where _id='$_id';\""
+    echo $clause
+    adb shell sqlite3 $dir $clause
+}
+
 function get-package() {
     if [ -z "$(adb shell pm list package com.android.providers.media.module)" ]
     then
diff --git a/src/com/android/providers/media/DatabaseHelper.java b/src/com/android/providers/media/DatabaseHelper.java
index d48726b..c48f2f5 100644
--- a/src/com/android/providers/media/DatabaseHelper.java
+++ b/src/com/android/providers/media/DatabaseHelper.java
@@ -22,6 +22,7 @@
 
 import android.content.ContentProviderClient;
 import android.content.ContentResolver;
+import android.content.ContentUris;
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
@@ -35,6 +36,7 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Environment;
+import android.os.RemoteException;
 import android.os.SystemClock;
 import android.os.Trace;
 import android.provider.MediaStore;
@@ -58,6 +60,7 @@
 import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 
+import com.android.providers.media.playlist.Playlist;
 import com.android.providers.media.util.BackgroundThread;
 import com.android.providers.media.util.DatabaseUtils;
 import com.android.providers.media.util.FileUtils;
@@ -65,13 +68,17 @@
 import com.android.providers.media.util.Logging;
 import com.android.providers.media.util.MimeUtils;
 
+import com.google.common.collect.Iterables;
+
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.FilenameFilter;
 import java.io.IOException;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 import java.util.Objects;
 import java.util.Set;
 import java.util.UUID;
@@ -96,6 +103,8 @@
      */
     public static final String CURRENT_GENERATION_CLAUSE = "SELECT generation FROM local_metadata";
 
+    private static final int NOTIFY_BATCH_SIZE = 256;
+
     final Context mContext;
     final String mName;
     final int mVersion;
@@ -109,17 +118,11 @@
     final @Nullable OnLegacyMigrationListener mMigrationListener;
     final @Nullable UnaryOperator<String> mIdGenerator;
     final Set<String> mFilterVolumeNames = new ArraySet<>();
+    private final String mMigrationFileName;
     long mScanStartTime;
     long mScanStopTime;
 
     /**
-     * Flag indicating that this database should invoke
-     * {@link #migrateFromLegacy} to migrate from a legacy database, typically
-     * only set when this database is starting from scratch.
-     */
-    boolean mMigrateFromLegacy;
-
-    /**
      * Lock used to guard against deadlocks in SQLite; the write lock is used to
      * guard any schema changes, and the read lock is used for all other
      * database operations.
@@ -132,6 +135,8 @@
      */
     private final ReentrantReadWriteLock mSchemaLock = new ReentrantReadWriteLock();
 
+    private static Object sMigrationLock = new Object();
+
     public interface OnSchemaChangeListener {
         public void onSchemaChange(@NonNull String volumeName, int versionFrom, int versionTo,
                 long itemCount, long durationMillis);
@@ -186,6 +191,7 @@
         mFilesListener = filesListener;
         mMigrationListener = migrationListener;
         mIdGenerator = idGenerator;
+        mMigrationFileName = "." + mVolumeName;
 
         // Configure default filters until we hear differently
         if (mInternal) {
@@ -364,9 +370,14 @@
     @Override
     public void onOpen(final SQLiteDatabase db) {
         Log.v(TAG, "onOpen() for " + mName);
-        if (mMigrateFromLegacy) {
-            // Clear flag, since we should only attempt once
-            mMigrateFromLegacy = false;
+        final File migration = new File(mContext.getFilesDir(), mMigrationFileName);
+        // Another thread entering migration block will be blocked until the
+        // migration is complete from current thread.
+        synchronized (sMigrationLock) {
+            if (!migration.exists()) {
+                Log.v(TAG, "onOpen() finished for " + mName);
+                return;
+            }
 
             mSchemaLock.writeLock().lock();
             try {
@@ -376,9 +387,11 @@
                 createLatestIndexes(db, mInternal);
             } finally {
                 mSchemaLock.writeLock().unlock();
+                // Clear flag, since we should only attempt once
+                migration.delete();
+                Log.v(TAG, "onOpen() finished for " + mName);
             }
         }
-        Log.v(TAG, "onOpen() finished for " + mName);
     }
 
     @GuardedBy("mProjectionMapCache")
@@ -520,7 +533,6 @@
             for (int i = 0; i < state.blockingTasks.size(); i++) {
                 state.blockingTasks.get(i).run();
             }
-
             // We carefully "phase" our two sets of work here to ensure that we
             // completely finish dispatching all change notifications before we
             // process background tasks, to ensure that the background work
@@ -635,7 +647,9 @@
     private void notifyChangeInternal(@NonNull Collection<Uri> uris, int flags) {
         Trace.beginSection("notifyChange");
         try {
-            mContext.getContentResolver().notifyChange(uris, null, flags);
+            for (List<Uri> partition : Iterables.partition(uris, NOTIFY_BATCH_SIZE)) {
+                mContext.getContentResolver().notifyChange(partition, null, flags);
+            }
         } finally {
             Trace.endSection();
         }
@@ -791,7 +805,9 @@
                 + "writer TEXT DEFAULT NULL, exposure_time TEXT DEFAULT NULL,"
                 + "f_number TEXT DEFAULT NULL, iso INTEGER DEFAULT NULL,"
                 + "scene_capture_type INTEGER DEFAULT NULL, generation_added INTEGER DEFAULT 0,"
-                + "generation_modified INTEGER DEFAULT 0, xmp BLOB DEFAULT NULL)");
+                + "generation_modified INTEGER DEFAULT 0, xmp BLOB DEFAULT NULL,"
+                + "_transcode_status INTEGER DEFAULT 0, _video_codec_type TEXT DEFAULT NULL,"
+                + "_modifier INTEGER DEFAULT 0)");
 
         db.execSQL("CREATE TABLE log (time DATETIME, message TEXT)");
         if (!mInternal) {
@@ -807,7 +823,11 @@
         // Since this code is used by both the legacy and modern providers, we
         // only want to migrate when we're running as the modern provider
         if (!mLegacyProvider) {
-            mMigrateFromLegacy = true;
+            try {
+                new File(mContext.getFilesDir(), mMigrationFileName).createNewFile();
+            } catch (IOException e) {
+                Log.e(TAG, "Failed to create a migration file: ." + mVolumeName, e);
+            }
         }
     }
 
@@ -838,7 +858,9 @@
 
             db.beginTransaction();
             Log.d(TAG, "Starting migration from legacy provider");
-            mMigrationListener.onStarted(client, mVolumeName);
+            if (mMigrationListener != null) {
+                mMigrationListener.onStarted(client, mVolumeName);
+            }
             try (Cursor c = client.query(queryUri, sMigrateColumns.toArray(new String[0]),
                     extras, null)) {
                 final ContentValues values = new ContentValues();
@@ -854,16 +876,49 @@
                         DatabaseUtils.copyFromCursorToContentValues(column, c, values);
                     }
 
+                    final String volumePath = FileUtils.extractVolumePath(data);
+
+                    // Handle playlist files which may need special handling if
+                    // there are no "real" playlist files.
+                    final int mediaType = c.getInt(c.getColumnIndex(FileColumns.MEDIA_TYPE));
+                    if (!mInternal && volumePath != null &&
+                            mediaType == FileColumns.MEDIA_TYPE_PLAYLIST) {
+                        File playlistFile = new File(data);
+
+                        if (!playlistFile.exists()) {
+                            if (LOGV) Log.v(TAG, "Migrating playlist file " + playlistFile);
+
+                            // Migrate virtual playlists to a "real" playlist file.
+                            // Also change playlist file name and path to adapt to new
+                            // default primary directory.
+                            String playlistFilePath = data;
+                            try {
+                                playlistFilePath = migratePlaylistFiles(client,
+                                        c.getLong(c.getColumnIndex(FileColumns._ID)));
+                                // Either migration didn't happen or is not necessary because
+                                // playlist file already exists
+                                if (playlistFilePath == null) playlistFilePath = data;
+                            } catch (Exception e) {
+                                // We only have one shot to migrate data, so log and
+                                // keep marching forward.
+                                Log.wtf(TAG, "Couldn't migrate playlist file " + data);
+                            }
+
+                            values.put(FileColumns.DATA, playlistFilePath);
+                            FileUtils.computeValuesFromData(values, /*isForFuse*/ false);
+                        }
+                    }
+
                     // When migrating pending or trashed files, we might need to
                     // rename them on disk to match new schema
-                    final String volumePath = FileUtils.extractVolumePath(data);
                     if (volumePath != null) {
+                        final String oldData = values.getAsString(MediaColumns.DATA);
                         FileUtils.computeDataFromValues(values, new File(volumePath),
                                 /*isForFuse*/ false);
                         final String recomputedData = values.getAsString(MediaColumns.DATA);
-                        if (!Objects.equals(data, recomputedData)) {
+                        if (!Objects.equals(oldData, recomputedData)) {
                             try {
-                                renameWithRetry(data, recomputedData);
+                                renameWithRetry(oldData, recomputedData);
                             } catch (IOException e) {
                                 // We only have one shot to migrate data, so log and
                                 // keep marching forward
@@ -890,7 +945,9 @@
                         final int progress = c.getPosition();
                         final int total = c.getCount();
                         Log.v(TAG, "Migrated " + progress + " of " + total + "...");
-                        mMigrationListener.onProgress(client, mVolumeName, progress, total);
+                        if (mMigrationListener != null) {
+                            mMigrationListener.onProgress(client, mVolumeName, progress, total);
+                        }
                     }
                 }
 
@@ -905,8 +962,139 @@
             // only have one possible shot, so mark everything successful
             db.setTransactionSuccessful();
             db.endTransaction();
-            mMigrationListener.onFinished(client, mVolumeName);
+            if (mMigrationListener != null) {
+                mMigrationListener.onFinished(client, mVolumeName);
+            }
         }
+
+    }
+
+    @Nullable
+    private String migratePlaylistFiles(ContentProviderClient client, long playlistId)
+            throws IllegalStateException {
+        final String selection = FileColumns.MEDIA_TYPE + "=" + FileColumns.MEDIA_TYPE_PLAYLIST
+                + " AND " + FileColumns._ID + "=" + playlistId;
+        final String[] projection = new String[]{
+                FileColumns._ID,
+                FileColumns.DATA,
+                MediaColumns.MIME_TYPE,
+                MediaStore.Audio.PlaylistsColumns.NAME,
+        };
+        final Uri queryUri = MediaStore
+                .rewriteToLegacy(MediaStore.Files.getContentUri(mVolumeName));
+
+        try (Cursor cursor = client.query(queryUri, projection, selection, null, null)) {
+            if (!cursor.moveToFirst()) {
+                throw new IllegalStateException("Couldn't find database row for playlist file"
+                        + playlistId);
+            }
+
+            final String data = cursor.getString(cursor.getColumnIndex(MediaColumns.DATA));
+            File playlistFile = new File(data);
+            if (playlistFile.exists()) {
+                throw new IllegalStateException("Playlist file exists " + data);
+            }
+
+            String mimeType = cursor.getString(cursor.getColumnIndex(MediaColumns.MIME_TYPE));
+            // Sometimes, playlists in Q may have mimeType as
+            // "application/octet-stream". Ensure that playlist rows have the
+            // right playlist mimeType. These rows will be committed to a file
+            // and hence they should have correct playlist mimeType for
+            // Playlist#write to identify the right child playlist class.
+            if (!MimeUtils.isPlaylistMimeType(mimeType)) {
+                // Playlist files should always have right mimeType, default to
+                // audio/mpegurl when mimeType doesn't match playlist media_type.
+                mimeType = "audio/mpegurl";
+            }
+
+            // If the directory is Playlists/ change the directory to Music/
+            // since defaultPrimary for playlists is Music/. This helps
+            // resolve any future app-compat issues around renaming playlist
+            // files.
+            File parentFile = playlistFile.getParentFile();
+            if (parentFile.getName().equalsIgnoreCase("Playlists")) {
+                parentFile = new File(parentFile.getParentFile(), Environment.DIRECTORY_MUSIC);
+            }
+            final String playlistName = cursor.getString(
+                    cursor.getColumnIndex(MediaStore.Audio.PlaylistsColumns.NAME));
+
+            try {
+                // Build playlist file path with a file extension that matches
+                // playlist mimeType.
+                playlistFile = FileUtils.buildUniqueFile(parentFile, mimeType, playlistName);
+            } catch(FileNotFoundException e) {
+                Log.e(TAG, "Couldn't create unique file for " + playlistFile +
+                        ", using actual playlist file name", e);
+            }
+
+            final long rowId = cursor.getLong(cursor.getColumnIndex(FileColumns._ID));
+            final Uri playlistMemberUri = MediaStore.rewriteToLegacy(
+                    MediaStore.Audio.Playlists.Members.getContentUri(mVolumeName, rowId));
+            createPlaylistFile(client, playlistMemberUri, playlistFile);
+            return playlistFile.getAbsolutePath();
+        } catch (RemoteException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    /**
+     * Creates "real" playlist files on disk from the playlist data from the database.
+     */
+    private void createPlaylistFile(ContentProviderClient client, @NonNull Uri playlistMemberUri,
+            @NonNull File playlistFile) throws IllegalStateException {
+        final String[] projection = new String[] {
+                MediaStore.Audio.Playlists.Members.AUDIO_ID,
+                MediaStore.Audio.Playlists.Members.PLAY_ORDER,
+        };
+
+        final Playlist playlist = new Playlist();
+        // Migrating music->playlist association.
+        try (Cursor c = client.query(playlistMemberUri, projection, null, null,
+                Audio.Playlists.Members.DEFAULT_SORT_ORDER)) {
+            while (c.moveToNext()) {
+                // Write these values to the playlist file
+                final long audioId = c.getLong(0);
+                final int playOrder = c.getInt(1);
+
+                final Uri audioFileUri = MediaStore.rewriteToLegacy(ContentUris.withAppendedId(
+                        MediaStore.Files.getContentUri(mVolumeName), audioId));
+                final String audioFilePath = queryForData(client, audioFileUri);
+                if (audioFilePath == null)  {
+                    // This shouldn't happen, we should always find audio file
+                    // unless audio file is removed, and database has stale db
+                    // row. However this shouldn't block creating playlist
+                    // files;
+                    Log.e(TAG, "Couldn't find audio file for " + audioId + ", continuing..");
+                    continue;
+                }
+                playlist.add(playOrder, playlistFile.toPath().getParent().
+                        relativize(new File(audioFilePath).toPath()));
+            }
+
+            try {
+                writeToPlaylistFileWithRetry(playlistFile, playlist);
+            } catch (IOException e) {
+                // We only have one shot to migrate data, so log and
+                // keep marching forward.
+                Log.wtf(TAG, "Couldn't migrate playlist file " + playlistFile);
+            }
+        } catch (RemoteException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    /**
+     * Return the {@link MediaColumns#DATA} field for the given {@code uri}.
+     */
+    private String queryForData(ContentProviderClient client, @NonNull Uri uri) {
+        try (Cursor c = client.query(uri, new String[] {FileColumns.DATA}, Bundle.EMPTY, null)) {
+            if (c.moveToFirst()) {
+                return c.getString(0);
+            }
+        } catch (Exception e) {
+            Log.wtf(TAG, "Exception occurred while querying for data file for " + uri, e);
+        }
+        return null;
     }
 
     /**
@@ -931,12 +1119,17 @@
         sMigrateColumns.add(MediaStore.MediaColumns.IS_FAVORITE);
         sMigrateColumns.add(MediaStore.MediaColumns.OWNER_PACKAGE_NAME);
 
+        sMigrateColumns.add(MediaStore.MediaColumns.ORIENTATION);
+        sMigrateColumns.add(MediaStore.Files.FileColumns.PARENT);
+
         sMigrateColumns.add(MediaStore.Audio.AudioColumns.BOOKMARK);
 
         sMigrateColumns.add(MediaStore.Video.VideoColumns.TAGS);
         sMigrateColumns.add(MediaStore.Video.VideoColumns.CATEGORY);
         sMigrateColumns.add(MediaStore.Video.VideoColumns.BOOKMARK);
 
+        sMigrateColumns.add(MediaStore.Video.VideoColumns.IS_PRIVATE);
+
         sMigrateColumns.add(MediaStore.DownloadColumns.DOWNLOAD_URI);
         sMigrateColumns.add(MediaStore.DownloadColumns.REFERER_URI);
     }
@@ -1009,7 +1202,7 @@
                 + ", COUNT(DISTINCT album_id) AS " + Audio.Artists.NUMBER_OF_ALBUMS
                 + ", COUNT(DISTINCT _id) AS " + Audio.Artists.NUMBER_OF_TRACKS
                 + " FROM audio"
-                + " WHERE is_music=1 AND volume_name IN " + filterVolumeNames
+                + " WHERE is_music=1 AND is_pending=0 AND volume_name IN " + filterVolumeNames
                 + " GROUP BY artist_id");
 
         db.execSQL("CREATE VIEW audio_albums AS SELECT "
@@ -1026,14 +1219,14 @@
                 + ", MAX(year) AS " + Audio.Albums.LAST_YEAR
                 + ", NULL AS " + Audio.Albums.ALBUM_ART
                 + " FROM audio"
-                + " WHERE is_music=1 AND volume_name IN " + filterVolumeNames
+                + " WHERE is_music=1 AND is_pending=0 AND volume_name IN " + filterVolumeNames
                 + " GROUP BY album_id");
 
         db.execSQL("CREATE VIEW audio_genres AS SELECT "
                 + "  genre_id AS " + Audio.Genres._ID
                 + ", MIN(genre) AS " + Audio.Genres.NAME
                 + " FROM audio"
-                + " WHERE volume_name IN " + filterVolumeNames
+                + " WHERE is_pending=0 AND volume_name IN " + filterVolumeNames
                 + " GROUP BY genre_id");
     }
 
@@ -1216,6 +1409,15 @@
                 + " AND " + MediaColumns.RELATIVE_PATH + " NOT LIKE '%/';");
     }
 
+    private static void updateAddTranscodeSatus(SQLiteDatabase db, boolean internal) {
+        db.execSQL("ALTER TABLE files ADD COLUMN _transcode_status INTEGER DEFAULT 0;");
+    }
+
+
+    private static void updateAddVideoCodecType(SQLiteDatabase db, boolean internal) {
+        db.execSQL("ALTER TABLE files ADD COLUMN _video_codec_type TEXT DEFAULT NULL;");
+    }
+
     private static void updateClearDirectories(SQLiteDatabase db, boolean internal) {
         db.execSQL("UPDATE files SET primary_directory=NULL, secondary_directory=NULL;");
     }
@@ -1295,6 +1497,10 @@
         db.execSQL("UPDATE files SET date_modified=0 WHERE media_type=2;");
     }
 
+    private static void updateAddModifier(SQLiteDatabase db, boolean internal) {
+        db.execSQL("ALTER TABLE files ADD COLUMN _modifier INTEGER DEFAULT 0;");
+    }
+
     private static void recomputeDataValues(SQLiteDatabase db, boolean internal) {
         try (Cursor c = db.query("files", new String[] { FileColumns._ID, FileColumns.DATA },
                 null, null, null, null, null, null)) {
@@ -1320,26 +1526,30 @@
         final String selection = FileColumns.MEDIA_TYPE + "=?";
         final String[] selectionArgs = new String[]{String.valueOf(FileColumns.MEDIA_TYPE_NONE)};
 
+        ArrayMap<Long, Integer> newMediaTypes = new ArrayMap<>();
         try (Cursor c = db.query("files", new String[] { FileColumns._ID, FileColumns.MIME_TYPE },
                 selection, selectionArgs, null, null, null, null)) {
             Log.d(TAG, "Recomputing " + c.getCount() + " MediaType values");
 
-            final ContentValues values = new ContentValues();
+            // Accumulate all the new MEDIA_TYPE updates.
             while (c.moveToNext()) {
-                values.clear();
                 final long id = c.getLong(0);
                 final String mimeType = c.getString(1);
                 // Only update Document and Subtitle media type
-                if (MimeUtils.isDocumentMimeType(mimeType)) {
-                    values.put(FileColumns.MEDIA_TYPE, FileColumns.MEDIA_TYPE_DOCUMENT);
-                } else if (MimeUtils.isSubtitleMimeType(mimeType)) {
-                    values.put(FileColumns.MEDIA_TYPE, FileColumns.MEDIA_TYPE_SUBTITLE);
-                }
-                if (!values.isEmpty()) {
-                    db.update("files", values, "_id=" + id, null);
+                if (MimeUtils.isSubtitleMimeType(mimeType)) {
+                    newMediaTypes.put(id, FileColumns.MEDIA_TYPE_SUBTITLE);
+                } else if (MimeUtils.isDocumentMimeType(mimeType)) {
+                    newMediaTypes.put(id, FileColumns.MEDIA_TYPE_DOCUMENT);
                 }
             }
         }
+        // Now, update all the new MEDIA_TYPE values.
+        final ContentValues values = new ContentValues();
+        for (long id: newMediaTypes.keySet()) {
+            values.clear();
+            values.put(FileColumns.MEDIA_TYPE, newMediaTypes.get(id));
+            db.update("files", values, "_id=" + id, null);
+        }
     }
 
     static final int VERSION_J = 509;
@@ -1351,7 +1561,10 @@
     static final int VERSION_P = 900;
     static final int VERSION_Q = 1023;
     static final int VERSION_R = 1115;
-    static final int VERSION_LATEST = VERSION_R;
+    // Leave some gaps in database version tagging to allow R schema changes
+    // to go independent of S schema changes.
+    static final int VERSION_S = 1203;
+    static final int VERSION_LATEST = VERSION_S;
 
     /**
      * This method takes care of updating all the tables in the database to the
@@ -1496,6 +1709,18 @@
             if (fromVersion < 1115) {
                 updateAudioAlbumId(db, internal);
             }
+            if (fromVersion < 1200) {
+                updateAddTranscodeSatus(db, internal);
+            }
+            if (fromVersion < 1201) {
+                updateAddVideoCodecType(db, internal);
+            }
+            if (fromVersion < 1202) {
+                updateAddModifier(db, internal);
+            }
+            if (fromVersion < 1203) {
+                // Empty version bump to ensure views are recreated
+            }
 
             // If this is the legacy database, it's not worth recomputing data
             // values locally, since they'll be recomputed after the migration
@@ -1560,7 +1785,34 @@
         }
     }
 
-    private static final long RENAME_TIMEOUT = 10 * DateUtils.SECOND_IN_MILLIS;
+    private static final long PASSTHROUGH_WAIT_TIMEOUT = 10 * DateUtils.SECOND_IN_MILLIS;
+
+    /**
+     * When writing to playlist files during migration, the underlying
+     * pass-through view of storage may not be mounted yet, so we're willing
+     * to retry several times before giving up.
+     * The retry logic is mainly added to avoid test flakiness.
+     */
+    private static void writeToPlaylistFileWithRetry(@NonNull File playlistFile,
+            @NonNull Playlist playlist) throws IOException {
+        final long start = SystemClock.elapsedRealtime();
+        while (true) {
+            if (SystemClock.elapsedRealtime() - start > PASSTHROUGH_WAIT_TIMEOUT) {
+                throw new IOException("Passthrough failed to mount");
+            }
+
+            try {
+                playlistFile.getParentFile().mkdirs();
+                playlistFile.createNewFile();
+                playlist.write(playlistFile);
+                return;
+            } catch (IOException e) {
+                Log.i(TAG, "Failed to migrate playlist file, retrying " + e);
+            }
+            Log.i(TAG, "Waiting for passthrough to be mounted...");
+            SystemClock.sleep(100);
+        }
+    }
 
     /**
      * When renaming files during migration, the underlying pass-through view of
@@ -1571,7 +1823,7 @@
             throws IOException {
         final long start = SystemClock.elapsedRealtime();
         while (true) {
-            if (SystemClock.elapsedRealtime() - start > RENAME_TIMEOUT) {
+            if (SystemClock.elapsedRealtime() - start > PASSTHROUGH_WAIT_TIMEOUT) {
                 throw new IOException("Passthrough failed to mount");
             }
 
diff --git a/src/com/android/providers/media/IdleService.java b/src/com/android/providers/media/IdleService.java
index 11fe7a0..213d2c1 100644
--- a/src/com/android/providers/media/IdleService.java
+++ b/src/com/android/providers/media/IdleService.java
@@ -51,6 +51,11 @@
     @Override
     public boolean onStopJob(JobParameters params) {
         mSignal.cancel();
+        try (ContentProviderClient cpc = getContentResolver()
+                .acquireContentProviderClient(MediaStore.AUTHORITY)) {
+            ((MediaProvider) cpc.getLocalContentProvider()).onIdleMaintenanceStopped();
+        } catch (OperationCanceledException ignored) {
+        }
         return false;
     }
 
diff --git a/src/com/android/providers/media/LocalCallingIdentity.java b/src/com/android/providers/media/LocalCallingIdentity.java
index 4d3700b..7313de6 100644
--- a/src/com/android/providers/media/LocalCallingIdentity.java
+++ b/src/com/android/providers/media/LocalCallingIdentity.java
@@ -21,8 +21,10 @@
 import static android.app.AppOpsManager.permissionToOp;
 import static android.content.pm.PackageManager.PERMISSION_DENIED;
 
+import static com.android.providers.media.util.PermissionUtils.checkAppOpRequestInstallPackagesForSharedUid;
 import static com.android.providers.media.util.PermissionUtils.checkIsLegacyStorageGranted;
 import static com.android.providers.media.util.PermissionUtils.checkPermissionDelegator;
+import static com.android.providers.media.util.PermissionUtils.checkPermissionInstallPackages;
 import static com.android.providers.media.util.PermissionUtils.checkPermissionManager;
 import static com.android.providers.media.util.PermissionUtils.checkPermissionReadAudio;
 import static com.android.providers.media.util.PermissionUtils.checkPermissionReadImages;
@@ -51,17 +53,19 @@
 import android.os.UserManager;
 import android.util.ArrayMap;
 
+import androidx.annotation.GuardedBy;
 import androidx.annotation.NonNull;
 
 import com.android.providers.media.util.LongArray;
 
 public class LocalCallingIdentity {
-    public final Context context;
     public final int pid;
     public final int uid;
-    public final String packageNameUnchecked;
+    private final Context context;
+    private final String packageNameUnchecked;
     // Info used for logging permission checks
-    public @Nullable String attributionTag;
+    private final @Nullable String attributionTag;
+    private final Object lock = new Object();
 
     private LocalCallingIdentity(Context context, int pid, int uid, String packageNameUnchecked,
             @Nullable String attributionTag) {
@@ -140,8 +144,8 @@
         return ident;
     }
 
-    private String packageName;
-    private boolean packageNameResolved;
+    private volatile String packageName;
+    private volatile boolean packageNameResolved;
 
     public String getPackageName() {
         if (!packageNameResolved) {
@@ -158,8 +162,8 @@
         return packageNameUnchecked;
     }
 
-    private String[] sharedPackageNames;
-    private boolean sharedPackageNamesResolved;
+    private volatile String[] sharedPackageNames;
+    private volatile boolean sharedPackageNamesResolved;
 
     public String[] getSharedPackageNames() {
         if (!sharedPackageNamesResolved) {
@@ -174,8 +178,8 @@
         return (packageNames != null) ? packageNames : new String[0];
     }
 
-    private int targetSdkVersion;
-    private boolean targetSdkVersionResolved;
+    private volatile int targetSdkVersion;
+    private volatile boolean targetSdkVersionResolved;
 
     public int getTargetSdkVersion() {
         if (!targetSdkVersionResolved) {
@@ -214,10 +218,20 @@
     public static final int PERMISSION_WRITE_VIDEO = 1 << 20;
     public static final int PERMISSION_WRITE_IMAGES = 1 << 21;
 
-    public static final int PERMISSION_IS_SYSTEM_GALLERY = 1 <<22;
+    public static final int PERMISSION_IS_SYSTEM_GALLERY = 1 << 22;
+    /**
+     * Explicitly checks **only** for INSTALL_PACKAGES runtime permission.
+     */
+    public static final int PERMISSION_INSTALL_PACKAGES = 1 << 23;
+    public static final int PERMISSION_WRITE_EXTERNAL_STORAGE = 1 << 24;
 
-    private int hasPermission;
-    private int hasPermissionResolved;
+    /**
+     * Checks if REQUEST_INSTALL_PACKAGES app-op is allowed for any package sharing this UID.
+     */
+    public static final int APPOP_REQUEST_INSTALL_PACKAGES_FOR_SHARED_UID = 1 << 25;
+
+    private volatile int hasPermission;
+    private volatile int hasPermissionResolved;
 
     public boolean hasPermission(int permission) {
         if ((hasPermissionResolved & permission) == 0) {
@@ -256,6 +270,10 @@
             case PERMISSION_IS_LEGACY_WRITE:
                 return isLegacyWriteInternal();
 
+            case PERMISSION_WRITE_EXTERNAL_STORAGE:
+                return checkPermissionWriteStorage(
+                        context, pid, uid, getPackageName(), attributionTag);
+
             case PERMISSION_READ_AUDIO:
                 return checkPermissionReadAudio(
                         context, pid, uid, getPackageName(), attributionTag);
@@ -277,6 +295,12 @@
             case PERMISSION_IS_SYSTEM_GALLERY:
                 return checkWriteImagesOrVideoAppOps(
                         context, uid, getPackageName(), attributionTag);
+            case PERMISSION_INSTALL_PACKAGES:
+                return checkPermissionInstallPackages(
+                        context, pid, uid, getPackageName(), attributionTag);
+            case APPOP_REQUEST_INSTALL_PACKAGES_FOR_SHARED_UID:
+                return checkAppOpRequestInstallPackagesForSharedUid(
+                        context, uid, getSharedPackageNames(), attributionTag);
             default:
                 return false;
         }
@@ -336,42 +360,64 @@
         return false;
     }
 
-    private LongArray ownedIds = new LongArray();
+    @GuardedBy("lock")
+    private final LongArray ownedIds = new LongArray();
 
     public boolean isOwned(long id) {
-        return ownedIds.indexOf(id) != -1;
+        synchronized (lock) {
+            return ownedIds.indexOf(id) != -1;
+        }
     }
 
     public void setOwned(long id, boolean owned) {
-        final int index = ownedIds.indexOf(id);
-        if (owned) {
-            if (index == -1) {
-                ownedIds.add(id);
-            }
-        } else {
-            if (index != -1) {
-                ownedIds.remove(index);
+        synchronized (lock) {
+            final int index = ownedIds.indexOf(id);
+            if (owned) {
+                if (index == -1) {
+                    ownedIds.add(id);
+                }
+            } else {
+                if (index != -1) {
+                    ownedIds.remove(index);
+                }
             }
         }
     }
 
-    private ArrayMap<String, Long> rowIdOfDeletedPaths = new ArrayMap<>();
+    @GuardedBy("lock")
+    private final ArrayMap<String, Long> rowIdOfDeletedPaths = new ArrayMap<>();
 
     public void addDeletedRowId(@NonNull String path, long id) {
-        rowIdOfDeletedPaths.put(path, id);
+        synchronized (lock) {
+            rowIdOfDeletedPaths.put(path, id);
+        }
     }
 
     public boolean removeDeletedRowId(long id) {
-        int index = rowIdOfDeletedPaths.indexOfValue(id);
-        final boolean isDeleted = index > -1;
-        while (index > -1) {
-            rowIdOfDeletedPaths.removeAt(index);
-            index = rowIdOfDeletedPaths.indexOfValue(id);
+        synchronized (lock) {
+            int index = rowIdOfDeletedPaths.indexOfValue(id);
+            final boolean isDeleted = index > -1;
+            while (index > -1) {
+                rowIdOfDeletedPaths.removeAt(index);
+                index = rowIdOfDeletedPaths.indexOfValue(id);
+            }
+            return isDeleted;
         }
-        return isDeleted;
     }
 
     public long getDeletedRowId(@NonNull String path) {
-        return rowIdOfDeletedPaths.getOrDefault(path, UNKNOWN_ROW_ID);
+        synchronized (lock) {
+            return rowIdOfDeletedPaths.getOrDefault(path, UNKNOWN_ROW_ID);
+        }
+    }
+
+    private volatile int applicationMediaCapabilitiesFlags = -1;
+
+    public int getApplicationMediaCapabilitiesFlags() {
+        return applicationMediaCapabilitiesFlags;
+    }
+
+    public void setApplicationMediaCapabilitiesFlags(int flags) {
+        applicationMediaCapabilitiesFlags = flags;
     }
 }
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java
index 1310d1b..fdbb834 100644
--- a/src/com/android/providers/media/MediaProvider.java
+++ b/src/com/android/providers/media/MediaProvider.java
@@ -23,6 +23,9 @@
 import static android.app.PendingIntent.FLAG_ONE_SHOT;
 import static android.content.ContentResolver.QUERY_ARG_SQL_SELECTION;
 import static android.content.ContentResolver.QUERY_ARG_SQL_SELECTION_ARGS;
+import static android.content.pm.PackageManager.MATCH_ANY_USER;
+import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE;
+import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
 import static android.content.pm.PackageManager.PERMISSION_GRANTED;
 import static android.provider.MediaStore.MATCH_DEFAULT;
 import static android.provider.MediaStore.MATCH_EXCLUDE;
@@ -36,6 +39,8 @@
 
 import static com.android.providers.media.DatabaseHelper.EXTERNAL_DATABASE_NAME;
 import static com.android.providers.media.DatabaseHelper.INTERNAL_DATABASE_NAME;
+import static com.android.providers.media.LocalCallingIdentity.APPOP_REQUEST_INSTALL_PACKAGES_FOR_SHARED_UID;
+import static com.android.providers.media.LocalCallingIdentity.PERMISSION_INSTALL_PACKAGES;
 import static com.android.providers.media.LocalCallingIdentity.PERMISSION_IS_DELEGATOR;
 import static com.android.providers.media.LocalCallingIdentity.PERMISSION_IS_LEGACY_GRANTED;
 import static com.android.providers.media.LocalCallingIdentity.PERMISSION_IS_LEGACY_READ;
@@ -49,6 +54,7 @@
 import static com.android.providers.media.LocalCallingIdentity.PERMISSION_READ_IMAGES;
 import static com.android.providers.media.LocalCallingIdentity.PERMISSION_READ_VIDEO;
 import static com.android.providers.media.LocalCallingIdentity.PERMISSION_WRITE_AUDIO;
+import static com.android.providers.media.LocalCallingIdentity.PERMISSION_WRITE_EXTERNAL_STORAGE;
 import static com.android.providers.media.LocalCallingIdentity.PERMISSION_WRITE_IMAGES;
 import static com.android.providers.media.LocalCallingIdentity.PERMISSION_WRITE_VIDEO;
 import static com.android.providers.media.scan.MediaScanner.REASON_DEMAND;
@@ -63,8 +69,10 @@
 import static com.android.providers.media.util.FileUtils.extractRelativePathForDirectory;
 import static com.android.providers.media.util.FileUtils.extractTopLevelDir;
 import static com.android.providers.media.util.FileUtils.extractVolumeName;
+import static com.android.providers.media.util.FileUtils.extractVolumePath;
 import static com.android.providers.media.util.FileUtils.getAbsoluteSanitizedPath;
 import static com.android.providers.media.util.FileUtils.isDataOrObbPath;
+import static com.android.providers.media.util.FileUtils.isObbOrChildPath;
 import static com.android.providers.media.util.FileUtils.isDownload;
 import static com.android.providers.media.util.FileUtils.sanitizePath;
 import static com.android.providers.media.util.Logging.LOGV;
@@ -77,6 +85,7 @@
 import android.app.PendingIntent;
 import android.app.RecoverableSecurityException;
 import android.app.RemoteAction;
+import android.app.admin.DevicePolicyManager;
 import android.content.BroadcastReceiver;
 import android.content.ClipData;
 import android.content.ClipDescription;
@@ -134,6 +143,7 @@
 import android.preference.PreferenceManager;
 import android.provider.BaseColumns;
 import android.provider.Column;
+import android.provider.DeviceConfig;
 import android.provider.MediaStore;
 import android.provider.MediaStore.Audio;
 import android.provider.MediaStore.Audio.AudioColumns;
@@ -198,11 +208,14 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintWriter;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -228,10 +241,10 @@
     static final Pattern PATTERN_SELECTION_ID = Pattern.compile(
             "(?:image_id|video_id)\\s*=\\s*(\\d+)");
 
-    /**
-     * Property that indicates whether fuse is enabled.
-     */
-    private static final String PROP_FUSE = "persist.sys.fuse";
+    /** File supports transforms and uid requires transcoding */
+    private static final int FLAG_TRANSFORM_TRANSCODING = 1;
+    /** File supports transforms */
+    private static final int FLAG_TRANSFORM_SUPPORTED = 1 << 30;
 
     /**
      * These directory names aren't declared in Environment as final variables, and so we need to
@@ -280,6 +293,8 @@
      */
     private static final int MATCH_VISIBLE_FOR_FILEPATH = 32;
 
+    private static final int NON_HIDDEN_CACHE_SIZE = 50;
+
     /**
      * Where clause to match pending files from FUSE. Pending files from FUSE will not have
      * PATTERN_PENDING_FILEPATH_FOR_SQL pattern.
@@ -287,6 +302,11 @@
     private static final String MATCH_PENDING_FROM_FUSE = String.format("lower(%s) NOT REGEXP '%s'",
             MediaColumns.DATA, PATTERN_PENDING_FILEPATH_FOR_SQL);
 
+    // Stolen from: UserHandle#getUserId
+    private static final int PER_USER_RANGE = 100000;
+    private static final boolean PROP_CROSS_USER_ALLOWED =
+            SystemProperties.getBoolean("external_storage.cross_user.enabled", false);
+
     /**
      * Set of {@link Cursor} columns that refer to raw filesystem paths.
      */
@@ -311,9 +331,17 @@
     @GuardedBy("sCacheLock")
     private static final ArrayMap<File, String> sCachedVolumePathToId = new ArrayMap<>();
 
+    private static final int sUserId = UserHandle.myUserId();
+
+    // WARNING/TODO (b/173505864): This will be replaced by signature APIs in S
+    private static final String DOWNLOADS_PROVIDER_AUTHORITY = "downloads";
+
     @GuardedBy("mShouldRedactThreadIds")
     private final LongArray mShouldRedactThreadIds = new LongArray();
 
+    @GuardedBy("mNonHiddenPaths")
+    private final LRUCache<String, Integer> mNonHiddenPaths = new LRUCache<>(NON_HIDDEN_CACHE_SIZE);
+
     public void updateVolumes() {
         synchronized (sCacheLock) {
             sCachedExternalVolumeNames.clear();
@@ -408,10 +436,25 @@
         }
     }
 
+    /**
+     * Frees any cache held by MediaProvider.
+     *
+     * @param bytes number of bytes which need to be freed
+     */
+    public void freeCache(long bytes) {
+        // TODO(b/170481432): Implement cache clearing policies.
+        mTranscodeHelper.getTranscodeDirectory().delete();
+    }
+
+    private volatile Locale mLastLocale = Locale.getDefault();
+
     private StorageManager mStorageManager;
     private AppOpsManager mAppOpsManager;
     private PackageManager mPackageManager;
+    private DevicePolicyManager mDevicePolicyManager;
 
+    private int mExternalStorageAuthorityAppId;
+    private int mDownloadsAuthorityAppId;
     private Size mThumbSize;
 
     /**
@@ -447,6 +490,9 @@
     private OnOpChangedListener mModeListener =
             (op, packageName) -> invalidateLocalCallingIdentityCache(packageName, "op " + op);
 
+    @GuardedBy("mNonWorkProfileUsers")
+    private final List<Integer> mNonWorkProfileUsers = new ArrayList<>();
+
     /**
      * Retrieves a cached calling identity or creates a new one. Also, always sets the app-op
      * description for the calling identity.
@@ -454,12 +500,19 @@
     private LocalCallingIdentity getCachedCallingIdentityForFuse(int uid) {
         synchronized (mCachedCallingIdentityForFuse) {
             PermissionUtils.setOpDescription("via FUSE");
-            LocalCallingIdentity ident = mCachedCallingIdentityForFuse.get(uid);
-            if (ident == null) {
-               ident = LocalCallingIdentity.fromExternal(getContext(), uid);
-               mCachedCallingIdentityForFuse.put(uid, ident);
+            LocalCallingIdentity identity = mCachedCallingIdentityForFuse.get(uid);
+            if (identity == null) {
+               identity = LocalCallingIdentity.fromExternal(getContext(), uid);
+               if (uid / PER_USER_RANGE == sUserId) {
+                   mCachedCallingIdentityForFuse.put(uid, identity);
+               } else {
+                   // In some app cloning designs, MediaProvider user 0 may
+                   // serve requests for apps running as a "clone" user; in
+                   // those cases, don't keep a cache for the clone user, since
+                   // we don't get any invalidation events for these users.
+               }
             }
-            return ident;
+            return identity;
         }
     }
 
@@ -512,6 +565,8 @@
 
     private static final String CANONICAL = "canonical";
 
+    private static final String ALL_VOLUMES = "all_volumes";
+
     private BroadcastReceiver mPackageReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -560,8 +615,9 @@
             }
 
             updateQuotaTypeForFileInternal(file, mediaType);
-        } catch (FileNotFoundException e) {
+        } catch (FileNotFoundException | IllegalArgumentException e) {
             // Ignore
+            Log.w(TAG, "Failed to update quota for uri: " + uri, e);
             return;
         } finally {
             Trace.endSection();
@@ -652,6 +708,9 @@
                 int mediaType, boolean isDownload, String ownerPackageName, String path) {
             handleDeletedRowForFuse(path, ownerPackageName, id);
             acceptWithExpansion(helper::notifyDelete, volumeName, id, mediaType, isDownload);
+            // Remove cached transcoded file if any
+            mTranscodeHelper.deleteCachedTranscodeFile(id);
+
 
             helper.postBackground(() -> {
                 // Item no longer exists, so revoke all access to it
@@ -664,6 +723,14 @@
                     Trace.endSection();
                 }
 
+                switch (mediaType) {
+                    case FileColumns.MEDIA_TYPE_PLAYLIST:
+                    case FileColumns.MEDIA_TYPE_AUDIO:
+                        if (helper.isExternal()) {
+                            removePlaylistMembers(mediaType, id);
+                        }
+                }
+
                 // Invalidate any thumbnails now that media is gone
                 invalidateThumbnails(MediaStore.Files.getContentUri(volumeName, id));
 
@@ -729,6 +796,11 @@
             case FileColumns.MEDIA_TYPE_IMAGE:
                 consumer.accept(MediaStore.Images.Media.getContentUri(volumeName, id));
                 break;
+
+            case FileColumns.MEDIA_TYPE_PLAYLIST:
+                consumer.accept(ContentUris.withAppendedId(
+                        MediaStore.Audio.Playlists.getContentUri(volumeName), id));
+                break;
         }
 
         // Also notify through any generic views
@@ -750,6 +822,10 @@
         }
     }
 
+    private static boolean isCrossUserEnabled() {
+        return PROP_CROSS_USER_ALLOWED && Build.VERSION.SDK_INT <= Build.VERSION_CODES.R;
+    }
+
     /**
      * Ensure that default folders are created on mounted primary storage
      * devices. We only do this once per volume so we don't annoy the user if
@@ -851,6 +927,7 @@
         mStorageManager = context.getSystemService(StorageManager.class);
         mAppOpsManager = context.getSystemService(AppOpsManager.class);
         mPackageManager = context.getPackageManager();
+        mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
 
         // Reasonable thumbnail size is half of the smallest screen edge width
         final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
@@ -866,6 +943,8 @@
                 false, false, false, Column.class,
                 Metrics::logSchemaChange, mFilesListener, MIGRATION_LISTENER, mIdGenerator);
 
+        mTranscodeHelper = new TranscodeHelper(context, this);
+
         final IntentFilter packageFilter = new IntentFilter();
         packageFilter.setPriority(10);
         packageFilter.addDataScheme("package");
@@ -916,10 +995,24 @@
             // throw an IllegalArgumentException during MediaProvider startup. In combination with
             // MediaProvider's CTS tests it should give us guarantees that OPSTR_NO_ISOLATED_STORAGE
             // is defined.
-            mAppOpsManager.startWatchingMode(PermissionUtils.OPSTR_NO_ISOLATED_STORAGE,
+            mAppOpsManager.startWatchingMode(AppOpsManager.OPSTR_NO_ISOLATED_STORAGE,
                     null /* all packages */, mModeListener);
         } catch (IllegalArgumentException e) {
-            Log.w(TAG, "Failed to start watching " + PermissionUtils.OPSTR_NO_ISOLATED_STORAGE, e);
+            Log.w(TAG, "Failed to start watching " + AppOpsManager.OPSTR_NO_ISOLATED_STORAGE, e);
+        }
+
+        ProviderInfo provider = mPackageManager.resolveContentProvider(
+            DOWNLOADS_PROVIDER_AUTHORITY, PackageManager.MATCH_DIRECT_BOOT_AWARE
+                | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
+        if (provider != null) {
+            mDownloadsAuthorityAppId = UserHandle.getAppId(provider.applicationInfo.uid);
+        }
+
+        provider = mPackageManager.resolveContentProvider(
+            MediaStore.EXTERNAL_STORAGE_PROVIDER_AUTHORITY, PackageManager.MATCH_DIRECT_BOOT_AWARE
+                | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
+        if (provider != null) {
+            mExternalStorageAuthorityAppId = UserHandle.getAppId(provider.applicationInfo.uid);
         }
         return true;
     }
@@ -1069,6 +1162,14 @@
                 durationMillis, staleThumbnails, expiredMedia);
     }
 
+    public void onIdleMaintenanceStopped() {
+        mMediaScanner.onIdleScanStopped();
+    }
+
+    /**
+     * Orphan any content of the given package. This will delete Android/media orphaned files from
+     * the database.
+     */
     public void onPackageOrphaned(String packageName) {
         mExternalDatabase.runWithTransaction((db) -> {
             onPackageOrphaned(db, packageName);
@@ -1076,14 +1177,28 @@
         });
     }
 
+    /**
+     * Orphan any content of the given package from the given database. This will delete
+     * Android/media orphaned files from the database.
+     */
     public void onPackageOrphaned(@NonNull SQLiteDatabase db, @NonNull String packageName) {
+        // Delete files from Android/media.
+        String relativePath = "Android/media/" + DatabaseUtils.escapeForLike(packageName) + "/%";
+        final int countDeleted = db.delete(
+                "files",
+                "relative_path LIKE ? ESCAPE '\\' AND owner_package_name=?",
+                new String[] {relativePath, packageName});
+        Log.d(TAG, "Deleted " + countDeleted + " Android/media items belonging to "
+                + packageName + " on " + db.getPath());
+
+        // Orphan rest of files.
         final ContentValues values = new ContentValues();
         values.putNull(FileColumns.OWNER_PACKAGE_NAME);
 
-        final int count = db.update("files", values,
+        final int countOrphaned = db.update("files", values,
                 "owner_package_name=?", new String[] { packageName });
-        if (count > 0) {
-            Log.d(TAG, "Orphaned " + count + " items belonging to "
+        if (countOrphaned > 0) {
+            Log.d(TAG, "Orphaned " + countOrphaned + " items belonging to "
                     + packageName + " on " + db.getPath());
         }
     }
@@ -1100,6 +1215,15 @@
         return mMediaScanner.scanFile(file, reason, ownerPackage);
     }
 
+    private Uri scanFileAsMediaProvider(File file, int reason) {
+        final LocalCallingIdentity tokenInner = clearLocalCallingIdentity();
+        try {
+            return scanFile(file, REASON_DEMAND);
+        } finally {
+            restoreLocalCallingIdentity(tokenInner);
+        }
+    }
+
     /**
      * Makes MediaScanner scan the given file.
      * @param file path of the file to be scanned
@@ -1128,6 +1252,175 @@
         });
     }
 
+    private boolean isAppCloneUserPair(int userId1, int userId2) {
+        try {
+            Method isAppCloneUserPair = StorageManager.class.getMethod("isAppCloneUserPair",
+                    int.class, int.class);
+            return (Boolean) isAppCloneUserPair.invoke(mStorageManager, userId1, userId2);
+        } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
+            Log.w(TAG, "isAppCloneUserPair failed. Users: " + userId1 + " and " + userId2);
+            return false;
+        }
+    }
+
+    /**
+     * Determines whether the passed in userId forms an app clone user pair with user 0.
+     *
+     * @param userId user ID to check
+     *
+     * Called from JNI in jni/MediaProviderWrapper.cpp
+     */
+    @Keep
+    public boolean isAppCloneUserForFuse(int userId) {
+        if (!isCrossUserEnabled()) {
+            Log.d(TAG, "CrossUser not enabled.");
+            return false;
+        }
+        boolean result = isAppCloneUserPair(0, userId);
+
+        Log.w(TAG, "isAppCloneUserPair for user " + userId + ": " + result);
+
+        return result;
+    }
+
+    /**
+     * Determines if to allow FUSE_LOOKUP for uid. Might allow uids that don't belong to the
+     * MediaProvider user, depending on OEM configuration.
+     *
+     * @param uid linux uid to check
+     *
+     * Called from JNI in jni/MediaProviderWrapper.cpp
+     */
+    @Keep
+    public boolean shouldAllowLookupForFuse(int uid, int pathUserId) {
+        int callingUserId = uid / PER_USER_RANGE;
+        if (!isCrossUserEnabled()) {
+            Log.d(TAG, "CrossUser not enabled. Users: " + callingUserId + " and " + pathUserId);
+            return false;
+        }
+
+        if (callingUserId != 0 && pathUserId != 0) {
+            Log.w(TAG, "CrossUser at least one user is 0 check failed. Users: " + callingUserId
+                    + " and " + pathUserId);
+            return false;
+        }
+
+        if (isWorkProfile(callingUserId) || isWorkProfile(pathUserId)) {
+            // Cross-user lookup not allowed if one user in the pair has a profile owner app
+            Log.w(TAG, "CrossUser work profile check failed. Users: " + callingUserId + " and "
+                    + pathUserId);
+            return false;
+        }
+
+        boolean result = isAppCloneUserPair(pathUserId, callingUserId);
+        if (result) {
+            Log.i(TAG, "CrossUser allowed. Users: " + callingUserId + " and " + pathUserId);
+        } else {
+            Log.w(TAG, "CrossUser isAppCloneUserPair check failed. Users: " + callingUserId
+                    + " and " + pathUserId);
+        }
+
+        return result;
+    }
+
+    private boolean isWorkProfile(int userId) {
+        synchronized (mNonWorkProfileUsers) {
+            if (mNonWorkProfileUsers.contains(userId)) {
+                return false;
+            }
+            if (userId == 0) {
+                mNonWorkProfileUsers.add(userId);
+                // user 0 cannot have a profile owner
+                return false;
+            }
+        }
+
+        List<Integer> uids = new ArrayList<>();
+        for (ApplicationInfo ai : mPackageManager.getInstalledApplications(MATCH_DIRECT_BOOT_AWARE
+                        | MATCH_DIRECT_BOOT_UNAWARE | MATCH_ANY_USER)) {
+            if (((ai.uid / PER_USER_RANGE) == userId)
+                    && mDevicePolicyManager.isProfileOwnerApp(ai.packageName)) {
+                return true;
+            }
+        }
+
+        synchronized (mNonWorkProfileUsers) {
+            mNonWorkProfileUsers.add(userId);
+            return false;
+        }
+    }
+
+    /**
+     * Called from FUSE to transform a file
+     *
+     * A transform can change the file contents for {@code uid} from {@code src} to {@code dst}
+     * depending on {@code flags}. This allows the FUSE daemon serve different file contents for
+     * the same file to different apps.
+     *
+     * The only supported transform for now is transcoding which re-encodes a file taken in a modern
+     * format like HEVC to a legacy format like AVC.
+     *
+     * @param src file path to transform
+     * @param dst file path to save transformed file
+     * @param flags determines the kind of transform
+     * @param uid app requesting transform
+     *
+     * Called from JNI in jni/MediaProviderWrapper.cpp
+     */
+    @Keep
+    public boolean transformForFuse(String src, String dst, int transforms, int uid) {
+        if ((transforms & FLAG_TRANSFORM_TRANSCODING) != 0) {
+            if (mTranscodeHelper.isTranscodeFileCached(src, dst)) {
+                Log.d(TAG, "Using transcode cache for " + src);
+                return true;
+            }
+            return mTranscodeHelper.transcode(src, dst, uid);
+        }
+        return true;
+    }
+
+    /**
+     * Called from FUSE to get IO path for {@code uid}
+     *
+     * IO path is the actual path to be used on the lower fs for IO via FUSE. For some file
+     * transforms, this path might be different from the path the app is requesting IO on.
+     *
+     * @param path file path to get an IO path for
+     * @param uid app requesting IO
+     *
+     * Called from JNI in jni/MediaProviderWrapper.cpp
+     */
+    @Keep
+    public String getIoPathForFuse(String path, int uid) {
+        return mTranscodeHelper.getIoPath(path, uid);
+    }
+
+    /**
+     * Called from FUSE to get transforms for {@code uid}
+     *
+     * If transforms are not supported for {@code path}, {@code 0} will be returned. Otherwise,
+     * a bitwise OR of supported transforms for {@code path} and actual transforms to perform for
+     * {@code uid} will be returned.
+     *
+     * @param path file path to get transforms for
+     * @param uid app requesting IO
+     *
+     * Called from JNI in jni/MediaProviderWrapper.cpp
+     * @see {@link transformForFuse}
+     */
+    @Keep
+    public int getTransformsForFuse(String path, int uid) {
+        int result = 0;
+        if (mTranscodeHelper.supportsTranscode(path)) {
+            result |= FLAG_TRANSFORM_SUPPORTED;
+
+            if (mTranscodeHelper.shouldTranscode(path, uid, null /* bundle */)) {
+                result |= FLAG_TRANSFORM_TRANSCODING;
+            }
+        }
+        return result;
+    }
+
     /**
      * Returns true if the app denoted by the given {@code uid} and {@code packageName} is allowed
      * to clear other apps' cache directories.
@@ -1473,20 +1766,22 @@
                 clearLocalCallingIdentity(getCachedCallingIdentityForFuse(uid));
 
         try {
-            if (isPrivatePackagePathNotOwnedByCaller(path)) {
-                return new String[] {""};
-            }
-
-            // Do not allow apps to list Android/data or Android/obb dirs. Installer and
-            // MOUNT_EXTERNAL_ANDROID_WRITABLE apps won't be blocked by this, as their OBB dirs
-            // are mounted to lowerfs directly.
-            if (isDataOrObbPath(path)) {
+            if (isPrivatePackagePathNotAccessibleByCaller(path)) {
                 return new String[] {""};
             }
 
             if (shouldBypassFuseRestrictions(/*forWrite*/ false, path)) {
                 return new String[] {"/"};
             }
+
+            // Do not allow apps to list Android/data or Android/obb dirs.
+            // On primary volumes, apps that get special access to these directories get it via
+            // mount views of lowerfs. On secondary volumes, such apps would return early from
+            // shouldBypassFuseRestrictions above (except for MTP apps b/174347304).
+            if (isDataOrObbPath(path)) {
+                return new String[] {""};
+            }
+
             // Legacy apps that made is this far don't have the right storage permission and hence
             // are not allowed to access anything other than their external app directory
             if (isCallingPackageRequestingLegacy()) {
@@ -1668,16 +1963,24 @@
      * Gets {@link ContentValues} for updating database entry to {@code path}.
      */
     private ContentValues getContentValuesForFuseRename(String path, String newMimeType,
-            boolean checkHidden) {
+            boolean wasHidden, boolean isHidden) {
         ContentValues values = new ContentValues();
         values.put(MediaColumns.MIME_TYPE, newMimeType);
         values.put(MediaColumns.DATA, path);
 
-        if (checkHidden && shouldFileBeHidden(new File(path))) {
+        if (isHidden) {
             values.put(FileColumns.MEDIA_TYPE, FileColumns.MEDIA_TYPE_NONE);
         } else {
             int mediaType = MimeUtils.resolveMediaType(newMimeType);
             values.put(FileColumns.MEDIA_TYPE, mediaType);
+            if (wasHidden) {
+                // Set this as pending so that apps can scan the file to update the metadata.
+                // Otherwise, scan will skip scanning this file because rename() doesn't change
+                // lastModifiedTime and scan assumes there is no change in the file.
+                // This should be safe because, in Q, apps had to insert new db row or scan the file
+                // to insert this file to database.
+                values.put(FileColumns.IS_PENDING, 1);
+            }
         }
         final boolean allowHidden = isCallingPackageAllowedHidden();
         if (!newMimeType.equalsIgnoreCase("null") &&
@@ -1862,12 +2165,14 @@
             final Bundle qbExtras = new Bundle();
             qbExtras.putStringArrayList(INCLUDED_DEFAULT_DIRECTORIES,
                     getIncludedDefaultDirectories());
+            final boolean wasHidden = FileUtils.isDirectoryHidden(new File(oldPath));
+            final boolean isHidden = FileUtils.isDirectoryHidden(new File(newPath));
             for (String filePath : fileList) {
                 final String newFilePath = newPath + "/" + filePath;
                 final String mimeType = MimeUtils.resolveMimeType(new File(newFilePath));
                 if(!updateDatabaseForFuseRename(helper, oldPath + "/" + filePath, newFilePath,
-                        getContentValuesForFuseRename(newFilePath, mimeType,
-                                false /* checkHidden  - will be fixed up below */), qbExtras)) {
+                        getContentValuesForFuseRename(newFilePath, mimeType, wasHidden, isHidden),
+                        qbExtras)) {
                     Log.e(TAG, "Calling package doesn't have write permission to rename file.");
                     return OsConstants.EPERM;
                 }
@@ -1941,11 +2246,13 @@
             throw new IllegalStateException("Failed to update database row with " + oldPath, e);
         }
 
+        final boolean wasHidden = shouldFileBeHidden(new File(oldPath));
+        final boolean isHidden = shouldFileBeHidden(new File(newPath));
         helper.beginTransaction();
         try {
             final String newMimeType = MimeUtils.resolveMimeType(new File(newPath));
             if (!updateDatabaseForFuseRename(helper, oldPath, newPath,
-                    getContentValuesForFuseRename(newPath, newMimeType, true /* checkHidden */))) {
+                    getContentValuesForFuseRename(newPath, newMimeType, wasHidden, isHidden))) {
                 if (!bypassRestrictions) {
                     Log.e(TAG, "Calling package doesn't have write permission to rename file.");
                     return OsConstants.EPERM;
@@ -1981,6 +2288,7 @@
         if (extractDisplayName(newPath).equals(".nomedia")) {
             scanFile(new File(newPath).getParentFile(), REASON_DEMAND);
         }
+
         return 0;
     }
 
@@ -2022,8 +2330,8 @@
                 clearLocalCallingIdentity(getCachedCallingIdentityForFuse(uid));
 
         try {
-            if (isPrivatePackagePathNotOwnedByCaller(oldPath)
-                    || isPrivatePackagePathNotOwnedByCaller(newPath)) {
+            if (isPrivatePackagePathNotAccessibleByCaller(oldPath)
+                    || isPrivatePackagePathNotAccessibleByCaller(newPath)) {
                 return OsConstants.EACCES;
             }
 
@@ -2032,7 +2340,7 @@
                 return OsConstants.EPERM;
             }
 
-            if (shouldBypassDatabaseForFuse(uid)) {
+            if (shouldBypassDatabaseAndSetDirtyForFuse(uid, newPath)) {
                 return renameInLowerFs(oldPath, newPath);
             }
 
@@ -2176,9 +2484,14 @@
 
     @Override
     public Cursor query(Uri uri, String[] projection, Bundle queryArgs, CancellationSignal signal) {
+        return query(uri, projection, queryArgs, signal, /* forSelf */ false);
+    }
+
+    private Cursor query(Uri uri, String[] projection, Bundle queryArgs,
+            CancellationSignal signal, boolean forSelf) {
         Trace.beginSection("query");
         try {
-            return queryInternal(uri, projection, queryArgs, signal);
+            return queryInternal(uri, projection, queryArgs, signal, forSelf);
         } catch (FallbackException e) {
             return e.translateForQuery(getCallingPackageTargetSdkVersion());
         } finally {
@@ -2187,7 +2500,7 @@
     }
 
     private Cursor queryInternal(Uri uri, String[] projection, Bundle queryArgs,
-            CancellationSignal signal) throws FallbackException {
+            CancellationSignal signal, boolean forSelf) throws FallbackException {
         queryArgs = (queryArgs != null) ? queryArgs : new Bundle();
 
         // INCLUDED_DEFAULT_DIRECTORIES extra should only be set inside MediaProvider.
@@ -2288,8 +2601,14 @@
             }
         }
 
+        // Update locale if necessary.
+        if (helper == mInternalDatabase && !Locale.getDefault().equals(mLastLocale)) {
+            Log.i(TAG, "Updating locale within queryInternal");
+            onLocaleChanged(false);
+        }
+
         final Cursor c = qb.query(helper, projection, queryArgs, signal);
-        if (c != null) {
+        if (c != null && !forSelf) {
             // As a performance optimization, only configure notifications when
             // resulting cursor will leave our process
             final boolean callerIsRemote = mCallingIdentity.get().pid != android.os.Process.myPid();
@@ -2709,16 +3028,27 @@
                                 + "; allowed directories are " + allowedPrimary);
             }
 
+            boolean isFuseThread = isFuseThread();
+            // Check if the following are true:
+            // 1. Not a FUSE thread
+            // 2. |res| is a child of a default dir and the default dir is missing
+            // If true, we want to update the mTime of the volume root, after creating the dir
+            // on the lower filesystem. This fixes some FileManagers relying on the mTime change
+            // for UI updates
+            File defaultDirVolumePath =
+                    isFuseThread ? null : checkDefaultDirMissing(resolvedVolumeName, res);
             // Ensure all parent folders of result file exist
             res.getParentFile().mkdirs();
             if (!res.getParentFile().exists()) {
                 throw new IllegalStateException("Failed to create directory: " + res);
             }
+            touchFusePath(defaultDirVolumePath);
+
             values.put(MediaColumns.DATA, res.getAbsolutePath());
             // buildFile may have changed the file name, compute values to extract new DISPLAY_NAME.
             // Note: We can't extract displayName from res.getPath() because for pending & trashed
             // files DISPLAY_NAME will not be same as file name.
-            FileUtils.computeValuesFromData(values, isFuseThread());
+            FileUtils.computeValuesFromData(values, isFuseThread);
         } else {
             assertFileColumnsConsistent(match, uri, values);
         }
@@ -2742,6 +3072,37 @@
     }
 
     /**
+     * @return the default dir if {@code file} is a child of default dir and it's missing,
+     * {@code null} otherwise. */
+    private File checkDefaultDirMissing(String volumeName, File file) {
+        String topLevelDir = FileUtils.extractTopLevelDir(file.getPath());
+        if (topLevelDir != null && FileUtils.isDefaultDirectoryName(topLevelDir)) {
+            try {
+                File volumePath = getVolumePath(volumeName);
+                if (!new File(volumePath, topLevelDir).exists()) {
+                    return volumePath;
+                }
+            } catch (FileNotFoundException e) {
+                Log.w(TAG, "Failed to checkDefaultDirMissing for " + file, e);
+            }
+        }
+        return null;
+    }
+
+    /** Updates mTime of {@code path} on the FUSE filesystem */
+    private void touchFusePath(@Nullable File path) {
+        if (path != null) {
+            // Touch root of volume to update mTime on FUSE filesystem
+            // This allows FileManagers that may be relying on mTime changes to update their UI
+            File fusePath = getFuseFile(path);
+            if (fusePath != null) {
+                Log.i(TAG, "Touching FUSE path " + fusePath);
+                fusePath.setLastModified(System.currentTimeMillis());
+            }
+        }
+    }
+
+    /**
      * Check that any requested {@link MediaColumns#DATA} paths actually
      * live on the storage volume being targeted.
      */
@@ -2764,7 +3125,7 @@
     }
 
     @Override
-    public int bulkInsert(Uri uri, ContentValues values[]) {
+    public int bulkInsert(Uri uri, ContentValues[] values) {
         final int targetSdkVersion = getCallingPackageTargetSdkVersion();
         final boolean allowHidden = isCallingPackageAllowedHidden();
         final int match = matchUri(uri, allowHidden);
@@ -2773,6 +3134,28 @@
             return super.bulkInsert(uri, values);
         }
 
+        if (match == AUDIO_PLAYLISTS_ID || match == AUDIO_PLAYLISTS_ID_MEMBERS) {
+            final String resolvedVolumeName = resolveVolumeName(uri);
+
+            final long playlistId = Long.parseLong(uri.getPathSegments().get(3));
+            final Uri playlistUri = ContentUris.withAppendedId(
+                    MediaStore.Audio.Playlists.getContentUri(resolvedVolumeName), playlistId);
+
+            final String audioVolumeName =
+                    MediaStore.VOLUME_INTERNAL.equals(resolvedVolumeName)
+                            ? MediaStore.VOLUME_INTERNAL : MediaStore.VOLUME_EXTERNAL;
+
+            // Require that caller has write access to underlying media
+            enforceCallingPermission(playlistUri, Bundle.EMPTY, true);
+            for (ContentValues each : values) {
+                final long audioId = each.getAsLong(Audio.Playlists.Members.AUDIO_ID);
+                final Uri audioUri = Audio.Media.getContentUri(audioVolumeName, audioId);
+                enforceCallingPermission(audioUri, Bundle.EMPTY, false);
+            }
+
+            return bulkInsertPlaylist(playlistUri, values);
+        }
+
         final DatabaseHelper helper;
         try {
             helper = getDatabaseForUri(uri);
@@ -2790,6 +3173,25 @@
         }
     }
 
+    private int bulkInsertPlaylist(@NonNull Uri uri, @NonNull ContentValues[] values) {
+        Trace.beginSection("bulkInsertPlaylist");
+        try {
+            try {
+                return addPlaylistMembers(uri, values);
+            } catch (SQLiteConstraintException e) {
+                if (getCallingPackageTargetSdkVersion() >= Build.VERSION_CODES.R) {
+                    throw e;
+                } else {
+                    return 0;
+                }
+            }
+        } catch (FallbackException e) {
+            return e.translateForBulkInsert(getCallingPackageTargetSdkVersion());
+        } finally {
+            Trace.endSection();
+        }
+    }
+
     private long insertDirectory(@NonNull SQLiteDatabase db, @NonNull String path) {
         if (LOGV) Log.v(TAG, "inserting directory " + path);
         ContentValues values = new ContentValues();
@@ -2946,8 +3348,15 @@
     }
 
     public void onLocaleChanged() {
+        onLocaleChanged(true);
+    }
+
+    private void onLocaleChanged(boolean forceUpdate) {
         mInternalDatabase.runWithTransaction((db) -> {
-            localizeTitles(db);
+            if (forceUpdate || !mLastLocale.equals(Locale.getDefault())) {
+                localizeTitles(db);
+                mLastLocale = Locale.getDefault();
+            }
             return null;
         });
     }
@@ -3045,6 +3454,15 @@
             values.put(FileColumns.MEDIA_TYPE, mediaType);
         }
 
+        if (isCallingPackageSelf() && values.containsKey(FileColumns._MODIFIER)) {
+            // We can't identify if the call is coming from media scan, hence
+            // we let ModernMediaScanner send FileColumns._MODIFIER value.
+        } else if (isFuseThread()) {
+            values.put(FileColumns._MODIFIER, FileColumns._MODIFIER_FUSE);
+        } else {
+            values.put(FileColumns._MODIFIER, FileColumns._MODIFIER_CR);
+        }
+
         final long rowId;
         {
             if (mediaType == FileColumns.MEDIA_TYPE_PLAYLIST) {
@@ -3285,6 +3703,7 @@
             return attachedVolume;
         }
 
+        final DatabaseHelper helper = getDatabaseForUri(uri);
         switch (match) {
             case AUDIO_PLAYLISTS_ID:
             case AUDIO_PLAYLISTS_ID_MEMBERS: {
@@ -3294,8 +3713,11 @@
 
                 final long audioId = initialValues
                         .getAsLong(MediaStore.Audio.Playlists.Members.AUDIO_ID);
+                final String audioVolumeName =
+                        MediaStore.VOLUME_INTERNAL.equals(resolvedVolumeName)
+                                ? MediaStore.VOLUME_INTERNAL : MediaStore.VOLUME_EXTERNAL;
                 final Uri audioUri = ContentUris.withAppendedId(
-                        MediaStore.Audio.Media.getContentUri(resolvedVolumeName), audioId);
+                        MediaStore.Audio.Media.getContentUri(audioVolumeName), audioId);
 
                 // Require that caller has write access to underlying media
                 enforceCallingPermission(playlistUri, Bundle.EMPTY, true);
@@ -3305,6 +3727,8 @@
                 // files on disk to ensure that we can reliably migrate between
                 // devices and recover from database corruption
                 final long id = addPlaylistMembers(playlistUri, initialValues);
+                acceptWithExpansion(helper::notifyInsert, resolvedVolumeName, playlistId,
+                        FileColumns.MEDIA_TYPE_PLAYLIST, false);
                 return ContentUris.withAppendedId(MediaStore.Audio.Playlists.Members
                         .getContentUri(originalVolumeName, playlistId), id);
             }
@@ -3386,7 +3810,6 @@
         long rowId = -1;
         Uri newUri = null;
 
-        final DatabaseHelper helper = getDatabaseForUri(uri);
         final SQLiteQueryBuilder qb = getQueryBuilder(TYPE_INSERT, match, uri, extras, null);
 
         switch (match) {
@@ -3622,6 +4045,14 @@
         }
     }
 
+    /**
+     * Gets {@link LocalCallingIdentity} for the calling package
+     * TODO(b/170465810) Change the method name after refactoring.
+     */
+    LocalCallingIdentity getCachedCallingIdentityForTranscoding(int uid) {
+        return getCachedCallingIdentityForFuse(uid);
+    }
+
     @Deprecated
     private String getSharedPackages() {
         final String[] sharedPackageNames = mCallingIdentity.get().getSharedPackageNames();
@@ -3647,6 +4078,23 @@
     private static final int TYPE_DELETE = 3;
 
     /**
+     * Creating a new method for Transcoding to avoid any merge conflicts.
+     * TODO(b/170465810): Remove this when getQueryBuilder code is refactored.
+     */
+    @NonNull SQLiteQueryBuilder getQueryBuilderForTranscoding(int type, int match,
+            @NonNull Uri uri, @NonNull Bundle extras, @Nullable Consumer<String> honored) {
+        // Force MediaProvider calling identity when accessing the db from transcoding to avoid
+        // generating 'strict' SQL e.g forcing owner_package_name matches
+        // We already handle the required permission checks for the app before we get here
+        final LocalCallingIdentity token = clearLocalCallingIdentity();
+        try {
+            return getQueryBuilder(type, match, uri, extras, honored);
+        } finally {
+            restoreLocalCallingIdentity(token);
+        }
+    }
+
+    /**
      * Generate a {@link SQLiteQueryBuilder} that is filtered based on the
      * runtime permissions and/or {@link Uri} grants held by the caller.
      * <ul>
@@ -3740,7 +4188,10 @@
         // Handle callers using legacy filtering
         final String filter = uri.getQueryParameter("filter");
 
-        boolean includeAllVolumes = false;
+        // Only accept ALL_VOLUMES parameter up until R, because we're not convinced we want
+        // to commit to this as an API.
+        final boolean includeAllVolumes = (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) ?
+                "1".equals(uri.getQueryParameter(ALL_VOLUMES)) : false;
         final String callingPackage = getCallingPackageOrSelf();
 
         switch (match) {
@@ -4316,6 +4767,7 @@
             count = 1;
         }
 
+        final DatabaseHelper helper = getDatabaseForUri(uri);
         switch (match) {
             case AUDIO_PLAYLISTS_ID_MEMBERS_ID:
                 extras.putString(QUERY_ARG_SQL_SELECTION,
@@ -4329,11 +4781,15 @@
                 // Playlist contents are always persisted directly into playlist
                 // files on disk to ensure that we can reliably migrate between
                 // devices and recover from database corruption
-                return removePlaylistMembers(playlistUri, extras);
+                int numOfRemovedPlaylistMembers = removePlaylistMembers(playlistUri, extras);
+                if (numOfRemovedPlaylistMembers > 0) {
+                    acceptWithExpansion(helper::notifyDelete, volumeName, playlistId,
+                            FileColumns.MEDIA_TYPE_PLAYLIST, false);
+                }
+                return numOfRemovedPlaylistMembers;
             }
         }
 
-        final DatabaseHelper helper = getDatabaseForUri(uri);
         final SQLiteQueryBuilder qb = getQueryBuilder(TYPE_DELETE, match, uri, extras, null);
 
         {
@@ -4379,24 +4835,6 @@
                             if (isDownload == 1) {
                                 deletedDownloadIds.put(id, mimeType);
                             }
-
-                            // Update any playlists that reference this item
-                            if ((mediaType == FileColumns.MEDIA_TYPE_AUDIO)
-                                    && helper.isExternal()) {
-                                helper.runWithTransaction((db) -> {
-                                    try (Cursor cc = db.query("audio_playlists_map",
-                                            new String[] { "playlist_id" }, "audio_id=" + id,
-                                            null, "playlist_id", null, null)) {
-                                        while (cc.moveToNext()) {
-                                            final Uri playlistUri = ContentUris.withAppendedId(
-                                                    Playlists.getContentUri(volumeName),
-                                                    cc.getLong(0));
-                                            resolvePlaylistMembers(playlistUri);
-                                        }
-                                    }
-                                    return null;
-                                });
-                            }
                         }
                     } finally {
                         FileUtils.closeQuietly(c);
@@ -4669,9 +5107,17 @@
                 case IMAGES_MEDIA_ID:
                 case AUDIO_MEDIA_ID:
                 case VIDEO_MEDIA_ID:
+                case AUDIO_PLAYLISTS_ID:
                     // Caller is requesting a specific media item by its ID,
                     // which means it's valid for requests
                     break;
+                case FILES_ID:
+                    // Allow only subtitle files
+                    if (!isSubtitleFile(uri)) {
+                        throw new IllegalArgumentException(
+                                "All requested items must be Media items");
+                    }
+                    break;
                 default:
                     throw new IllegalArgumentException(
                             "All requested items must be referenced by specific ID");
@@ -4710,6 +5156,19 @@
     }
 
     /**
+     * @return true if the given Files uri has media_type=MEDIA_TYPE_SUBTITLE
+     */
+    private boolean isSubtitleFile(Uri uri) {
+        try (Cursor cursor = queryForSingleItem(uri, new String[]{FileColumns.MEDIA_TYPE}, null,
+                null, null)) {
+            return cursor.getInt(0) == FileColumns.MEDIA_TYPE_SUBTITLE;
+        } catch (FileNotFoundException e) {
+            Log.e(TAG, "Couldn't find database row for requested uri " + uri, e);
+        }
+        return false;
+    }
+
+    /**
      * Ensure that all local databases have a custom collator registered for the
      * given {@link ULocale} locale.
      *
@@ -5010,6 +5469,7 @@
         final int targetSdkVersion = getCallingPackageTargetSdkVersion();
         final boolean allowHidden = isCallingPackageAllowedHidden();
         final int match = matchUri(uri, allowHidden);
+        final DatabaseHelper helper = getDatabaseForUri(uri);
 
         switch (match) {
             case AUDIO_PLAYLISTS_ID_MEMBERS_ID:
@@ -5020,7 +5480,6 @@
                 final long playlistId = Long.parseLong(uri.getPathSegments().get(3));
                 final Uri playlistUri = ContentUris.withAppendedId(
                         MediaStore.Audio.Playlists.getContentUri(volumeName), playlistId);
-
                 if (uri.getBooleanQueryParameter("move", false)) {
                     // Convert explicit request into query; sigh, moveItem()
                     // uses zero-based indexing instead of one-based indexing
@@ -5052,11 +5511,13 @@
                     values.put(Playlists.Members.PLAY_ORDER, (index + 1));
                     addPlaylistMembers(playlistUri, values);
                 }
+
+                acceptWithExpansion(helper::notifyUpdate, volumeName, playlistId,
+                        FileColumns.MEDIA_TYPE_PLAYLIST, false);
                 return 1;
             }
         }
 
-        final DatabaseHelper helper = getDatabaseForUri(uri);
         final SQLiteQueryBuilder qb = getQueryBuilder(TYPE_UPDATE, match, uri, extras, null);
 
         // Give callers interacting with a specific media item a chance to
@@ -5291,7 +5752,22 @@
                 initialValues.remove(MediaColumns.DATA);
                 ensureUniqueFileColumns(match, uri, extras, initialValues, beforePath);
 
-                final String afterPath = initialValues.getAsString(MediaColumns.DATA);
+                String afterPath = initialValues.getAsString(MediaColumns.DATA);
+
+                if (isCrossUserEnabled()) {
+                    String afterVolume = extractVolumeName(afterPath);
+                    String afterVolumePath =  extractVolumePath(afterPath);
+                    String beforeVolumePath = extractVolumePath(beforePath);
+
+                    if (MediaStore.VOLUME_EXTERNAL_PRIMARY.equals(beforeVolume)
+                            && beforeVolume.equals(afterVolume)
+                            && !beforeVolumePath.equals(afterVolumePath)) {
+                        // On cross-user enabled devices, it can happen that a rename intended as
+                        // /storage/emulated/999/foo -> /storage/emulated/999/foo can end up as
+                        // /storage/emulated/999/foo -> /storage/emulated/0/foo. We now fix-up
+                        afterPath = afterPath.replaceFirst(afterVolumePath, beforeVolumePath);
+                    }
+                }
 
                 Log.d(TAG, "Moving " + beforePath + " to " + afterPath);
                 try {
@@ -5396,14 +5872,17 @@
                         try (Cursor c = queryForSingleItem(updatedUri,
                                 new String[] { FileColumns.DATA }, null, null, null)) {
                             final File file = new File(c.getString(0));
-                            helper.postBlocking(() -> {
-                                final LocalCallingIdentity tokenInner = clearLocalCallingIdentity();
-                                try {
-                                    mMediaScanner.scanFile(file, REASON_DEMAND);
-                                } finally {
-                                    restoreLocalCallingIdentity(tokenInner);
-                                }
-                            });
+                            boolean runScanFileInBackground =
+                                    extras.getBoolean(MediaStore.QUERY_ARG_DO_ASYNC_SCAN, false);
+                            if (runScanFileInBackground) {
+                                helper.postBackground(() -> {
+                                    scanFileAsMediaProvider(file, REASON_DEMAND);
+                                });
+                            } else {
+                                helper.postBlocking(() -> {
+                                    scanFileAsMediaProvider(file, REASON_DEMAND);
+                                });
+                            }
                         } catch (Exception e) {
                             Log.w(TAG, "Failed to update metadata for " + updatedUri, e);
                         }
@@ -5502,8 +5981,8 @@
             @NonNull SQLiteDatabase db) {
         try {
             // Refresh playlist members based on what we parse from disk
-            final String volumeName = getVolumeName(playlistUri);
             final long playlistId = ContentUris.parseId(playlistUri);
+            final Map<String, Long> membersMap = getAllPlaylistMembers(playlistId);
             db.delete("audio_playlists_map", "playlist_id=" + playlistId, null);
 
             final Path playlistPath = queryForDataFile(playlistUri, null).toPath();
@@ -5514,7 +5993,7 @@
             for (int i = 0; i < members.size(); i++) {
                 try {
                     final Path audioPath = playlistPath.getParent().resolve(members.get(i));
-                    final long audioId = queryForPlaylistMember(volumeName, audioPath);
+                    final long audioId = queryForPlaylistMember(audioPath, membersMap);
 
                     final ContentValues values = new ContentValues();
                     values.put(Playlists.Members.PLAY_ORDER, i + 1);
@@ -5530,18 +6009,42 @@
         }
     }
 
+    private Map<String, Long> getAllPlaylistMembers(long playlistId) {
+        final Map<String, Long> membersMap = new ArrayMap<>();
+
+        final Uri uri = Playlists.Members.getContentUri(MediaStore.VOLUME_EXTERNAL, playlistId);
+        final String[] projection = new String[] {
+                Playlists.Members.DATA,
+                Playlists.Members.AUDIO_ID
+        };
+        try (Cursor c = query(uri, projection, null, null)) {
+            if (c == null) {
+                Log.e(TAG, "Cursor is null, failed to create cached playlist member info.");
+                return membersMap;
+            }
+            while (c.moveToNext()) {
+                membersMap.put(c.getString(0), c.getLong(1));
+            }
+        }
+        return membersMap;
+    }
+
     /**
      * Make two attempts to query this playlist member: first based on the exact
      * path, and if that fails, fall back to picking a single item matching the
      * display name. When there are multiple items with the same display name,
      * we can't resolve between them, and leave this member unresolved.
      */
-    private long queryForPlaylistMember(@NonNull String volumeName, @NonNull Path path)
+    private long queryForPlaylistMember(@NonNull Path path, @NonNull Map<String, Long> membersMap)
             throws IOException {
-        final Uri audioUri = Audio.Media.getContentUri(volumeName);
+        final String data = path.toFile().getCanonicalPath();
+        if (membersMap.containsKey(data)) {
+            return membersMap.get(data);
+        }
+        final Uri audioUri = Audio.Media.getContentUri(MediaStore.VOLUME_EXTERNAL);
         try (Cursor c = queryForSingleItem(audioUri,
                 new String[] { BaseColumns._ID }, MediaColumns.DATA + "=?",
-                new String[] { path.toFile().getCanonicalPath() }, null)) {
+                new String[] { data }, null)) {
             return c.getLong(0);
         } catch (FileNotFoundException ignored) {
         }
@@ -5562,7 +6065,9 @@
     private long addPlaylistMembers(@NonNull Uri playlistUri, @NonNull ContentValues values)
             throws FallbackException {
         final long audioId = values.getAsLong(Audio.Playlists.Members.AUDIO_ID);
-        final Uri audioUri = Audio.Media.getContentUri(getVolumeName(playlistUri), audioId);
+        final String audioVolumeName = MediaStore.VOLUME_INTERNAL.equals(getVolumeName(playlistUri))
+                ? MediaStore.VOLUME_INTERNAL : MediaStore.VOLUME_EXTERNAL;
+        final Uri audioUri = Audio.Media.getContentUri(audioVolumeName, audioId);
 
         Integer playOrder = values.getAsInteger(Playlists.Members.PLAY_ORDER);
         playOrder = (playOrder != null) ? (playOrder - 1) : Integer.MAX_VALUE;
@@ -5576,6 +6081,7 @@
             playOrder = playlist.add(playOrder,
                     playlistFile.toPath().getParent().relativize(audioFile.toPath()));
             playlist.write(playlistFile);
+            invalidateFuseDentry(playlistFile);
 
             resolvePlaylistMembers(playlistUri);
 
@@ -5593,6 +6099,39 @@
         }
     }
 
+    private int addPlaylistMembers(@NonNull Uri playlistUri, @NonNull ContentValues[] initialValues)
+            throws FallbackException {
+        final String volumeName = getVolumeName(playlistUri);
+        final String audioVolumeName =
+                MediaStore.VOLUME_INTERNAL.equals(volumeName)
+                        ? MediaStore.VOLUME_INTERNAL : MediaStore.VOLUME_EXTERNAL;
+
+        try {
+            final File playlistFile = queryForDataFile(playlistUri, null);
+            final Playlist playlist = new Playlist();
+            playlist.read(playlistFile);
+
+            for (ContentValues values : initialValues) {
+                final long audioId = values.getAsLong(Audio.Playlists.Members.AUDIO_ID);
+                final Uri audioUri = Audio.Media.getContentUri(audioVolumeName, audioId);
+                final File audioFile = queryForDataFile(audioUri, null);
+
+                Integer playOrder = values.getAsInteger(Playlists.Members.PLAY_ORDER);
+                playOrder = (playOrder != null) ? (playOrder - 1) : Integer.MAX_VALUE;
+                playlist.add(playOrder,
+                        playlistFile.toPath().getParent().relativize(audioFile.toPath()));
+            }
+            playlist.write(playlistFile);
+
+            resolvePlaylistMembers(playlistUri);
+        } catch (IOException e) {
+            throw new FallbackException("Failed to update playlist", e,
+                    android.os.Build.VERSION_CODES.R);
+        }
+
+        return initialValues.length;
+    }
+
     /**
      * Move an audio item within the given playlist.
      */
@@ -5611,6 +6150,7 @@
             playlist.read(playlistFile);
             final int finalIndex = playlist.move(fromIndex, toIndex);
             playlist.write(playlistFile);
+            invalidateFuseDentry(playlistFile);
 
             resolvePlaylistMembers(playlistUri);
             return finalIndex;
@@ -5621,25 +6161,26 @@
     }
 
     /**
-     * Remove an audio item from the given playlist.
+     * Removes an audio item or multiple audio items(if targetSDK<R) from the given playlist.
      */
     private int removePlaylistMembers(@NonNull Uri playlistUri, @NonNull Bundle queryArgs)
             throws FallbackException {
-        final int index = resolvePlaylistIndex(playlistUri, queryArgs);
+        final int[] indexes = resolvePlaylistIndexes(playlistUri, queryArgs);
         try {
             final File playlistFile = queryForDataFile(playlistUri, null);
 
             final Playlist playlist = new Playlist();
             playlist.read(playlistFile);
             final int count;
-            if (index == -1) {
-                count = playlist.asList().size();
-                playlist.clear();
+            if (indexes.length == 0) {
+                // This means either no playlist members match the query or VolumeNotFoundException
+                // was thrown. So we don't have anything to delete.
+                count = 0;
             } else {
-                count = 1;
-                playlist.remove(index);
+                count = playlist.removeMultiple(indexes);
             }
             playlist.write(playlistFile);
+            invalidateFuseDentry(playlistFile);
 
             resolvePlaylistMembers(playlistUri);
             return count;
@@ -5650,10 +6191,37 @@
     }
 
     /**
-     * Resolve query arguments that are designed to select a specific playlist
-     * item using its {@link Playlists.Members#PLAY_ORDER}.
+     * Remove an audio item from the given playlist since the playlist file or the audio file is
+     * already removed.
      */
-    private int resolvePlaylistIndex(@NonNull Uri playlistUri, @NonNull Bundle queryArgs) {
+    private void removePlaylistMembers(int mediaType, long id) {
+        final DatabaseHelper helper;
+        try {
+            helper = getDatabaseForUri(Audio.Media.EXTERNAL_CONTENT_URI);
+        } catch (VolumeNotFoundException e) {
+            Log.w(TAG, e);
+            return;
+        }
+
+        helper.runWithTransaction((db) -> {
+            final String where;
+            if (mediaType == FileColumns.MEDIA_TYPE_PLAYLIST) {
+                where = "playlist_id=?";
+            } else {
+                where = "audio_id=?";
+            }
+            db.delete("audio_playlists_map", where, new String[] { "" + id });
+            return null;
+        });
+    }
+
+    /**
+     * Resolve query arguments that are designed to select specific playlist
+     * items using the playlist's {@link Playlists.Members#PLAY_ORDER}.
+     *
+     * @return an array of the indexes that match the query.
+     */
+    private int[] resolvePlaylistIndexes(@NonNull Uri playlistUri, @NonNull Bundle queryArgs) {
         final Uri membersUri = Playlists.Members.getContentUri(
                 getVolumeName(playlistUri), ContentUris.parseId(playlistUri));
 
@@ -5664,33 +6232,57 @@
             qb = getQueryBuilder(TYPE_DELETE, AUDIO_PLAYLISTS_ID_MEMBERS,
                     membersUri, queryArgs, null);
         } catch (VolumeNotFoundException ignored) {
-            return -1;
+            return new int[0];
         }
 
         try (Cursor c = qb.query(helper,
                 new String[] { Playlists.Members.PLAY_ORDER }, queryArgs, null)) {
-            if ((c.getCount() == 1) && c.moveToFirst()) {
-                return c.getInt(0) - 1;
+            if ((c.getCount() >= 1) && c.moveToFirst()) {
+                int size = c.getCount();
+                int[] res = new int[size];
+                for (int i = 0; i < size; ++i) {
+                    res[i] = c.getInt(0) - 1;
+                    c.moveToNext();
+                }
+                return res;
             } else {
-                return -1;
+                // Cursor size is 0
+                return new int[0];
             }
         }
     }
 
+    /**
+     * Resolve query arguments that are designed to select a specific playlist
+     * item using its {@link Playlists.Members#PLAY_ORDER}.
+     *
+     * @return if there's only 1 item that matches the query, returns its index. Returns -1
+     * otherwise.
+     */
+    private int resolvePlaylistIndex(@NonNull Uri playlistUri, @NonNull Bundle queryArgs) {
+        int[] indexes = resolvePlaylistIndexes(playlistUri, queryArgs);
+        if (indexes.length == 1) {
+            return indexes[0];
+        }
+        return -1;
+    }
+
     @Override
     public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
-        return openFileCommon(uri, mode, null);
+        return openFileCommon(uri, mode, /*signal*/ null, /*opts*/ null);
     }
 
     @Override
     public ParcelFileDescriptor openFile(Uri uri, String mode, CancellationSignal signal)
             throws FileNotFoundException {
-        return openFileCommon(uri, mode, signal);
+        return openFileCommon(uri, mode, signal, /*opts*/ null);
     }
 
-    private ParcelFileDescriptor openFileCommon(Uri uri, String mode, CancellationSignal signal)
+    private ParcelFileDescriptor openFileCommon(Uri uri, String mode, CancellationSignal signal,
+            @Nullable Bundle opts)
             throws FileNotFoundException {
         uri = safeUncanonicalize(uri);
+        opts = opts == null ? new Bundle() : opts;
 
         final boolean allowHidden = isCallingPackageAllowedHidden();
         final int match = matchUri(uri, allowHidden);
@@ -5724,7 +6316,7 @@
             }
         }
 
-        return openFileAndEnforcePathPermissionsHelper(uri, match, mode, signal);
+        return openFileAndEnforcePathPermissionsHelper(uri, match, mode, signal, opts);
     }
 
     @Override
@@ -5754,7 +6346,7 @@
         }
 
         // Worst case, return the underlying file
-        return new AssetFileDescriptor(openFileCommon(uri, "r", signal), 0,
+        return new AssetFileDescriptor(openFileCommon(uri, "r", signal, opts), 0,
                 AssetFileDescriptor.UNKNOWN_LENGTH);
     }
 
@@ -5919,7 +6511,7 @@
     Cursor queryForSingleItem(Uri uri, String[] projection, String selection,
             String[] selectionArgs, CancellationSignal signal) throws FileNotFoundException {
         final Cursor c = query(uri, projection,
-                DatabaseUtils.createSqlQueryBundle(selection, selectionArgs, null), signal);
+                DatabaseUtils.createSqlQueryBundle(selection, selectionArgs, null), signal, true);
         if (c == null) {
             throw new FileNotFoundException("Missing cursor for " + uri);
         } else if (c.getCount() < 1) {
@@ -5958,6 +6550,23 @@
         return new File(filePath);
     }
 
+    private ParcelFileDescriptor openWithTranscode(String filePath, int uid, int modeBits)
+            throws FileNotFoundException {
+        String transcodePath = mTranscodeHelper.getIoPath(filePath, uid);
+        File transcodeFile = new File(transcodePath);
+
+        if (mTranscodeHelper.isTranscodeFileCached(filePath, transcodePath)) {
+            Log.d(TAG, "Using FUSE with transcode cache for " + filePath + " Uid: " + uid);
+            return FileUtils.openSafely(getFuseFile(transcodeFile), modeBits);
+        } else if (mTranscodeHelper.transcode(filePath, transcodePath, uid)) {
+            // TODO(b/174655855): We should transcode lazily and just return the opened fd here
+            Log.d(TAG, "Using FUSE with transcode for " + filePath + " Uid: " + uid);
+            return FileUtils.openSafely(getFuseFile(transcodeFile), modeBits);
+        } else {
+            throw new FileNotFoundException("Failed to transcode " + filePath);
+        }
+    }
+
     private @NonNull FuseDaemon getFuseDaemonForFile(@NonNull File file)
             throws FileNotFoundException {
         final FuseDaemon daemon = ExternalStorageServiceImpl.getFuseDaemon(getVolumeId(file));
@@ -5996,7 +6605,8 @@
      * a "/mnt/user" path.
      */
     private ParcelFileDescriptor openFileAndEnforcePathPermissionsHelper(Uri uri, int match,
-            String mode, CancellationSignal signal) throws FileNotFoundException {
+            String mode, CancellationSignal signal, @NonNull Bundle opts)
+            throws FileNotFoundException {
         int modeBits = ParcelFileDescriptor.parseMode(mode);
         boolean forWrite = (modeBits & ParcelFileDescriptor.MODE_WRITE_ONLY) != 0;
         if (forWrite) {
@@ -6085,33 +6695,30 @@
             // First, handle any redaction that is needed for caller
             final ParcelFileDescriptor pfd;
             final String filePath = file.getPath();
+            final int uid = Binder.getCallingUid();
+            boolean shouldTranscode = mTranscodeHelper.shouldTranscode(filePath, uid, opts);
             if (redactionInfo.redactionRanges.length > 0) {
-                if (SystemProperties.getBoolean(PROP_FUSE, false)) {
-                    // If fuse is enabled, we can provide an fd that points to the fuse
-                    // file system and handle redaction in the fuse handler when the caller reads.
-                    Log.i(TAG, "Redacting with new FUSE for " + filePath);
-                    long tid = android.os.Process.myTid();
-                    synchronized (mShouldRedactThreadIds) {
-                        mShouldRedactThreadIds.add(tid);
-                    }
-                    try {
-                        pfd = FileUtils.openSafely(getFuseFile(file), modeBits);
-                    } finally {
-                        synchronized (mShouldRedactThreadIds) {
-                            mShouldRedactThreadIds.remove(mShouldRedactThreadIds.indexOf(tid));
-                        }
-                    }
-                } else {
-                    // TODO(b/135341978): Remove this and associated code
-                    // when fuse is on by default.
-                    Log.i(TAG, "Redacting with old FUSE for " + filePath);
-                    pfd = RedactingFileDescriptor.open(
-                            getContext(),
-                            file,
-                            modeBits,
-                            redactionInfo.redactionRanges,
-                            redactionInfo.freeOffsets);
+                // If fuse is enabled, we can provide an fd that points to the fuse
+                // file system and handle redaction in the fuse handler when the caller reads.
+                Log.i(TAG, "Redacting with new FUSE for " + filePath + ". Uid: " + uid);
+                long tid = android.os.Process.myTid();
+                synchronized (mShouldRedactThreadIds) {
+                    mShouldRedactThreadIds.add(tid);
                 }
+
+                try {
+                    if (shouldTranscode) {
+                        pfd = openWithTranscode(filePath, uid, modeBits);
+                    } else {
+                        pfd = FileUtils.openSafely(getFuseFile(file), modeBits);
+                    }
+                } finally {
+                    synchronized (mShouldRedactThreadIds) {
+                        mShouldRedactThreadIds.remove(mShouldRedactThreadIds.indexOf(tid));
+                    }
+                }
+            } else if (shouldTranscode) {
+                pfd = openWithTranscode(filePath, uid, modeBits);
             } else {
                 FuseDaemon daemon = null;
                 try {
@@ -6124,12 +6731,12 @@
                 boolean shouldOpenWithFuse = daemon != null
                         && daemon.shouldOpenWithFuse(filePath, true /* forRead */, lowerFsFd.getFd());
 
-                if (SystemProperties.getBoolean(PROP_FUSE, false) && shouldOpenWithFuse) {
+                if (shouldOpenWithFuse) {
                     // If the file is already opened on the FUSE mount with VFS caching enabled
                     // we return an upper filesystem fd (via FUSE) to avoid file corruption
                     // resulting from cache inconsistencies between the upper and lower
                     // filesystem caches
-                    Log.w(TAG, "Using FUSE for " + filePath);
+                    Log.w(TAG, "Using FUSE for " + filePath + ". Uid: " + uid);
                     pfd = FileUtils.openSafely(getFuseFile(file), modeBits);
                     try {
                         lowerFsFd.close();
@@ -6137,7 +6744,7 @@
                         Log.w(TAG, "Failed to close lower filesystem fd " + file.getPath(), e);
                     }
                 } else {
-                    Log.i(TAG, "Using lower FS for " + filePath);
+                    Log.i(TAG, "Using lower FS for " + filePath + ". Uid: " + uid);
                     if (forWrite) {
                         // When opening for write on the lower filesystem, invalidate the VFS dentry
                         // so subsequent open/getattr calls will return correctly.
@@ -6243,7 +6850,7 @@
      * <li>the calling identity is an app targeting Q or older versions AND is requesting legacy
      * storage
      * <li>the calling identity holds {@code MANAGE_EXTERNAL_STORAGE}
-     * <li>the calling identity owns filePath (eg /Android/data/com.foo)
+     * <li>the calling identity owns or has access to the filePath (eg /Android/data/com.foo)
      * <li>the calling identity has permission to write images and the given file is an image file
      * <li>the calling identity has permission to write video and the given file is an video file
      * </ul>
@@ -6259,9 +6866,8 @@
             return true;
         }
 
-        // Files under the apps own private directory
-        final String appSpecificDir = extractPathOwnerPackageName(filePath);
-        if (appSpecificDir != null && isCallingIdentitySharedPackageName(appSpecificDir)) {
+        // Check if the caller has access to private app directories.
+        if (isUidAllowedAccessToDataOrObbPathForFuse(mCallingIdentity.get().uid, filePath)) {
             return true;
         }
 
@@ -6276,9 +6882,10 @@
 
     /**
      * Returns true if the passed in path is an application-private data directory
-     * (such as Android/data/com.foo or Android/obb/com.foo) that does not belong to the caller.
+     * (such as Android/data/com.foo or Android/obb/com.foo) that does not belong to the caller and
+     * the caller does not have special access.
      */
-    private boolean isPrivatePackagePathNotOwnedByCaller(String path) {
+    private boolean isPrivatePackagePathNotAccessibleByCaller(String path) {
         // Files under the apps own private directory
         final String appSpecificDir = extractPathOwnerPackageName(path);
 
@@ -6292,27 +6899,36 @@
         if (relativePath.startsWith("Android/media")) {
             return false;
         }
-
-        // This is a private-package path; return true if not owned by the caller
-        return !isCallingIdentitySharedPackageName(appSpecificDir);
+        return !isUidAllowedAccessToDataOrObbPathForFuse(mCallingIdentity.get().uid, path);
     }
 
-    private boolean shouldBypassDatabaseForFuse(int uid) {
-        final LocalCallingIdentity token =
-                clearLocalCallingIdentity(getCachedCallingIdentityForFuse(uid));
-        try {
-            if (uid != android.os.Process.SHELL_UID && isCallingPackageManager()) {
-                return true;
-            }
+    private boolean shouldBypassDatabaseAndSetDirtyForFuse(int uid, String path) {
+        boolean shouldBypass = false;
+        if (uid != android.os.Process.SHELL_UID && isCallingPackageManager()) {
+            shouldBypass = true;
+        } else if (isCallingPackageLegacyWrite() && isCallingPackageSystemGallery()) {
             // We bypass db operations for legacy system galleries with W_E_S (see b/167307393).
             // Tracking a longer term solution in b/168784136.
-            if (isCallingPackageLegacyWrite() && isCallingPackageSystemGallery()) {
-                return true;
-            }
-            return false;
-        } finally {
-            restoreLocalCallingIdentity(token);
+            shouldBypass = true;
         }
+
+        if (shouldBypass) {
+            synchronized (mNonHiddenPaths) {
+                File file = new File(path);
+                String key = file.getParent();
+                boolean maybeHidden = !mNonHiddenPaths.containsKey(key);
+
+                if (maybeHidden) {
+                    File topNoMediaDir = FileUtils.getTopLevelNoMedia(new File(path));
+                    if (topNoMediaDir == null) {
+                        mNonHiddenPaths.put(key, 0);
+                    } else {
+                        mMediaScanner.onDirectoryDirty(topNoMediaDir);
+                    }
+                }
+            }
+        }
+        return shouldBypass;
     }
 
     /**
@@ -6374,6 +6990,19 @@
         }
     }
 
+    private static class LRUCache<K, V> extends LinkedHashMap<K, V> {
+        private final int mMaxSize;
+
+        public LRUCache(int maxSize) {
+            this.mMaxSize = maxSize;
+        }
+
+        @Override
+        protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
+            return size() > mMaxSize;
+        }
+    }
+
     /**
      * Calculates the ranges that need to be redacted for the given file and user that wants to
      * access the file.
@@ -6389,8 +7018,13 @@
      */
     @Keep
     @NonNull
-    public long[] getRedactionRangesForFuse(String path, int uid, int tid) throws IOException {
-        final File file = new File(path);
+    public long[] getRedactionRangesForFuse(String path, String ioPath, int uid, int tid)
+            throws IOException {
+        // |ioPath| might refer to a transcoded file path (which is not indexed in the db)
+        // |path| will always refer to a valid _data column
+        // We use |ioPath| for the filesystem access because in the case of transcoding,
+        // we want to get redaction ranges from the transcoded file and *not* the original file
+        final File file = new File(ioPath);
 
         // When we're calculating redaction ranges for MediaProvider, it means we're actually
         // calculating redaction ranges for another app that called to MediaProvider through Binder.
@@ -6409,12 +7043,10 @@
 
         final LocalCallingIdentity token =
                 clearLocalCallingIdentity(getCachedCallingIdentityForFuse(uid));
-
-        long[] res = new long[0];
         try {
             if (!isRedactionNeeded()
                     || shouldBypassFuseRestrictions(/*forWrite*/ false, path)) {
-                return res;
+                return new long[0];
             }
 
             final Uri contentUri = FileUtils.getContentUriForPath(path);
@@ -6440,17 +7072,21 @@
 
             final boolean callerIsOwner = Objects.equals(getCallingPackageOrSelf(),
                     ownerPackageName);
+            if (callerIsOwner) {
+                return new long[0];
+            }
+
             final boolean callerHasUriPermission = getContext().checkUriPermission(
                     item, mCallingIdentity.get().pid, mCallingIdentity.get().uid,
                     Intent.FLAG_GRANT_WRITE_URI_PERMISSION) == PERMISSION_GRANTED;
-
-            if (!callerIsOwner && !callerHasUriPermission) {
-                res = getRedactionRanges(file).redactionRanges;
+            if (callerHasUriPermission) {
+                return new long[0];
             }
+
+            return getRedactionRanges(file).redactionRanges;
         } finally {
             restoreLocalCallingIdentity(token);
         }
-        return res;
     }
 
     /**
@@ -6536,7 +7172,7 @@
                 clearLocalCallingIdentity(getCachedCallingIdentityForFuse(uid));
 
         try {
-            if (isPrivatePackagePathNotOwnedByCaller(path)) {
+            if (isPrivatePackagePathNotAccessibleByCaller(path)) {
                 Log.e(TAG, "Can't open a file in another app's external directory!");
                 return OsConstants.ENOENT;
             }
@@ -6581,7 +7217,7 @@
             //   couldn't return a valid db row, or,
             // * There is no db row corresponding to the requested path, which is more unlikely.
             // In both of these cases, it means that app doesn't have access permission to the file.
-            Log.e(TAG, "Couldn't find file: " + path);
+            Log.e(TAG, "Couldn't find file: " + path, e);
             return OsConstants.EACCES;
         } catch (IllegalStateException | SecurityException e) {
             Log.e(TAG, "Permission to access file: " + path + " is denied");
@@ -6612,7 +7248,12 @@
      */
     @NonNull
     private Uri getContentUriForFile(@NonNull String filePath, @NonNull String mimeType) {
-        final String volName = FileUtils.getVolumeName(getContext(), new File(filePath));
+        final String volName;
+        try {
+            volName = FileUtils.getVolumeName(getContext(), new File(filePath));
+        } catch (FileNotFoundException e) {
+            throw new IllegalStateException("Couldn't get volume name for " + filePath);
+        }
         Uri uri = Files.getContentUri(volName);
         final String topLevelDir = extractTopLevelDir(filePath);
         if (topLevelDir == null) {
@@ -6733,7 +7374,7 @@
                 clearLocalCallingIdentity(getCachedCallingIdentityForFuse(uid));
 
         try {
-            if (isPrivatePackagePathNotOwnedByCaller(path)) {
+            if (isPrivatePackagePathNotAccessibleByCaller(path)) {
                 Log.e(TAG, "Can't create a file in another app's external directory");
                 return OsConstants.ENOENT;
             }
@@ -6743,7 +7384,14 @@
                 return OsConstants.EPERM;
             }
 
-            if (shouldBypassDatabaseForFuse(uid)) {
+            if (shouldBypassDatabaseAndSetDirtyForFuse(uid, path)) {
+                if (path.endsWith("/.nomedia")) {
+                    File parent = new File(path).getParentFile();
+                    synchronized (mNonHiddenPaths) {
+                        mNonHiddenPaths.keySet().removeIf(
+                                k -> FileUtils.contains(parent, new File(k)));
+                    }
+                }
                 return 0;
             }
 
@@ -6850,12 +7498,12 @@
         final LocalCallingIdentity token =
                 clearLocalCallingIdentity(getCachedCallingIdentityForFuse(uid));
         try {
-            if (isPrivatePackagePathNotOwnedByCaller(path)) {
+            if (isPrivatePackagePathNotAccessibleByCaller(path)) {
                 Log.e(TAG, "Can't delete a file in another app's external directory!");
                 return OsConstants.ENOENT;
             }
 
-            if (shouldBypassDatabaseForFuse(uid)) {
+            if (shouldBypassDatabaseAndSetDirtyForFuse(uid, path)) {
                 return deleteFileUnchecked(path);
             }
 
@@ -6914,7 +7562,7 @@
 
         try {
             // App dirs are not indexed, so we don't create an entry for the file.
-            if (isPrivatePackagePathNotOwnedByCaller(path)) {
+            if (isPrivatePackagePathNotAccessibleByCaller(path)) {
                 Log.e(TAG, "Can't modify another app's external directory!");
                 return OsConstants.EACCES;
             }
@@ -6968,21 +7616,23 @@
             if ("/storage/emulated".equals(path)) {
                 return OsConstants.EPERM;
             }
-            if (isPrivatePackagePathNotOwnedByCaller(path)) {
+            if (isPrivatePackagePathNotAccessibleByCaller(path)) {
                 Log.e(TAG, "Can't access another app's external directory!");
                 return OsConstants.ENOENT;
             }
 
-            // Do not allow apps to open Android/data or Android/obb dirs. Installer and
-            // MOUNT_EXTERNAL_ANDROID_WRITABLE apps won't be blocked by this, as their OBB dirs
-            // are mounted to lowerfs directly.
-            if (isDataOrObbPath(path)) {
-                return OsConstants.EACCES;
-            }
-
             if (shouldBypassFuseRestrictions(forWrite, path)) {
                 return 0;
             }
+
+            // Do not allow apps to open Android/data or Android/obb dirs.
+            // On primary volumes, apps that get special access to these directories get it via
+            // mount views of lowerfs. On secondary volumes, such apps would return early from
+            // shouldBypassFuseRestrictions above (except for MTP apps b/174347304).
+            if (isDataOrObbPath(path)) {
+                return OsConstants.EACCES;
+            }
+
             // Legacy apps that made is this far don't have the right storage permission and hence
             // are not allowed to access anything other than their external app directory
             if (isCallingPackageRequestingLegacy()) {
@@ -7016,11 +7666,77 @@
     }
 
     @Keep
-    public boolean isUidForPackageForFuse(@NonNull String packageName, int uid) {
+    public boolean isUidAllowedAccessToDataOrObbPathForFuse(int uid, String path) {
         final LocalCallingIdentity token =
                 clearLocalCallingIdentity(getCachedCallingIdentityForFuse(uid));
         try {
-            return isCallingIdentitySharedPackageName(packageName);
+            // Files under the apps own private directory
+            final String appSpecificDir = extractPathOwnerPackageName(path);
+
+            if (appSpecificDir != null && isCallingIdentitySharedPackageName(appSpecificDir)) {
+                return true;
+            }
+            // This is a private-package path; return true if accessible by the caller
+            return isUidAllowedSpecialPrivatePathAccess(uid, path);
+        } finally {
+            restoreLocalCallingIdentity(token);
+        }
+    }
+
+    /**
+     * @return true iff the caller has installer privileges which gives write access to obb dirs.
+     * <p> Assumes that {@code mCallingIdentity} has been properly set to reflect the calling
+     * package.
+     */
+    private boolean isCallingIdentityAllowedInstallerAccess(int uid) {
+        final boolean hasWrite = mCallingIdentity.get().
+                hasPermission(PERMISSION_WRITE_EXTERNAL_STORAGE);
+
+        if (!hasWrite) {
+            return false;
+        }
+
+        // We're only willing to give out installer access if they also hold
+        // runtime permission; this is a firm CDD requirement
+        final boolean hasInstall = mCallingIdentity.get().
+                hasPermission(PERMISSION_INSTALL_PACKAGES);
+
+        if (hasInstall) {
+            return true;
+        }
+        // OPSTR_REQUEST_INSTALL_PACKAGES is granted/denied per package but vold can't
+        // update mountpoints of a specific package. So, check the appop for all packages
+        // sharing the uid and allow same level of storage access for all packages even if
+        // one of the packages has the appop granted.
+        // To maintain consistency of access in primary volume and secondary volumes use the same
+        // logic as we do for Zygote.MOUNT_EXTERNAL_INSTALLER view.
+        return mCallingIdentity.get().hasPermission(APPOP_REQUEST_INSTALL_PACKAGES_FOR_SHARED_UID);
+    }
+
+    private boolean isCallingIdentityDownloadProvider(int uid) {
+        return uid == mDownloadsAuthorityAppId;
+    }
+
+    private boolean isCallingIdentityExternalStorageProvider(int uid) {
+        return uid == mExternalStorageAuthorityAppId;
+    }
+
+    /**
+     * ExternalStorageProvider and DownloadProvider can access all private-app directories.
+     * Installer apps can only access private-app directories on Android/obb.
+     * TODO (b/174347304): Allow MTP apps special access.
+     *
+     * @param uid UID of the calling package
+     */
+    private boolean isUidAllowedSpecialPrivatePathAccess(int uid, String path) {
+        final LocalCallingIdentity token =
+            clearLocalCallingIdentity(getCachedCallingIdentityForFuse(uid));
+        try {
+            if (isCallingIdentityDownloadProvider(uid) ||
+                    isCallingIdentityExternalStorageProvider(uid)) {
+                return true;
+            }
+            return (isObbOrChildPath(path) && isCallingIdentityAllowedInstallerAccess(uid));
         } finally {
             restoreLocalCallingIdentity(token);
         }
@@ -7068,6 +7784,28 @@
         return FuseDaemon.native_is_fuse_thread();
     }
 
+    @VisibleForTesting
+    public boolean getBooleanDeviceConfig(String key, boolean defaultValue) {
+        final long token = Binder.clearCallingIdentity();
+        try {
+            return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_STORAGE_NATIVE_BOOT, key,
+                    defaultValue);
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
+    }
+
+    @VisibleForTesting
+    public String getStringDeviceConfig(String key, String defaultValue) {
+        final long token = Binder.clearCallingIdentity();
+        try {
+            return DeviceConfig.getString(DeviceConfig.NAMESPACE_STORAGE_NATIVE_BOOT, key,
+                    defaultValue);
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
+    }
+
     @Deprecated
     private boolean checkCallingPermissionAudio(boolean forWrite, String callingPackage) {
         if (forWrite) {
@@ -7141,7 +7879,8 @@
         // First, check to see if caller has direct write access
         if (forWrite) {
             final SQLiteQueryBuilder qb = getQueryBuilder(TYPE_UPDATE, table, uri, extras, null);
-            try (Cursor c = qb.query(helper, new String[0],
+            qb.allowRowidColumn();
+            try (Cursor c = qb.query(helper, new String[] { SQLiteQueryBuilder.ROWID_COLUMN },
                     null, null, null, null, null, null, null)) {
                 if (c.moveToFirst()) {
                     // Direct write access granted, yay!
@@ -7164,7 +7903,8 @@
 
         // Second, check to see if caller has direct read access
         final SQLiteQueryBuilder qb = getQueryBuilder(TYPE_QUERY, table, uri, extras, null);
-        try (Cursor c = qb.query(helper, new String[0],
+        qb.allowRowidColumn();
+        try (Cursor c = qb.query(helper, new String[] { SQLiteQueryBuilder.ROWID_COLUMN },
                 null, null, null, null, null, null, null)) {
             if (c.moveToFirst()) {
                 if (!forWrite) {
@@ -7317,6 +8057,15 @@
             }
         }
 
+        public int translateForBulkInsert(int targetSdkVersion) {
+            if (targetSdkVersion >= mThrowSdkVersion) {
+                throw new IllegalArgumentException(getMessage());
+            } else {
+                Log.w(TAG, getMessage());
+                return 0;
+            }
+        }
+
         public int translateForUpdateDelete(int targetSdkVersion) {
             if (targetSdkVersion >= mThrowSdkVersion) {
                 throw new IllegalArgumentException(getMessage());
@@ -7342,6 +8091,15 @@
         }
     }
 
+    /**
+     * Creating a new method for Transcoding to avoid any merge conflicts.
+     * TODO(b/170465810): Remove this when the code is refactored.
+     */
+    @NonNull DatabaseHelper getDatabaseForUriForTranscoding(Uri uri)
+            throws VolumeNotFoundException {
+        return getDatabaseForUri(uri);
+    }
+
     private @NonNull DatabaseHelper getDatabaseForUri(Uri uri) throws VolumeNotFoundException {
         final String volumeName = resolveVolumeName(uri);
         synchronized (mAttachedVolumeNames) {
@@ -7476,6 +8234,7 @@
 
     private DatabaseHelper mInternalDatabase;
     private DatabaseHelper mExternalDatabase;
+    private TranscodeHelper mTranscodeHelper;
 
     // name of the volume currently being scanned by the media scanner (or null)
     private String mMediaScannerVolume;
diff --git a/src/com/android/providers/media/PermissionActivity.java b/src/com/android/providers/media/PermissionActivity.java
index 0d721f9..95b5561 100644
--- a/src/com/android/providers/media/PermissionActivity.java
+++ b/src/com/android/providers/media/PermissionActivity.java
@@ -101,6 +101,8 @@
     private String volumeName;
     private ApplicationInfo appInfo;
 
+    private AlertDialog actionDialog;
+    private AsyncTask<Void, Void, Void> positiveActionTask;
     private ProgressDialog progressDialog;
     private TextView titleView;
 
@@ -124,6 +126,8 @@
     private static final int ORDER_AUDIO = 3;
     private static final int ORDER_GENERIC = 4;
 
+    private static final int MAX_THUMBS = 3;
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -151,6 +155,7 @@
         }
 
         progressDialog = new ProgressDialog(this);
+        progressDialog.setCancelable(false);
 
         // Favorite-related requests are automatically granted for now; we still
         // make developers go through this no-op dialog flow to preserve our
@@ -162,9 +167,9 @@
                 return;
             }
         }
-
         // Kick off async loading of description to show in dialog
         final View bodyView = getLayoutInflater().inflate(R.layout.permission_body, null, false);
+        handleImageViewVisibility(bodyView, uris);
         new DescriptionTask(bodyView).execute(uris);
 
         final CharSequence message = resolveMessageText();
@@ -181,16 +186,38 @@
         builder.setCancelable(false);
         builder.setView(bodyView);
 
-        final AlertDialog dialog = builder.show();
-        final WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
+        actionDialog = builder.show();
+        final WindowManager.LayoutParams params = actionDialog.getWindow().getAttributes();
         params.width = getResources().getDimensionPixelSize(R.dimen.permission_dialog_width);
-        dialog.getWindow().setAttributes(params);
+        actionDialog.getWindow().setAttributes(params);
 
         // Hunt around to find the title of our newly created dialog so we can
         // adjust accessibility focus once descriptions have been loaded
-        titleView = (TextView) findViewByPredicate(dialog.getWindow().getDecorView(), (view) -> {
-            return (view instanceof TextView) && view.isImportantForAccessibility();
-        });
+        titleView = (TextView) findViewByPredicate(actionDialog.getWindow().getDecorView(),
+                (view) -> {
+                    return (view instanceof TextView) && view.isImportantForAccessibility();
+                });
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        // Cancel and interrupt the AsyncTask of the positive action. This avoids
+        // calling the old activity during "onPostExecute", but the AsyncTask could
+        // still finish its background task. For now we are ok with:
+        // 1. the task potentially runs again after the configuration is changed
+        // 2. the task completed successfully, but the activity doesn't return
+        // the response.
+        if (positiveActionTask != null) {
+            positiveActionTask.cancel(true /* mayInterruptIfRunning */);
+        }
+        // Dismiss the dialogs to avoid the window is leaked
+        if (actionDialog != null) {
+            actionDialog.dismiss();
+        }
+        if (progressDialog != null) {
+            progressDialog.dismiss();
+        }
     }
 
     private void onPositiveAction(@Nullable DialogInterface dialog, int which) {
@@ -202,7 +229,7 @@
 
         progressDialog.show();
         final long startTime = System.currentTimeMillis();
-        new AsyncTask<Void, Void, Void>() {
+        positiveActionTask = new AsyncTask<Void, Void, Void>() {
             @Override
             protected Void doInBackground(Void... params) {
                 Log.d(TAG, "User allowed grant for " + uris);
@@ -245,6 +272,7 @@
                 } catch (Exception e) {
                     Log.w(TAG, e);
                 }
+
                 return null;
             }
 
@@ -297,6 +325,36 @@
         return keyCode == KeyEvent.KEYCODE_BACK;
     }
 
+    private void handleImageViewVisibility(View bodyView, List<Uri> uris) {
+        if (uris.isEmpty()) {
+            return;
+        }
+        if (uris.size() == 1) {
+            // Set visible to the thumb_full to avoid the size
+            // changed of the dialog in full decoding.
+            final ImageView thumbFull = bodyView.requireViewById(R.id.thumb_full);
+            thumbFull.setVisibility(View.VISIBLE);
+        } else {
+            // If the size equals 2, we will remove thumb1 later.
+            // Set visible to the thumb2 and thumb3 first to avoid
+            // the size changed of the dialog.
+            ImageView thumb = bodyView.requireViewById(R.id.thumb2);
+            thumb.setVisibility(View.VISIBLE);
+            thumb = bodyView.requireViewById(R.id.thumb3);
+            thumb.setVisibility(View.VISIBLE);
+            // If the count of thumbs equals to MAX_THUMBS, set visible to thumb1.
+            if (uris.size() == MAX_THUMBS) {
+                thumb = bodyView.requireViewById(R.id.thumb1);
+                thumb.setVisibility(View.VISIBLE);
+            } else if (uris.size() > MAX_THUMBS) {
+                // If the count is larger than MAX_THUMBS, set visible to
+                // thumb_more_container.
+                final View container = bodyView.requireViewById(R.id.thumb_more_container);
+                container.setVisibility(View.VISIBLE);
+            }
+        }
+    }
+
     /**
      * Resolve a label that represents the app denoted by given {@link ApplicationInfo}.
      */
@@ -444,8 +502,6 @@
      * displayed in the body of the dialog.
      */
     private class DescriptionTask extends AsyncTask<List<Uri>, Void, List<Description>> {
-        private static final int MAX_THUMBS = 3;
-
         private View bodyView;
         private Resources res;
 
@@ -470,29 +526,7 @@
 
             // If we're only asking for single item, load the full image
             if (uris.size() == 1) {
-                // Set visible to the thumb_full to avoid the size
-                // changed of the dialog in full decoding.
-                final ImageView thumbFull = bodyView.requireViewById(R.id.thumb_full);
-                thumbFull.setVisibility(View.VISIBLE);
                 loadFlags |= Description.LOAD_FULL;
-            } else {
-                // If the size equals 2, we will remove thumb1 later.
-                // Set visible to the thumb2 and thumb3 first to avoid
-                // the size changed of the dialog.
-                ImageView thumb = bodyView.requireViewById(R.id.thumb2);
-                thumb.setVisibility(View.VISIBLE);
-                thumb = bodyView.requireViewById(R.id.thumb3);
-                thumb.setVisibility(View.VISIBLE);
-                // If the count of thumbs equals to MAX_THUMBS, set visible to thumb1.
-                if (uris.size() == MAX_THUMBS) {
-                    thumb = bodyView.requireViewById(R.id.thumb1);
-                    thumb.setVisibility(View.VISIBLE);
-                } else if (uris.size() > MAX_THUMBS) {
-                    // If the count is larger than MAX_THUMBS, set visible to
-                    // thumb_more_container.
-                    final View container = bodyView.requireViewById(R.id.thumb_more_container);
-                    container.setVisibility(View.VISIBLE);
-                }
             }
 
             // Sort the uris in DATA_GENERIC case (Image, Video, Audio, Others)
@@ -631,6 +665,9 @@
         private void bindAsText(@NonNull List<Description> results) {
             final List<CharSequence> list = new ArrayList<>();
             for (int i = 0; i < results.size(); i++) {
+                if (TextUtils.isEmpty(results.get(i).contentDescription)) {
+                    continue;
+                }
                 list.add(results.get(i).contentDescription);
 
                 if (list.size() >= MAX_THUMBS && results.size() > list.size()) {
@@ -641,10 +678,11 @@
                     break;
                 }
             }
-
-            final TextView text = bodyView.requireViewById(R.id.list);
-            text.setText(TextUtils.join("\n", list));
-            text.setVisibility(View.VISIBLE);
+            if (!list.isEmpty()) {
+                final TextView text = bodyView.requireViewById(R.id.list);
+                text.setText(TextUtils.join("\n", list));
+                text.setVisibility(View.VISIBLE);
+            }
         }
     }
 
@@ -696,7 +734,9 @@
                 Log.w(TAG, e);
                 if (thumbnail == null && full == null) {
                     final String mimeType = resolver.getType(uri);
-                    mimeIcon = resolver.getTypeInfo(mimeType).getIcon();
+                    if (mimeType != null) {
+                        mimeIcon = resolver.getTypeInfo(mimeType).getIcon();
+                    }
                 }
             }
         }
diff --git a/src/com/android/providers/media/TranscodeHelper.java b/src/com/android/providers/media/TranscodeHelper.java
new file mode 100644
index 0000000..17e572a
--- /dev/null
+++ b/src/com/android/providers/media/TranscodeHelper.java
@@ -0,0 +1,978 @@
+/*
+ * Copyright (C) 2020 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.providers.media;
+
+import static android.provider.MediaStore.Files.FileColumns.TRANSCODE_COMPLETE;
+import static android.provider.MediaStore.Files.FileColumns.TRANSCODE_EMPTY;
+import static android.provider.MediaStore.MATCH_EXCLUDE;
+import static android.provider.MediaStore.QUERY_ARG_MATCH_PENDING;
+import static android.provider.MediaStore.QUERY_ARG_MATCH_TRASHED;
+
+import static com.android.providers.media.MediaProvider.VolumeNotFoundException;
+
+import android.annotation.IntRange;
+import android.annotation.LongDef;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.compat.CompatChanges;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.Disabled;
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.PackageManager.Property;
+import android.content.res.XmlResourceParser;
+import android.database.Cursor;
+import android.media.ApplicationMediaCapabilities;
+import android.media.MediaFeature;
+import android.media.MediaFormat;
+import android.media.MediaTranscodeManager;
+import android.media.MediaTranscodeManager.TranscodingSession;
+import android.media.MediaTranscodeManager.TranscodingRequest;
+import android.media.MediaTranscodeManager.TranscodingRequest.MediaFormatResolver;
+import android.media.MediaTranscodingException;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.Handler;
+import android.os.Process;
+import android.os.SystemProperties;
+import android.os.UserHandle;
+import android.provider.MediaStore;
+import android.provider.MediaStore.Files.FileColumns;
+import android.util.ArrayMap;
+import android.util.Log;
+import android.util.Pair;
+import android.util.SparseArray;
+
+import androidx.annotation.GuardedBy;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
+
+import com.android.providers.media.util.FileUtils;
+import com.android.providers.media.util.ForegroundThread;
+import com.android.providers.media.util.SQLiteQueryBuilder;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.RandomAccessFile;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Map;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class TranscodeHelper {
+    private static final String TAG = "TranscodeHelper";
+    private static final boolean DEBUG = SystemProperties.getBoolean("persist.sys.fuse.log", false);
+
+    // TODO(b/169327180): Move to ApplicationMediaCapabilities
+    private static final String MEDIA_CAPABILITIES_PROPERTY
+            = "android.media.PROPERTY_MEDIA_CAPABILITIES";
+
+    // Notice the pairing of the keys.When you change a DEVICE_CONFIG key, then please also change
+    // the corresponding SYS_PROP key too; and vice-versa.
+    // Keeping the whole strings separate for the ease of text search.
+    private static final String TRANSCODE_ENABLED_SYS_PROP_KEY =
+            "persist.sys.fuse.transcode_enabled";
+    private static final String TRANSCODE_ENABLED_DEVICE_CONFIG_KEY = "transcode_enabled";
+    private static final String TRANSCODE_DEFAULT_SYS_PROP_KEY =
+            "persist.sys.fuse.transcode_default";
+    private static final String TRANSCODE_DEFAULT_DEVICE_CONFIG_KEY = "transcode_default";
+    private static final String TRANSCODE_USER_CONTROL_SYS_PROP_KEY =
+            "persist.sys.fuse.transcode_user_control";
+    private static final String TRANSCODE_COMPAT_MANIFEST_KEY = "transcode_compat_manifest";
+
+    /**
+     * Force enable an app to support the HEVC media capability
+     *
+     * Apps should declare their supported media capabilities in their manifest but this flag can be
+     * used to force an app into supporting HEVC, hence avoiding transcoding while accessing media
+     * encoded in HEVC.
+     *
+     * Setting this flag will override any OS level defaults for apps. It is disabled by default,
+     * meaning that the OS defaults would take precedence.
+     *
+     * Setting this flag and {@code FORCE_DISABLE_HEVC_SUPPORT} is an undefined
+     * state and will result in the OS ignoring both flags.
+     */
+    @ChangeId
+    @Disabled
+    private static final long FORCE_ENABLE_HEVC_SUPPORT = 174228127L;
+
+    /**
+     * Force disable an app from supporting the HEVC media capability
+     *
+     * Apps should declare their supported media capabilities in their manifest but this flag can be
+     * used to force an app into not supporting HEVC, hence forcing transcoding while accessing
+     * media encoded in HEVC.
+     *
+     * Setting this flag will override any OS level defaults for apps. It is disabled by default,
+     * meaning that the OS defaults would take precedence.
+     *
+     * Setting this flag and {@code FORCE_ENABLE_HEVC_SUPPORT} is an undefined state
+     * and will result in the OS ignoring both flags.
+     */
+    @ChangeId
+    @Disabled
+    private static final long FORCE_DISABLE_HEVC_SUPPORT = 174227820L;
+
+    private static final long FLAG_HEVC = 1 << 0;
+    private static final long FLAG_SLOW_MOTION = 1 << 1;
+    private static final long FLAG_HDR_10 = 1 << 2;
+    private static final long FLAG_HDR_10_PLUS = 1 << 3;
+    private static final long FLAG_HDR_HLG = 1 << 4;
+    private static final long FLAG_HDR_DOLBY_VISION = 1 << 5;
+
+    @LongDef({
+            FLAG_HEVC,
+            FLAG_SLOW_MOTION,
+            FLAG_HDR_10,
+            FLAG_HDR_10_PLUS,
+            FLAG_HDR_HLG,
+            FLAG_HDR_DOLBY_VISION
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ApplicationMediaCapabilitiesFlags {
+    }
+
+    /** Coefficient to 'guess' how long a transcoding session might take */
+    private static final double TRANSCODING_TIMEOUT_COEFFICIENT = 2;
+    /** Coefficient to 'guess' how large a transcoded file might be */
+    private static final double TRANSCODING_SIZE_COEFFICIENT = 2;
+
+    /**
+     * Copied from MediaProvider.java
+     * TODO(b/170465810): Remove this when  getQueryBuilder code is refactored.
+     */
+    private static final int TYPE_QUERY = 0;
+    private static final int TYPE_UPDATE = 2;
+    private static final String DIRECTORY_CAMERA = "Camera";
+
+    private final Object mLock = new Object();
+    private final Context mContext;
+    private final MediaProvider mMediaProvider;
+    private final PackageManager mPackageManager;
+    private final MediaTranscodeManager mMediaTranscodeManager;
+    private final File mTranscodeDirectory;
+    @GuardedBy("mLock")
+    private final Map<String, TranscodingSession> mTranscodingSessions = new ArrayMap<>();
+    @GuardedBy("mLock")
+    private final SparseArray<CountDownLatch> mTranscodingLatches = new SparseArray<>();
+    private final TranscodeUiNotifier mTranscodingUiNotifier;
+    private final TranscodeMetrics mTranscodingMetrics;
+    @GuardedBy("mLock")
+    private final Map<String, Long> mAppCompatMediaCapabilities = new ArrayMap<>();
+
+    @GuardedBy("mLock")
+    private boolean mIsTranscodeEnabled;
+
+    private static final String[] TRANSCODE_CACHE_INFO_PROJECTION =
+            {FileColumns._ID, FileColumns._TRANSCODE_STATUS};
+    private static final String TRANSCODE_WHERE_CLAUSE =
+            FileColumns.DATA + "=?" + " and mime_type not like 'null'";
+
+    /**
+     * Never transcode for these packages.
+     * TODO(b/169327180): Replace this with allow list from server.
+     */
+    private static final String[] ALLOW_LIST = new String[]{
+            // TODO: Remove "com.google.android.apps.photos", after investigating issue.
+            "com.google.android.apps.photos"
+    };
+
+    public TranscodeHelper(Context context, MediaProvider mediaProvider) {
+        mContext = context;
+        mPackageManager = context.getPackageManager();
+        mMediaTranscodeManager = context.getSystemService(MediaTranscodeManager.class);
+        mMediaProvider = mediaProvider;
+        mTranscodeDirectory = new File("/storage/emulated/" + UserHandle.myUserId(),
+                DIRECTORY_TRANSCODE);
+        mTranscodeDirectory.mkdirs();
+        mTranscodingMetrics = new TranscodeMetrics();
+        mTranscodingUiNotifier = new TranscodeUiNotifier(context, mTranscodingMetrics);
+        mIsTranscodeEnabled = isTranscodeEnabled();
+
+        parseTranscodeCompatManifest();
+    }
+
+    /**
+     * Regex that matches path of transcode file. The regex only
+     * matches emulated volume, for files in other volumes we don't
+     * seamlessly transcode.
+     */
+    private static final Pattern PATTERN_TRANSCODE_PATH = Pattern.compile(
+            "(?i)^/storage/emulated/(?:[0-9]+)/\\.transcode/(?:\\d+)$");
+    private static final String DIRECTORY_TRANSCODE = ".transcode";
+
+    /**
+     * @return true if the file path matches transcode file path.
+     */
+    public static boolean isTranscodeFile(@NonNull String path) {
+        final Matcher matcher = PATTERN_TRANSCODE_PATH.matcher(path);
+        return matcher.matches();
+    }
+
+    @NonNull
+    public File getTranscodeDirectory() {
+        return mTranscodeDirectory;
+    }
+
+    /**
+     * @return transcode file's path for given {@code rowId}
+     */
+    @NonNull
+    public String getTranscodePath(long rowId) {
+        return new File(getTranscodeDirectory(), String.valueOf(rowId)).getAbsolutePath();
+    }
+
+    public boolean transcode(String src, String dst, int uid) {
+        TranscodingSession session = null;
+        CountDownLatch latch = null;
+
+        synchronized (mLock) {
+            session = mTranscodingSessions.get(src);
+            if (session == null) {
+                latch = new CountDownLatch(1);
+                try {
+                    session = enqueueTranscodingSession(src, dst, uid, latch);
+                } catch (MediaTranscodingException | FileNotFoundException |
+                        UnsupportedOperationException e) {
+                    throw new IllegalStateException(e);
+                }
+
+                mTranscodingLatches.put(session.getSessionId(), latch);
+                mTranscodingSessions.put(src, session);
+            } else {
+                latch = mTranscodingLatches.get(session.getSessionId());
+                if (latch == null) {
+                    throw new IllegalStateException("Expected latch for" + session);
+                }
+            }
+        }
+
+        boolean result = waitTranscodingResult(uid, src, session, latch);
+        if (result) {
+            updateTranscodeStatus(src, TRANSCODE_COMPLETE);
+        } else {
+            logEvent("Transcoding failed for " + src + ". session: ", session);
+            // Attempt to workaround media transcoding deadlock, b/165374867
+            // Cancelling a deadlocked session seems to unblock the transcoder
+            finishTranscodingResult(uid, src, session, latch);
+        }
+        return result;
+    }
+
+    public String getIoPath(String path, int uid) {
+        if (!shouldTranscode(path, uid, null /* bundle */)) {
+            return path;
+        }
+
+        Pair<Long, Integer> cacheInfo = getTranscodeCacheInfoFromDB(path);
+        final long rowId = cacheInfo.first;
+        if (rowId == -1) {
+            // No database row found, The file is pending/trashed or not added to database yet.
+            // Assuming that no transcoding needed.
+            return path;
+        }
+
+        int transcodeStatus = cacheInfo.second;
+        final String transcodePath = getTranscodePath(rowId);
+        final File transcodeFile = new File(transcodePath);
+
+        if (transcodeFile.exists()) {
+            return transcodePath;
+        }
+
+        if (transcodeStatus == TRANSCODE_COMPLETE) {
+            // The transcode file doesn't exist but db row is marked as TRANSCODE_COMPLETE,
+            // update db row to TRANSCODE_EMPTY so that cache state remains valid.
+            updateTranscodeStatus(path, TRANSCODE_EMPTY);
+        }
+
+        final File file = new File(path);
+        long maxFileSize = (long) (file.length() * 2);
+        getTranscodeDirectory().mkdirs();
+        try (RandomAccessFile raf = new RandomAccessFile(transcodeFile, "rw")) {
+            raf.setLength(maxFileSize);
+        } catch (IOException e) {
+            Log.e(TAG, "Failed to initialise transcoding for file " + path, e);
+            return path;
+        }
+
+        return transcodePath;
+    }
+
+    // TODO(b/173491972): Generalize to consider other file/app media capabilities beyond hevc
+    public boolean shouldTranscode(String path, int uid, Bundle bundle) {
+        boolean isTranscodeEnabled = isTranscodeEnabled();
+        updateConfigs(isTranscodeEnabled);
+
+        if (!isTranscodeEnabled) {
+            logVerbose("Transcode not enabled");
+            return false;
+        }
+        logVerbose("Checking shouldTranscode for: " + path + ". Uid: " + uid);
+
+        if (!supportsTranscode(path) || uid < Process.FIRST_APPLICATION_UID
+                || uid == Process.myUid()) {
+            logVerbose("Transcode not supported");
+            // Never transcode in any of these conditions
+            // 1. Path doesn't support transcode
+            // 2. Uid is from native process on device
+            // 3. Uid is ourselves, which can happen when we are opening a file via FUSE for
+            // redaction on behalf of another app via ContentResolver
+            return false;
+        }
+
+        // Transcode only if file needs transcoding
+        try (Cursor cursor = queryFileForTranscode(path,
+                new String[]{FileColumns._VIDEO_CODEC_TYPE})) {
+            if (cursor == null || !cursor.moveToNext()) {
+                logVerbose("Couldn't find database row");
+                return false;
+            }
+            if (!MediaFormat.MIMETYPE_VIDEO_HEVC.equalsIgnoreCase(cursor.getString(0))) {
+                logVerbose("File is not HEVC");
+                return false;
+            }
+        }
+
+        if (bundle != null) {
+            if (bundle.getBoolean(MediaStore.EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMAT, false)) {
+                logVerbose("Original format requested");
+                return false;
+            }
+
+            ApplicationMediaCapabilities capabilities =
+                    bundle.getParcelable(MediaStore.EXTRA_MEDIA_CAPABILITIES);
+            if (capabilities != null && capabilities.getSupportedVideoMimeTypes().contains(
+                    MediaFormat.MIMETYPE_VIDEO_HEVC)) {
+                logVerbose("Media capability requested matches original format");
+                return false;
+            }
+        }
+
+        // Check app-compat flags
+        boolean enableHevc = CompatChanges.isChangeEnabled(FORCE_ENABLE_HEVC_SUPPORT, uid);
+        boolean disableHevc = CompatChanges.isChangeEnabled(FORCE_DISABLE_HEVC_SUPPORT, uid);
+        if (enableHevc && disableHevc) {
+            Log.w(TAG, "Ignoring app compat flags: Set to simultaneously enable and disable "
+                    + "HEVC support for uid: " + uid);
+        } else if (enableHevc) {
+            logVerbose("App compat hevc support enabled");
+            return false;
+        } else if (disableHevc) {
+            logVerbose("App compat hevc support disabled");
+            return true;
+        }
+
+        // TODO(b/169327180): We should also check app's targetSDK version to verify if app still
+        // qualifies to be on these lists.
+        LocalCallingIdentity identity = mMediaProvider.getCachedCallingIdentityForTranscoding(uid);
+        final String[] callingPackages = identity.getSharedPackageNames();
+
+        // Check manifest supported packages and mAppCompatMediaCapabilities
+        // If we are here then the file supports HEVC, so we only check if the package is in the
+        // mAppCompatCapabilities.  If it's there, we will respect that value.
+        for (String callingPackage : callingPackages) {
+            if (checkManifestSupport(callingPackage, identity)) {
+                logVerbose("Manifest supports original format");
+                return false;
+            }
+
+            synchronized (mLock) {
+                if (mAppCompatMediaCapabilities.containsKey(callingPackage)) {
+                    boolean shouldTranscode = mAppCompatMediaCapabilities.get(callingPackage) == 0;
+                    if (shouldTranscode) {
+                        logVerbose("Compat manifest does not support original format");
+                    } else {
+                        logVerbose("Compat manifest supports original format");
+                    }
+                    return shouldTranscode;
+                }
+            }
+        }
+
+        boolean shouldTranscode = getBooleanProperty(TRANSCODE_DEFAULT_SYS_PROP_KEY,
+                TRANSCODE_DEFAULT_DEVICE_CONFIG_KEY, true /* defaultValue */);
+        if (shouldTranscode) {
+            logVerbose("Default behavior should transcode");
+        } else {
+            logVerbose("Default behavior should not transcode");
+        }
+        return shouldTranscode;
+    }
+
+    public boolean supportsTranscode(String path) {
+        File file = new File(path);
+        String name = file.getName();
+        final String cameraRelativePath =
+                String.format("%s/%s/", Environment.DIRECTORY_DCIM, DIRECTORY_CAMERA);
+
+        return !isTranscodeFile(path) && name.endsWith(".mp4") &&
+                cameraRelativePath.equalsIgnoreCase(FileUtils.extractRelativePath(path));
+    }
+
+    /**
+     * @return {@code true} if HEVC is explicitly supported by the manifest of {@code packageName},
+     * {@code false} otherwise.
+     */
+    private boolean checkManifestSupport(String packageName, LocalCallingIdentity identity) {
+        // TODO(b/169327180):
+        // 1. Support beyond HEVC
+        // 2. Shared package names policy:
+        // If appA and appB share the same uid. And appA supports HEVC but appB doesn't.
+        // Should we assume entire uid supports or doesn't?
+        // For now, we assume uid supports, but this might change in future
+        int flags = identity.getApplicationMediaCapabilitiesFlags();
+        if (flags != -1) {
+            return (flags & FLAG_HEVC) != 0;
+        }
+
+        try {
+            Property mediaCapProperty = mPackageManager.getProperty(MEDIA_CAPABILITIES_PROPERTY,
+                    packageName);
+            XmlResourceParser parser = mPackageManager.getResourcesForApplication(packageName)
+                    .getXml(mediaCapProperty.getResourceId());
+            ApplicationMediaCapabilities capability = ApplicationMediaCapabilities.createFromXml(
+                    parser);
+
+            identity.setApplicationMediaCapabilitiesFlags(capabilitiesToFlags(capability));
+            return capability.isVideoMimeTypeSupported(MediaFormat.MIMETYPE_VIDEO_HEVC);
+        } catch (NameNotFoundException | UnsupportedOperationException e) {
+            return false;
+        }
+    }
+
+    @ApplicationMediaCapabilitiesFlags
+    private int capabilitiesToFlags(ApplicationMediaCapabilities capability) {
+        int flags = 0;
+        if (capability.isVideoMimeTypeSupported(MediaFormat.MIMETYPE_VIDEO_HEVC)) {
+            flags |= FLAG_HEVC;
+        }
+        if (capability.isSlowMotionSupported()) {
+            flags |= FLAG_SLOW_MOTION;
+        }
+        if (capability.isHdrTypeSupported(MediaFeature.HdrType.HDR10)) {
+            flags |= FLAG_HDR_10;
+        }
+        if (capability.isHdrTypeSupported(MediaFeature.HdrType.HDR10_PLUS)) {
+            flags |= FLAG_HDR_10_PLUS;
+        }
+        if (capability.isHdrTypeSupported(MediaFeature.HdrType.HLG)) {
+            flags |= FLAG_HDR_HLG;
+        }
+        if (capability.isHdrTypeSupported(MediaFeature.HdrType.DOLBY_VISION)) {
+            flags |= FLAG_HDR_DOLBY_VISION;
+        }
+        return flags;
+    }
+
+    private boolean getBooleanProperty(String sysPropKey, String deviceConfigKey,
+            boolean defaultValue) {
+        // If the user wants to override the default, respect that; otherwise use the DeviceConfig
+        // which is filled with the values sent from server.
+        if (SystemProperties.getBoolean(TRANSCODE_USER_CONTROL_SYS_PROP_KEY, false)) {
+            return SystemProperties.getBoolean(sysPropKey, defaultValue);
+        }
+
+        return mMediaProvider.getBooleanDeviceConfig(deviceConfigKey, defaultValue);
+    }
+
+    private Pair<Long, Integer> getTranscodeCacheInfoFromDB(String path) {
+        try (Cursor cursor = queryFileForTranscode(path, TRANSCODE_CACHE_INFO_PROJECTION)) {
+            if (cursor != null && cursor.moveToNext()) {
+                return Pair.create(cursor.getLong(0), cursor.getInt(1));
+            }
+        }
+        return Pair.create((long) -1, TRANSCODE_EMPTY);
+    }
+
+    public boolean isTranscodeFileCached(String path, String transcodePath) {
+        if (SystemProperties.getBoolean("sys.fuse.disable_transcode_cache", false)) {
+            // Caching is disabled. Hence, delete the cached transcode file.
+            return false;
+        }
+
+        Pair<Long, Integer> cacheInfo = getTranscodeCacheInfoFromDB(path);
+        final long rowId = cacheInfo.first;
+        if (rowId != -1) {
+            final int transcodeStatus = cacheInfo.second;
+            boolean result = transcodePath.equalsIgnoreCase(getTranscodePath(rowId)) &&
+                    transcodeStatus == TRANSCODE_COMPLETE &&
+                    new File(transcodePath).exists();
+            if (result) {
+                logEvent("Transcode cache hit: " + path, null /* session */);
+            }
+            return result;
+        }
+        return false;
+    }
+
+    @Nullable
+    private MediaFormat getVideoTrackFormat(String path) {
+        String[] resolverInfoProjection = new String[]{
+                FileColumns._VIDEO_CODEC_TYPE,
+                MediaStore.MediaColumns.WIDTH,
+                MediaStore.MediaColumns.HEIGHT,
+                MediaStore.MediaColumns.BITRATE
+        };
+        try (Cursor c = queryFileForTranscode(path, resolverInfoProjection)) {
+            if (c != null && c.moveToNext()) {
+                String codecType = c.getString(0);
+                int width = c.getInt(1);
+                int height = c.getInt(2);
+                int bitRate = c.getInt(3);
+
+                // TODO(b/169849854): Get this info from Manifest, for now if app got here it
+                // definitely doesn't support hevc
+                ApplicationMediaCapabilities capability =
+                        new ApplicationMediaCapabilities.Builder().build();
+                MediaFormatResolver resolver = new MediaFormatResolver()
+                        .setSourceVideoFormatHint(MediaFormat.createVideoFormat(
+                                codecType, width, height))
+                        .setClientCapabilities(capability);
+                MediaFormat format = resolver.resolveVideoFormat();
+                format.setInteger(MediaFormat.KEY_BIT_RATE, bitRate);
+
+                return format;
+            }
+        }
+        throw new IllegalStateException("Couldn't get video format info from database for " + path);
+    }
+
+    private TranscodingSession enqueueTranscodingSession(String src, String dst, int uid,
+            final CountDownLatch latch)
+            throws FileNotFoundException, MediaTranscodingException, UnsupportedOperationException {
+
+        File file = new File(src);
+        File transcodeFile = new File(dst);
+
+        Uri uri = Uri.fromFile(file);
+        Uri transcodeUri = Uri.fromFile(transcodeFile);
+
+        MediaFormat format = getVideoTrackFormat(src);
+
+        TranscodingRequest request =
+                new TranscodingRequest.Builder()
+                        .setClientUid(uid)
+                        .setSourceUri(uri)
+                        .setDestinationUri(transcodeUri)
+                        .setType(MediaTranscodeManager.TRANSCODING_TYPE_VIDEO)
+                        .setPriority(MediaTranscodeManager.PRIORITY_REALTIME)
+                        .setVideoTrackFormat(format)
+                        .build();
+        TranscodingSession session = mMediaTranscodeManager.enqueueRequest(request,
+                ForegroundThread.getExecutor(),
+                s -> {
+                    mTranscodingUiNotifier.stop(s, src);
+                    finishTranscodingResult(uid, src, s, latch);
+                    mTranscodingMetrics.logSessionEnd(s);
+                });
+        session.setOnProgressUpdateListener(ForegroundThread.getExecutor(),
+                (s, progress) -> mTranscodingUiNotifier.setProgress(s, src, progress));
+
+        mTranscodingMetrics.logSessionStart(session);
+        mTranscodingUiNotifier.start(session, src);
+        logEvent("Transcoding start: " + src + ". Uid: " + uid, session);
+        return session;
+    }
+
+    private boolean waitTranscodingResult(int uid, String src, TranscodingSession session,
+            CountDownLatch latch) {
+        try {
+            int timeout = getTranscodeTimeoutSeconds(src);
+
+            String waitStartLog = "Transcoding wait start: " + src + ". Uid: " + uid + ". Timeout: "
+                    + timeout + "s";
+            logEvent(waitStartLog, session);
+
+            boolean latchResult = latch.await(timeout, TimeUnit.SECONDS);
+            boolean transcodeResult = session.getResult() == TranscodingSession.RESULT_SUCCESS;
+
+            String waitEndLog = "Transcoding wait end: " + src + ". Uid: " + uid + ". Timeout: "
+                    + !latchResult + ". Success: " + transcodeResult;
+            logEvent(waitEndLog, session);
+
+            return transcodeResult;
+        } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
+            Log.w(TAG, "Transcoding latch interrupted." + session);
+            return false;
+        }
+    }
+
+    private int getTranscodeTimeoutSeconds(String file) {
+        double sizeMb = (new File(file).length() / (1024 * 1024));
+        // Ensure size is at least 1MB so transcoding timeout is at least the timeout coefficient
+        sizeMb = Math.max(sizeMb, 1);
+        return (int) (sizeMb * TRANSCODING_TIMEOUT_COEFFICIENT);
+    }
+
+    private void finishTranscodingResult(int uid, String src, TranscodingSession session,
+            CountDownLatch latch) {
+        synchronized (mLock) {
+            latch.countDown();
+            session.cancel();
+            mTranscodingSessions.remove(src);
+            mTranscodingLatches.remove(session.getSessionId());
+        }
+
+        logEvent("Transcoding end: " + src + ". Uid: " + uid, session);
+    }
+
+    private boolean updateTranscodeStatus(String path, int transcodeStatus) {
+        final Uri uri = FileUtils.getContentUriForPath(path);
+        // TODO(b/170465810): Replace this with matchUri when the code is refactored.
+        final int match = MediaProvider.FILES;
+        final SQLiteQueryBuilder qb = mMediaProvider.getQueryBuilderForTranscoding(TYPE_UPDATE,
+                match, uri, Bundle.EMPTY, null);
+        final String[] selectionArgs = new String[]{path};
+
+        ContentValues values = new ContentValues();
+        values.put(FileColumns._TRANSCODE_STATUS, transcodeStatus);
+        final boolean success = qb.update(getDatabaseHelperForUri(uri), values,
+                TRANSCODE_WHERE_CLAUSE, selectionArgs) == 1;
+        if (!success) {
+            Log.w(TAG, "Transcoding status update to: " + transcodeStatus + " failed for " + path);
+        }
+        return success;
+    }
+
+    public boolean deleteCachedTranscodeFile(long rowId) {
+        return new File(getTranscodeDirectory(), String.valueOf(rowId)).delete();
+    }
+
+    private DatabaseHelper getDatabaseHelperForUri(Uri uri) {
+        final DatabaseHelper helper;
+        try {
+            return mMediaProvider.getDatabaseForUriForTranscoding(uri);
+        } catch (VolumeNotFoundException e) {
+            throw new IllegalStateException("Volume not found while querying transcode path", e);
+        }
+    }
+
+    /**
+     * @return given {@code projection} columns from database for given {@code path}.
+     * Note that cursor might be empty if there is no database row or file is pending or trashed.
+     * TODO(b/170465810): Optimize these queries by bypassing getQueryBuilder(). These queries are
+     * always on Files table and doesn't have any dependency on calling package. i.e., query is
+     * always called with callingPackage=self.
+     */
+    @Nullable
+    private Cursor queryFileForTranscode(String path, String[] projection) {
+        final Uri uri = FileUtils.getContentUriForPath(path);
+        // TODO(b/170465810): Replace this with matchUri when the code is refactored.
+        final int match = MediaProvider.FILES;
+        final SQLiteQueryBuilder qb = mMediaProvider.getQueryBuilderForTranscoding(TYPE_QUERY,
+                match, uri, Bundle.EMPTY, null);
+        final String[] selectionArgs = new String[]{path};
+
+        Bundle extras = new Bundle();
+        extras.putInt(QUERY_ARG_MATCH_PENDING, MATCH_EXCLUDE);
+        extras.putInt(QUERY_ARG_MATCH_TRASHED, MATCH_EXCLUDE);
+        extras.putString(ContentResolver.QUERY_ARG_SQL_SELECTION, TRANSCODE_WHERE_CLAUSE);
+        extras.putStringArray(ContentResolver.QUERY_ARG_SQL_SELECTION_ARGS, selectionArgs);
+        return qb.query(getDatabaseHelperForUri(uri), projection, extras, null);
+    }
+
+    private boolean isTranscodeEnabled() {
+        return getBooleanProperty(TRANSCODE_ENABLED_SYS_PROP_KEY,
+                TRANSCODE_ENABLED_DEVICE_CONFIG_KEY, true /* defaultValue */);
+    }
+
+    private void updateConfigs(boolean transcodeEnabled) {
+        synchronized (mLock) {
+            boolean isTranscodeEnabledChanged = transcodeEnabled != mIsTranscodeEnabled;
+            boolean isDebug = SystemProperties.getBoolean("sys.fuse.transcode_debug", false);
+
+            if (isTranscodeEnabledChanged || isDebug) {
+                Log.i(TAG, "Reloading transcode configs. transcodeEnabled: " + transcodeEnabled
+                        + ". lastTranscodeEnabled: " + mIsTranscodeEnabled + ". isDebug: "
+                        + isDebug);
+
+                mIsTranscodeEnabled = transcodeEnabled;
+                parseTranscodeCompatManifest();
+            }
+        }
+    }
+
+    private void parseTranscodeCompatManifest() {
+        synchronized (mLock) {
+            // Clear the transcode_compat manifest before parsing. If transcode is disabled,
+            // nothing will be parsed, effectively leaving the compat manifest empty.
+            mAppCompatMediaCapabilities.clear();
+            if (!mIsTranscodeEnabled) {
+                return;
+            }
+
+            if (!parseTranscodeCompatManifestFromDeviceConfigLocked()) {
+                Log.i(TAG, "Failed parsing transcode compat manifest from device config "
+                        + "attempting resource...");
+                parseTranscodeCompatManifestFromResourceLocked();
+            }
+        }
+    }
+
+    /** @return {@code true} if the manifest was parsed successfully, {@code false} otherwise */
+    private boolean parseTranscodeCompatManifestFromDeviceConfigLocked() {
+        final String[] manifest = mMediaProvider.getStringDeviceConfig(
+                TRANSCODE_COMPAT_MANIFEST_KEY, "").split(",");
+
+        if (manifest.length == 0 || manifest[0].isEmpty()) {
+            Log.i(TAG, "Empty device config transcode compat manifest");
+            return false;
+        }
+        if ((manifest.length % 2) != 0) {
+            Log.w(TAG, "Uneven number of items in device config transcode compat manifest");
+            return false;
+        }
+
+        String packageName = "";
+        Long packageCompatValue;
+        int i = 0;
+        while (i < manifest.length - 1) {
+            try {
+                packageName = manifest[i++];
+                packageCompatValue = Long.valueOf(manifest[i++]);
+                synchronized (mLock) {
+                    // Lock is already held, explicitly hold again to make error prone happy
+                    mAppCompatMediaCapabilities.put(packageName, packageCompatValue);
+                }
+            } catch (NumberFormatException e) {
+                Log.w(TAG, "Failed to parse media capability from device config for package: "
+                        + packageName, e);
+            }
+        }
+
+        synchronized (mLock) {
+            // Lock is already held, explicitly hold again to make error prone happy
+            int size = mAppCompatMediaCapabilities.size();
+            Log.i(TAG, "Parsed " + size + " packages from device config");
+            return size != 0;
+        }
+    }
+
+    /** @return {@code true} if the manifest was parsed successfully, {@code false} otherwise */
+    private boolean parseTranscodeCompatManifestFromResourceLocked() {
+        InputStream inputStream = mContext.getResources().openRawResource(
+                R.raw.transcode_compat_manifest);
+        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
+        try {
+            while (reader.ready()) {
+                String line = reader.readLine();
+                String packageName = "";
+                Long packageCompatValue;
+
+                if (line == null) {
+                    Log.w(TAG, "Unexpected null line while parsing transcode compat manifest");
+                    continue;
+                }
+
+                String[] lineValues = line.split(",");
+                if (lineValues.length != 2) {
+                    Log.w(TAG, "Failed to read line while parsing transcode compat manifest");
+                    continue;
+                }
+                try {
+                    packageName = lineValues[0];
+                    packageCompatValue = Long.valueOf(lineValues[1]);
+                    synchronized (mLock) {
+                        // Lock is already held, explicitly hold again to make error prone happy
+                        mAppCompatMediaCapabilities.put(packageName, packageCompatValue);
+                    }
+                } catch (NumberFormatException e) {
+                    Log.w(TAG, "Failed to parse media capability from resource for package: "
+                            + packageName, e);
+                }
+            }
+        } catch (IOException e) {
+            Log.w(TAG, "Failed to read transcode compat manifest", e);
+        }
+
+        synchronized (mLock) {
+            // Lock is already held, explicitly hold again to make error prone happy
+            int size = mAppCompatMediaCapabilities.size();
+            Log.i(TAG, "Parsed " + size + " packages from resource");
+            return size != 0;
+        }
+    }
+
+    private static void logEvent(String event, @Nullable TranscodingSession session) {
+        Log.d(TAG, event + (session == null ? "" : session));
+    }
+
+    private static void logVerbose(String message) {
+        if (DEBUG) {
+            Log.v(TAG, message);
+        }
+    }
+
+    private static class TranscodeUiNotifier {
+        private static final int PROGRESS_MAX = 100;
+        private static final int ALERT_DISMISS_DELAY_MS = 1000;
+        private static final int SHOW_PROGRESS_THRESHOLD_TIME_MS = 1000;
+        private static final String TRANSCODE_ALERT_CHANNEL_ID = "native_transcode_alert_channel";
+        private static final String TRANSCODE_ALERT_CHANNEL_NAME = "Native Transcode Alerts";
+        private static final String TRANSCODE_PROGRESS_CHANNEL_ID =
+                "native_transcode_progress_channel";
+        private static final String TRANSCODE_PROGRESS_CHANNEL_NAME = "Native Transcode Progress";
+
+        private final NotificationManagerCompat mNotificationManager;
+        // Builder for creating alert notifications.
+        private final NotificationCompat.Builder mAlertBuilder;
+        // Builder for creating progress notifications.
+        private final NotificationCompat.Builder mProgressBuilder;
+        private final TranscodeMetrics mTranscodingMetrics;
+
+        TranscodeUiNotifier(Context context, TranscodeMetrics metrics) {
+            mNotificationManager = NotificationManagerCompat.from(context);
+            createAlertNotificationChannel(context);
+            createProgressNotificationChannel(context);
+            mAlertBuilder = createAlertNotificationBuilder(context);
+            mProgressBuilder = createProgressNotificationBuilder(context);
+            mTranscodingMetrics = metrics;
+        }
+
+        void start(TranscodingSession session, String filePath) {
+            ForegroundThread.getHandler().post(() -> {
+                mAlertBuilder.setContentTitle("Transcoding started");
+                mAlertBuilder.setContentText(FileUtils.extractDisplayName(filePath));
+                final int notificationId = session.getSessionId();
+                mNotificationManager.notify(notificationId, mAlertBuilder.build());
+            });
+        }
+
+        void stop(TranscodingSession session, String filePath) {
+            endSessionWithMessage(session, filePath, getResultMessageForSession(session));
+        }
+
+        void setProgress(TranscodingSession session, String filePath,
+                @IntRange(from = 0, to = PROGRESS_MAX) int progress) {
+            if (shouldShowProgress(session)) {
+                mProgressBuilder.setContentText(FileUtils.extractDisplayName(filePath));
+                mProgressBuilder.setProgress(PROGRESS_MAX, progress, /* indeterminate= */ false);
+                final int notificationId = session.getSessionId();
+                mNotificationManager.notify(notificationId, mProgressBuilder.build());
+            }
+        }
+
+        private boolean shouldShowProgress(TranscodingSession session) {
+            return (System.currentTimeMillis() - mTranscodingMetrics.getSessionStartTime(session))
+                    > SHOW_PROGRESS_THRESHOLD_TIME_MS;
+        }
+
+        private void endSessionWithMessage(TranscodingSession session, String filePath,
+                String message) {
+            final Handler handler = ForegroundThread.getHandler();
+            handler.post(() -> {
+                mAlertBuilder.setContentTitle(message);
+                mAlertBuilder.setContentText(FileUtils.extractDisplayName(filePath));
+                final int notificationId = session.getSessionId();
+                mNotificationManager.notify(notificationId, mAlertBuilder.build());
+                // Auto-dismiss after a delay.
+                handler.postDelayed(() -> mNotificationManager.cancel(notificationId),
+                        ALERT_DISMISS_DELAY_MS);
+            });
+        }
+
+        private void createAlertNotificationChannel(Context context) {
+            NotificationChannel channel = new NotificationChannel(TRANSCODE_ALERT_CHANNEL_ID,
+                    TRANSCODE_ALERT_CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
+            NotificationManager notificationManager = context.getSystemService(
+                    NotificationManager.class);
+            notificationManager.createNotificationChannel(channel);
+        }
+
+        private void createProgressNotificationChannel(Context context) {
+            NotificationChannel channel = new NotificationChannel(TRANSCODE_PROGRESS_CHANNEL_ID,
+                    TRANSCODE_PROGRESS_CHANNEL_NAME, NotificationManager.IMPORTANCE_LOW);
+            NotificationManager notificationManager = context.getSystemService(
+                    NotificationManager.class);
+            notificationManager.createNotificationChannel(channel);
+        }
+
+        private static NotificationCompat.Builder createAlertNotificationBuilder(Context context) {
+            NotificationCompat.Builder builder = new NotificationCompat.Builder(context,
+                    TRANSCODE_ALERT_CHANNEL_ID);
+            builder.setAutoCancel(false)
+                    .setOngoing(true)
+                    .setSmallIcon(R.drawable.thumb_clip);
+            return builder;
+        }
+
+        private static NotificationCompat.Builder createProgressNotificationBuilder(
+                Context context) {
+            NotificationCompat.Builder builder = new NotificationCompat.Builder(context,
+                    TRANSCODE_PROGRESS_CHANNEL_ID);
+            builder.setAutoCancel(false)
+                    .setOngoing(true)
+                    .setContentTitle("Transcoding media")
+                    .setSmallIcon(R.drawable.thumb_clip);
+            return builder;
+        }
+
+        private static String getResultMessageForSession(TranscodingSession session) {
+            switch (session.getResult()) {
+                case TranscodingSession.RESULT_CANCELED:
+                    return "Transcoding cancelled";
+                case TranscodingSession.RESULT_ERROR:
+                    return "Transcoding error";
+                case TranscodingSession.RESULT_SUCCESS:
+                    return "Transcoding success";
+                default:
+                    return "Transcoding result unknown";
+            }
+        }
+    }
+
+    /**
+     * Stores metrics for transcode sessions.
+     */
+    private static final class TranscodeMetrics {
+
+        // This should be accessed only in foreground thread.
+        private final SparseArray<Long> mSessionStartTimes = new SparseArray<>();
+
+        // Call this only in foreground thread.
+        long getSessionStartTime(TranscodingSession session) {
+            return mSessionStartTimes.get(session.getSessionId());
+        }
+
+        void logSessionStart(TranscodingSession session) {
+            ForegroundThread.getHandler().post(
+                    () -> mSessionStartTimes.append(session.getSessionId(),
+                            System.currentTimeMillis()));
+        }
+
+        void logSessionEnd(TranscodingSession session) {
+            ForegroundThread.getHandler().post(
+                    () -> mSessionStartTimes.remove(session.getSessionId()));
+        }
+    }
+}
diff --git a/src/com/android/providers/media/fuse/ExternalStorageServiceImpl.java b/src/com/android/providers/media/fuse/ExternalStorageServiceImpl.java
index 0c1cb94..9c63529 100644
--- a/src/com/android/providers/media/fuse/ExternalStorageServiceImpl.java
+++ b/src/com/android/providers/media/fuse/ExternalStorageServiceImpl.java
@@ -16,8 +16,7 @@
 
 package com.android.providers.media.fuse;
 
-import static com.android.providers.media.scan.MediaScanner.REASON_MOUNTED;
-
+import android.annotation.BytesLong;
 import android.content.ContentProviderClient;
 import android.os.Environment;
 import android.os.OperationCanceledException;
@@ -31,12 +30,12 @@
 import androidx.annotation.Nullable;
 
 import com.android.providers.media.MediaProvider;
-import com.android.providers.media.MediaService;
 
 import java.io.File;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.UUID;
 
 /**
  * Handles filesystem I/O from other apps.
@@ -108,6 +107,12 @@
         }
     }
 
+    @Override
+    public void onFreeCacheRequested(@NonNull UUID volumeUuid, @BytesLong long bytes) {
+        Log.i(TAG, "Free cache requested for " + bytes + " bytes");
+        getMediaProvider().freeCache(bytes);
+    }
+
     public FuseDaemon onExitSession(String sessionId) {
         Log.i(TAG, "Exiting session for id: " + sessionId);
         synchronized (sLock) {
diff --git a/src/com/android/providers/media/photopicker/PhotoPickerActivity.java b/src/com/android/providers/media/photopicker/PhotoPickerActivity.java
new file mode 100644
index 0000000..66182bc
--- /dev/null
+++ b/src/com/android/providers/media/photopicker/PhotoPickerActivity.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2020 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.providers.media.photopicker;
+
+import android.app.Activity;
+import android.content.ClipData;
+import android.content.ClipDescription;
+import android.content.ContentUris;
+import android.content.Intent;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.MediaStore;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.ListView;
+
+import com.android.providers.media.R;
+
+import com.google.common.collect.ImmutableList;
+
+/**
+ * Photo Picker allows users to choose one or more photos and/or videos to share with an app. The
+ * app does not get access to all photos/videos.
+ */
+public class PhotoPickerActivity extends Activity {
+
+    public static final String TAG = "PhotoPickerActivity";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // TODO(b/168001592) Change layout to show photos & options.
+        setContentView(R.layout.photo_picker);
+        Button button = findViewById(R.id.button);
+        button.setOnClickListener(v -> respondEmpty());
+
+        // TODO(b/168001592) Handle multiple selection option.
+
+        // TODO(b/168001592) Filter using given mime type.
+
+        // TODO(b/168001592) Show a photo grid instead of  ListView.
+        ListView photosList = findViewById(R.id.names_list);
+        ArrayAdapter<PhotoEntry> photosAdapter = new ArrayAdapter<>(
+                this, android.R.layout.simple_list_item_1);
+        photosList.setAdapter(photosAdapter);
+        // Clicking an item in the list returns its URI for now.
+        photosList.setOnItemClickListener((parent, view, position, id) -> {
+            respondPhoto(photosAdapter.getItem(position));
+        });
+
+        // Show the list of photo names for now.
+        ImmutableList.Builder<PhotoEntry> imageRowsBuilder = ImmutableList.builder();
+        String[] projection = new String[] {
+                MediaStore.MediaColumns._ID,
+                MediaStore.MediaColumns.DISPLAY_NAME
+        };
+        // TODO(b/168001592) call query() from worker thread.
+        Cursor cursor = getApplicationContext().getContentResolver().query(
+                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
+                projection, null, null);
+        int idColumn = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns._ID);
+        int nameColumn = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DISPLAY_NAME);
+        // TODO(b/168001592) Use better image loading (e.g. use paging, glide).
+        while (cursor.moveToNext()) {
+            imageRowsBuilder.add(
+                    new PhotoEntry(cursor.getLong(idColumn), cursor.getString(nameColumn)));
+        }
+        photosAdapter.addAll(imageRowsBuilder.build());
+    }
+
+    private void respondPhoto(PhotoEntry photoEntry) {
+        Uri contentUri = ContentUris.withAppendedId(
+                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
+                photoEntry.id);
+
+        Intent response = new Intent();
+        // TODO(b/168001592) Confirm if this flag is enough to grant the access we want.
+        response.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+
+        // TODO(b/168001592) Use a better label and accurate mime types.
+        if (getIntent().getBooleanExtra(Intent.EXTRA_ALLOW_MULTIPLE, false)) {
+            ClipDescription clipDescription = new ClipDescription(
+                    "Photo Picker ClipData",
+                    new String[]{"image/*", "video/*"});
+            ClipData clipData = new ClipData(clipDescription, new ClipData.Item(contentUri));
+            response.setClipData(clipData);
+        } else {
+            response.setData(contentUri);
+        }
+
+        setResult(Activity.RESULT_OK, response);
+        finish();
+    }
+
+
+    private void respondEmpty() {
+        setResult(Activity.RESULT_OK);
+        finish();
+    }
+
+    private static class PhotoEntry {
+        private long id;
+        private String name;
+
+        PhotoEntry(long id, String name) {
+            this.id = id;
+            this.name = name;
+        }
+
+        @Override
+        public String toString() {
+            return name;
+        }
+    }
+}
diff --git a/src/com/android/providers/media/playlist/Playlist.java b/src/com/android/providers/media/playlist/Playlist.java
index 53bdeeb..a5143d6 100644
--- a/src/com/android/providers/media/playlist/Playlist.java
+++ b/src/com/android/providers/media/playlist/Playlist.java
@@ -31,6 +31,7 @@
 import java.io.OutputStream;
 import java.nio.file.Path;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -109,6 +110,28 @@
         return index;
     }
 
+    /**
+     * Removes existing playlist items that correspond to the given indexes.
+     * If an index is out of bounds, then it's ignored.
+     *
+     * @return the number of deleted items
+     */
+    public int removeMultiple(int... indexes) {
+        int res = 0;
+        Arrays.sort(indexes);
+
+        for (int i = indexes.length - 1; i >= 0; --i) {
+            final int size = mItems.size();
+            // Ignore items that are out of bounds
+            if (indexes[i] >=0 && indexes[i] < size) {
+                mItems.remove(indexes[i]);
+                res++;
+            }
+        }
+
+        return res;
+    }
+
     private static int constrain(int amount, int low, int high) {
         return amount < low ? low : (amount > high ? high : amount);
     }
diff --git a/src/com/android/providers/media/scan/LegacyMediaScanner.java b/src/com/android/providers/media/scan/LegacyMediaScanner.java
index 8d84569..0a53a0d 100644
--- a/src/com/android/providers/media/scan/LegacyMediaScanner.java
+++ b/src/com/android/providers/media/scan/LegacyMediaScanner.java
@@ -55,4 +55,14 @@
     public void onDetachVolume(String volumeName) {
         throw new UnsupportedOperationException();
     }
+
+    @Override
+    public void onIdleScanStopped() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void onDirectoryDirty(File file) {
+        throw new UnsupportedOperationException();
+    }
 }
diff --git a/src/com/android/providers/media/scan/MediaScanner.java b/src/com/android/providers/media/scan/MediaScanner.java
index b217da1..1306873 100644
--- a/src/com/android/providers/media/scan/MediaScanner.java
+++ b/src/com/android/providers/media/scan/MediaScanner.java
@@ -39,4 +39,6 @@
     public Uri scanFile(File file, int reason);
     public Uri scanFile(File file, int reason, @Nullable String ownerPackage);
     public void onDetachVolume(String volumeName);
+    public void onIdleScanStopped();
+    public void onDirectoryDirty(File file);
 }
diff --git a/src/com/android/providers/media/scan/ModernMediaScanner.java b/src/com/android/providers/media/scan/ModernMediaScanner.java
index 9658827..5151be9 100644
--- a/src/com/android/providers/media/scan/ModernMediaScanner.java
+++ b/src/com/android/providers/media/scan/ModernMediaScanner.java
@@ -37,6 +37,7 @@
 import static android.media.MediaMetadataRetriever.METADATA_KEY_MIMETYPE;
 import static android.media.MediaMetadataRetriever.METADATA_KEY_NUM_TRACKS;
 import static android.media.MediaMetadataRetriever.METADATA_KEY_TITLE;
+import static android.media.MediaMetadataRetriever.METADATA_KEY_VIDEO_CODEC_MIME_TYPE;
 import static android.media.MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT;
 import static android.media.MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION;
 import static android.media.MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH;
@@ -58,6 +59,7 @@
 import android.database.sqlite.SQLiteDatabase;
 import android.drm.DrmManagerClient;
 import android.drm.DrmSupportInfo;
+import android.graphics.BitmapFactory;
 import android.media.ExifInterface;
 import android.media.MediaMetadataRetriever;
 import android.mtp.MtpConstants;
@@ -92,7 +94,6 @@
 import com.android.providers.media.util.ExifUtils;
 import com.android.providers.media.util.FileUtils;
 import com.android.providers.media.util.IsoInterface;
-import com.android.providers.media.util.Logging;
 import com.android.providers.media.util.LongArray;
 import com.android.providers.media.util.Metrics;
 import com.android.providers.media.util.MimeUtils;
@@ -100,6 +101,7 @@
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.nio.file.FileVisitResult;
 import java.nio.file.FileVisitor;
@@ -111,6 +113,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
@@ -147,21 +150,34 @@
     // TODO: deprecate playlist editing
     // TODO: deprecate PARENT column, since callers can't see directories
 
-    @GuardedBy("sDateFormat")
-    private static final SimpleDateFormat sDateFormat;
+    @GuardedBy("S_DATE_FORMAT")
+    private static final SimpleDateFormat S_DATE_FORMAT;
+    @GuardedBy("S_DATE_FORMAT_WITH_MILLIS")
+    private static final SimpleDateFormat S_DATE_FORMAT_WITH_MILLIS;
 
     static {
-        sDateFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
-        sDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+        S_DATE_FORMAT = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
+        S_DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC"));
+
+        S_DATE_FORMAT_WITH_MILLIS = new SimpleDateFormat("yyyyMMdd'T'HHmmss.SSS");
+        S_DATE_FORMAT_WITH_MILLIS.setTimeZone(TimeZone.getTimeZone("UTC"));
     }
 
     private static final int BATCH_SIZE = 32;
+    private static final int MAX_XMP_SIZE_BYTES = 1024 * 1024;
+    // |excludeDirs * 2| < 1000 which is the max SQL expression size
+    // Because we add |excludeDir| and |excludeDir/| in the SQL expression to match dir and subdirs
+    // See SQLITE_MAX_EXPR_DEPTH in sqlite3.c
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    static final int MAX_EXCLUDE_DIRS = 450;
 
     private static final Pattern PATTERN_VISIBLE = Pattern.compile(
-            "(?i)^/storage/[^/]+(?:/[0-9]+)?(?:/Android/sandbox/([^/]+))?$");
+            "(?i)^/storage/[^/]+(?:/[0-9]+)?$");
     private static final Pattern PATTERN_INVISIBLE = Pattern.compile(
-            "(?i)^/storage/[^/]+(?:/[0-9]+)?(?:/Android/sandbox/([^/]+))?/" +
-                    "(?:(?:Android/(?:data|obb)$)|(?:(?:Movies|Music|Pictures)/.thumbnails$))");
+            "(?i)^/storage/[^/]+(?:/[0-9]+)?/"
+                    + "(?:(?:Android/(?:data|obb|sandbox)$)|"
+                    + "(?:\\.transcode$)|"
+                    + "(?:(?:Movies|Music|Pictures)/.thumbnails$))");
 
     private static final Pattern PATTERN_YEAR = Pattern.compile("([1-9][0-9][0-9][0-9])");
 
@@ -170,13 +186,15 @@
 
     private final Context mContext;
     private final DrmManagerClient mDrmClient;
+    @GuardedBy("mPendingCleanDirectories")
+    private final Set<String> mPendingCleanDirectories = new ArraySet<>();
 
     /**
-     * Map from volume name to signals that can be used to cancel any active
-     * scan operations on those volumes.
+     * List of active scans.
      */
-    @GuardedBy("mSignals")
-    private final ArrayMap<String, CancellationSignal> mSignals = new ArrayMap<>();
+    @GuardedBy("mActiveScans")
+
+    private final List<Scan> mActiveScans = new ArrayList<>();
 
     /**
      * Holder that contains a reference count of the number of threads
@@ -225,6 +243,8 @@
         try (Scan scan = new Scan(file, reason, /*ownerPackage*/ null)) {
             scan.run();
         } catch (OperationCanceledException ignored) {
+        } catch (FileNotFoundException e) {
+           Log.e(TAG, "Couldn't find directory to scan", e) ;
         }
     }
 
@@ -240,27 +260,51 @@
             return scan.getFirstResult();
         } catch (OperationCanceledException ignored) {
             return null;
+        } catch (FileNotFoundException e) {
+            Log.e(TAG, "Couldn't find file to scan", e) ;
+            return null;
         }
     }
 
     @Override
     public void onDetachVolume(String volumeName) {
-        synchronized (mSignals) {
-            final CancellationSignal signal = mSignals.remove(volumeName);
-            if (signal != null) {
-                signal.cancel();
+        synchronized (mActiveScans) {
+            for (Scan scan : mActiveScans) {
+                if (volumeName.equals(scan.mVolumeName)) {
+                    scan.mSignal.cancel();
+                }
             }
         }
     }
 
-    private CancellationSignal getOrCreateSignal(String volumeName) {
-        synchronized (mSignals) {
-            CancellationSignal signal = mSignals.get(volumeName);
-            if (signal == null) {
-                signal = new CancellationSignal();
-                mSignals.put(volumeName, signal);
+    @Override
+    public void onIdleScanStopped() {
+        synchronized (mActiveScans) {
+            for (Scan scan : mActiveScans) {
+                if (scan.mReason == REASON_IDLE) {
+                    scan.mSignal.cancel();
+                }
             }
-            return signal;
+        }
+    }
+
+    @Override
+    public void onDirectoryDirty(File dir) {
+        synchronized (mPendingCleanDirectories) {
+            mPendingCleanDirectories.remove(dir.getPath());
+            FileUtils.setDirectoryDirty(dir, /*isDirty*/ true);
+        }
+    }
+
+    private void addActiveScan(Scan scan) {
+        synchronized (mActiveScans) {
+            mActiveScans.add(scan);
+        }
+    }
+
+    private void removeActiveScan(Scan scan) {
+        synchronized (mActiveScans) {
+            mActiveScans.remove(scan);
         }
     }
 
@@ -279,6 +323,7 @@
         private final Uri mFilesUri;
         private final CancellationSignal mSignal;
         private final String mOwnerPackage;
+        private final List<String> mExcludeDirs;
 
         private final long mStartGeneration;
         private final boolean mSingleFile;
@@ -299,8 +344,15 @@
          * indicates that one or more of the current file's parents is a hidden directory.
          */
         private int mHiddenDirCount;
+        /**
+         * Indicates if the nomedia directory tree is dirty. When a nomedia directory is dirty, we
+         * mark the top level nomedia as dirty. Hence if one of the sub directory in the nomedia
+         * directory is dirty, we consider the whole top level nomedia directory tree as dirty.
+         */
+        private boolean mIsDirectoryTreeDirty;
 
-        public Scan(File root, int reason, @Nullable String ownerPackage) {
+        public Scan(File root, int reason, @Nullable String ownerPackage)
+                throws FileNotFoundException {
             Trace.beginSection("ctor");
 
             mClient = mContext.getContentResolver()
@@ -311,17 +363,27 @@
             mReason = reason;
             mVolumeName = FileUtils.getVolumeName(mContext, root);
             mFilesUri = MediaStore.Files.getContentUri(mVolumeName);
-            mSignal = getOrCreateSignal(mVolumeName);
+            mSignal = new CancellationSignal();
 
             mStartGeneration = MediaStore.getGeneration(mResolver, mVolumeName);
             mSingleFile = mRoot.isFile();
             mOwnerPackage = ownerPackage;
+            mExcludeDirs = new ArrayList<>();
 
             Trace.endSection();
         }
 
         @Override
         public void run() {
+            addActiveScan(this);
+            try {
+                runInternal();
+            } finally {
+                removeActiveScan(this);
+            }
+        }
+
+        private void runInternal() {
             final long startTime = SystemClock.elapsedRealtime();
 
             // First, scan everything that should be visible under requested
@@ -377,6 +439,49 @@
             }
         }
 
+        private String buildExcludeDirClause(int count) {
+            if (count == 0) {
+                return "";
+            }
+            String notLikeClause = FileColumns.DATA + " NOT LIKE ? ESCAPE '\\'";
+            String andClause = " AND ";
+            StringBuilder sb = new StringBuilder();
+            sb.append("(");
+            for (int i = 0; i < count; i++) {
+                // Append twice because we want to match the path itself and the expanded path
+                // using the SQL % LIKE operator. For instance, to exclude /sdcard/foo and all
+                // subdirs, we need the following:
+                // "NOT LIKE '/sdcard/foo/%' AND "NOT LIKE '/sdcard/foo'"
+                // The first clause matches *just* subdirs, and the second clause matches the dir
+                // itself
+                sb.append(notLikeClause);
+                sb.append(andClause);
+                sb.append(notLikeClause);
+                if (i != count - 1) {
+                    sb.append(andClause);
+                }
+            }
+            sb.append(")");
+            return sb.toString();
+        }
+
+        private void addEscapedAndExpandedPath(String path, List<String> paths) {
+            String escapedPath = DatabaseUtils.escapeForLike(path);
+            paths.add(escapedPath + "/%");
+            paths.add(escapedPath);
+        }
+
+        private String[] buildSqlSelectionArgs() {
+            List<String> escapedPaths = new ArrayList<>();
+
+            addEscapedAndExpandedPath(mRoot.getAbsolutePath(), escapedPaths);
+            for (String dir : mExcludeDirs) {
+                addEscapedAndExpandedPath(dir, escapedPaths);
+            }
+
+            return escapedPaths.toArray(new String[0]);
+        }
+
         private void reconcileAndClean() {
             final long[] scannedIds = mScannedIds.toArray();
             Arrays.sort(scannedIds);
@@ -392,14 +497,16 @@
                     + MtpConstants.FORMAT_ABSTRACT_AV_PLAYLIST;
             final String dataClause = "(" + FileColumns.DATA + " LIKE ? ESCAPE '\\' OR "
                     + FileColumns.DATA + " LIKE ? ESCAPE '\\')";
+            final String excludeDirClause = buildExcludeDirClause(mExcludeDirs.size());
             final String generationClause = FileColumns.GENERATION_ADDED + " <= "
                     + mStartGeneration;
+            final String sqlSelection = formatClause + " AND " + dataClause + " AND "
+                    + generationClause
+                    + (excludeDirClause.isEmpty() ? "" : " AND " + excludeDirClause);
             final Bundle queryArgs = new Bundle();
-            queryArgs.putString(ContentResolver.QUERY_ARG_SQL_SELECTION,
-                    formatClause + " AND " + dataClause + " AND " + generationClause);
-            final String pathEscapedForLike = DatabaseUtils.escapeForLike(mRoot.getAbsolutePath());
+            queryArgs.putString(ContentResolver.QUERY_ARG_SQL_SELECTION, sqlSelection);
             queryArgs.putStringArray(ContentResolver.QUERY_ARG_SQL_SELECTION_ARGS,
-                    new String[] {pathEscapedForLike + "/%", pathEscapedForLike});
+                    buildSqlSelectionArgs());
             queryArgs.putString(ContentResolver.QUERY_ARG_SQL_SORT_ORDER,
                     FileColumns._ID + " DESC");
             queryArgs.putInt(MediaStore.QUERY_ARG_MATCH_PENDING, MediaStore.MATCH_EXCLUDE);
@@ -504,11 +611,6 @@
 
         @Override
         public void close() {
-            // Sanity check that we drained any pending operations
-            if (!mPending.isEmpty()) {
-                throw new IllegalStateException();
-            }
-
             // Release any locks we're still holding, typically when we
             // encountered an exception; we snapshot the original list so we're
             // not confused as it's mutated by release operations
@@ -529,6 +631,27 @@
                 return FileVisitResult.SKIP_SUBTREE;
             }
 
+            synchronized (mPendingCleanDirectories) {
+                if (mIsDirectoryTreeDirty) {
+                    // Directory tree is dirty, continue scanning subtree.
+                } else if (FileUtils.isDirectoryDirty(FileUtils.getTopLevelNoMedia(dir.toFile()))) {
+                    // Track the directory dirty status for directory tree in mIsDirectoryDirty.
+                    // This removes additional dirty state check for subdirectories of nomedia
+                    // directory.
+                    mIsDirectoryTreeDirty = true;
+                    mPendingCleanDirectories.add(dir.toFile().getPath());
+                } else {
+                    Log.d(TAG, "Skipping preVisitDirectory " + dir.toFile());
+                    if (mExcludeDirs.size() <= MAX_EXCLUDE_DIRS) {
+                        mExcludeDirs.add(dir.toFile().getPath());
+                        return FileVisitResult.SKIP_SUBTREE;
+                    } else {
+                        Log.w(TAG, "ExcludeDir size exceeded, not skipping preVisitDirectory "
+                                + dir.toFile());
+                    }
+                }
+            }
+
             // Acquire lock on this directory to ensure parallel scans don't
             // overlap and confuse each other
             acquireDirectoryLock(dir);
@@ -585,7 +708,7 @@
             queryArgs.putInt(MediaStore.QUERY_ARG_MATCH_FAVORITE, MediaStore.MATCH_INCLUDE);
             final String[] projection = new String[] {FileColumns._ID, FileColumns.DATE_MODIFIED,
                     FileColumns.SIZE, FileColumns.MIME_TYPE, FileColumns.MEDIA_TYPE,
-                    FileColumns.IS_PENDING};
+                    FileColumns.IS_PENDING, FileColumns._MODIFIER};
 
             final Matcher matcher = FileUtils.PATTERN_EXPIRES_FILE.matcher(realFile.getName());
             // If IS_PENDING is set by FUSE, we should scan the file and update IS_PENDING to zero.
@@ -600,6 +723,8 @@
                     final String mimeType = c.getString(3);
                     final int mediaType = c.getInt(4);
                     isPendingFromFuse &= c.getInt(5) != 0;
+                    final boolean isScanned =
+                            c.getInt(6) == FileColumns._MODIFIER_MEDIA_SCAN;
 
                     // Remember visiting this existing item, even if we skipped
                     // due to it being unchanged; this is needed so we don't
@@ -617,7 +742,7 @@
                             mimeType.equalsIgnoreCase(actualMimeType);
                     final boolean sameMediaType = (actualMediaType == mediaType);
                     final boolean isSame = sameTime && sameSize && sameMediaType && sameMimeType
-                            && !isPendingFromFuse;
+                            && !isPendingFromFuse && isScanned;
                     if (attrs.isDirectory() || isSame) {
                         if (LOGV) Log.v(TAG, "Skipping unchanged " + file);
                         return FileVisitResult.CONTINUE;
@@ -636,6 +761,7 @@
                 Trace.endSection();
             }
             if (op != null) {
+                op.withValue(FileColumns._MODIFIER, FileColumns._MODIFIER_MEDIA_SCAN);
                 // Add owner package name to new insertions when package name is provided.
                 if (op.build().isInsert() && !attrs.isDirectory() && mOwnerPackage != null) {
                     op.withValue(MediaColumns.OWNER_PACKAGE_NAME, mOwnerPackage);
@@ -673,6 +799,15 @@
             // allow other parallel scans to proceed
             releaseDirectoryLock(dir);
 
+            if (mIsDirectoryTreeDirty) {
+                synchronized (mPendingCleanDirectories) {
+                    if (mPendingCleanDirectories.remove(dir.toFile().getPath())) {
+                        // If |dir| is still clean, then persist
+                        FileUtils.setDirectoryDirty(dir.toFile(), false /* isDirty */);
+                        mIsDirectoryTreeDirty = false;
+                    }
+                }
+            }
             return FileVisitResult.CONTINUE;
         }
 
@@ -895,7 +1030,16 @@
         op.withValue(MediaColumns.DOCUMENT_ID, xmp.getDocumentId());
         op.withValue(MediaColumns.INSTANCE_ID, xmp.getInstanceId());
         op.withValue(MediaColumns.ORIGINAL_DOCUMENT_ID, xmp.getOriginalDocumentId());
-        op.withValue(MediaColumns.XMP, xmp.getRedactedXmp());
+        op.withValue(MediaColumns.XMP, maybeTruncateXmp(xmp));
+    }
+
+    private static byte[] maybeTruncateXmp(XmpInterface xmp) {
+        byte[] redacted = xmp.getRedactedXmp();
+        if (redacted.length > MAX_XMP_SIZE_BYTES) {
+            return new byte[0];
+        }
+
+        return redacted;
     }
 
     /**
@@ -935,6 +1079,40 @@
         }
     }
 
+    private static void withResolutionValues(
+            @NonNull ContentProviderOperation.Builder op,
+            @NonNull ExifInterface exif, @NonNull File file) {
+        final Optional<?> width = parseOptionalOrZero(
+                exif.getAttribute(ExifInterface.TAG_IMAGE_WIDTH));
+        final Optional<?> height = parseOptionalOrZero(
+                exif.getAttribute(ExifInterface.TAG_IMAGE_LENGTH));
+        final Optional<String> resolution = parseOptionalResolution(width, height);
+        if (resolution.isPresent()) {
+            withOptionalValue(op, MediaColumns.WIDTH, width);
+            withOptionalValue(op, MediaColumns.HEIGHT, height);
+            op.withValue(MediaColumns.RESOLUTION, resolution.get());
+        } else {
+            withBitmapResolutionValues(op, file);
+        }
+    }
+
+    private static void withBitmapResolutionValues(
+            @NonNull ContentProviderOperation.Builder op,
+            @NonNull File file) {
+        final BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
+        bitmapOptions.inSampleSize = 1;
+        bitmapOptions.inJustDecodeBounds = true;
+        bitmapOptions.outWidth = 0;
+        bitmapOptions.outHeight = 0;
+        BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions);
+
+        final Optional<?> width = parseOptionalOrZero(bitmapOptions.outWidth);
+        final Optional<?> height = parseOptionalOrZero(bitmapOptions.outHeight);
+        withOptionalValue(op, MediaColumns.WIDTH, width);
+        withOptionalValue(op, MediaColumns.HEIGHT, height);
+        withOptionalValue(op, MediaColumns.RESOLUTION, parseOptionalResolution(width, height));
+    }
+
     private static @NonNull ContentProviderOperation.Builder scanItemDirectory(long existingId,
             File file, BasicFileAttributes attrs, String mimeType, String volumeName) {
         final ContentProviderOperation.Builder op = newUpsert(volumeName, existingId);
@@ -1045,6 +1223,7 @@
         op.withValue(VideoColumns.COLOR_STANDARD, null);
         op.withValue(VideoColumns.COLOR_TRANSFER, null);
         op.withValue(VideoColumns.COLOR_RANGE, null);
+        op.withValue(FileColumns._VIDEO_CODEC_TYPE, null);
 
         try (FileInputStream is = new FileInputStream(file)) {
             try (MediaMetadataRetriever mmr = new MediaMetadataRetriever()) {
@@ -1067,6 +1246,8 @@
                         parseOptional(mmr.extractMetadata(METADATA_KEY_COLOR_TRANSFER)));
                 withOptionalValue(op, VideoColumns.COLOR_RANGE,
                         parseOptional(mmr.extractMetadata(METADATA_KEY_COLOR_RANGE)));
+                withOptionalValue(op, FileColumns._VIDEO_CODEC_TYPE,
+                        parseOptional(mmr.extractMetadata(METADATA_KEY_VIDEO_CODEC_MIME_TYPE)));
             }
 
             // Also hunt around for XMP metadata
@@ -1091,12 +1272,8 @@
         try (FileInputStream is = new FileInputStream(file)) {
             final ExifInterface exif = new ExifInterface(is);
 
-            withOptionalValue(op, MediaColumns.WIDTH,
-                    parseOptionalOrZero(exif.getAttribute(ExifInterface.TAG_IMAGE_WIDTH)));
-            withOptionalValue(op, MediaColumns.HEIGHT,
-                    parseOptionalOrZero(exif.getAttribute(ExifInterface.TAG_IMAGE_LENGTH)));
-            withOptionalValue(op, MediaColumns.RESOLUTION,
-                    parseOptionalResolution(exif));
+            withResolutionValues(op, exif, file);
+
             withOptionalValue(op, MediaColumns.DATE_TAKEN,
                     parseOptionalDateTaken(exif, lastModifiedTime(file, attrs) * 1000));
             withOptionalValue(op, MediaColumns.ORIENTATION,
@@ -1256,11 +1433,7 @@
             @NonNull MediaMetadataRetriever mmr) {
         final Optional<?> width = parseOptional(mmr.extractMetadata(METADATA_KEY_VIDEO_WIDTH));
         final Optional<?> height = parseOptional(mmr.extractMetadata(METADATA_KEY_VIDEO_HEIGHT));
-        if (width.isPresent() && height.isPresent()) {
-            return Optional.of(width.get() + "\u00d7" + height.get());
-        } else {
-            return Optional.empty();
-        }
+        return parseOptionalResolution(width, height);
     }
 
     @VisibleForTesting
@@ -1268,11 +1441,7 @@
             @NonNull MediaMetadataRetriever mmr) {
         final Optional<?> width = parseOptional(mmr.extractMetadata(METADATA_KEY_IMAGE_WIDTH));
         final Optional<?> height = parseOptional(mmr.extractMetadata(METADATA_KEY_IMAGE_HEIGHT));
-        if (width.isPresent() && height.isPresent()) {
-            return Optional.of(width.get() + "\u00d7" + height.get());
-        } else {
-            return Optional.empty();
-        }
+        return parseOptionalResolution(width, height);
     }
 
     @VisibleForTesting
@@ -1282,26 +1451,46 @@
                 exif.getAttribute(ExifInterface.TAG_IMAGE_WIDTH));
         final Optional<?> height = parseOptionalOrZero(
                 exif.getAttribute(ExifInterface.TAG_IMAGE_LENGTH));
+        return parseOptionalResolution(width, height);
+    }
+
+    private static @NonNull Optional<String> parseOptionalResolution(
+            @NonNull Optional<?> width, @NonNull Optional<?> height) {
         if (width.isPresent() && height.isPresent()) {
             return Optional.of(width.get() + "\u00d7" + height.get());
-        } else {
-            return Optional.empty();
         }
+        return Optional.empty();
     }
 
     @VisibleForTesting
     static @NonNull Optional<Long> parseOptionalDate(@Nullable String date) {
         if (TextUtils.isEmpty(date)) return Optional.empty();
         try {
-            synchronized (sDateFormat) {
-                final long value = sDateFormat.parse(date).getTime();
-                return (value > 0) ? Optional.of(value) : Optional.empty();
+            synchronized (S_DATE_FORMAT_WITH_MILLIS) {
+                return parseDateWithFormat(date, S_DATE_FORMAT_WITH_MILLIS);
             }
         } catch (ParseException e) {
+            // Log and try without millis as well
+            Log.d(TAG, String.format(
+                    "Parsing date with millis failed for [%s]. We will retry without millis",
+                    date));
+        }
+        try {
+            synchronized (S_DATE_FORMAT) {
+                return parseDateWithFormat(date, S_DATE_FORMAT);
+            }
+        } catch (ParseException e) {
+            Log.d(TAG, String.format("Parsing date without millis failed for [%s]", date));
             return Optional.empty();
         }
     }
 
+    private static Optional<Long> parseDateWithFormat(
+            @Nullable String date, SimpleDateFormat dateFormat) throws ParseException {
+        final long value = dateFormat.parse(date).getTime();
+        return (value > 0) ? Optional.of(value) : Optional.empty();
+    }
+
     @VisibleForTesting
     static @NonNull Optional<Integer> parseOptionalYear(@Nullable String value) {
         final Optional<String> parsedValue = parseOptional(value);
diff --git a/src/com/android/providers/media/scan/NullMediaScanner.java b/src/com/android/providers/media/scan/NullMediaScanner.java
index 3dfe4a2..3f84109 100644
--- a/src/com/android/providers/media/scan/NullMediaScanner.java
+++ b/src/com/android/providers/media/scan/NullMediaScanner.java
@@ -64,4 +64,14 @@
     public void onDetachVolume(String volumeName) {
         // Ignored
     }
+
+    @Override
+    public void onIdleScanStopped() {
+        // Ignored
+    }
+
+    @Override
+    public void onDirectoryDirty(File file) {
+        // Ignored
+    }
 }
diff --git a/src/com/android/providers/media/util/ExifUtils.java b/src/com/android/providers/media/util/ExifUtils.java
index 7593ec8..f3a23eb 100644
--- a/src/com/android/providers/media/util/ExifUtils.java
+++ b/src/com/android/providers/media/util/ExifUtils.java
@@ -34,6 +34,7 @@
 
 import androidx.annotation.GuardedBy;
 import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
 
 import java.text.ParsePosition;
 import java.text.SimpleDateFormat;
@@ -145,19 +146,26 @@
             long msecs = datetime.getTime();
 
             if (subSecs != null) {
-                try {
-                    long sub = Long.parseLong(subSecs);
-                    while (sub > 1000) {
-                        sub /= 10;
-                    }
-                    msecs += sub;
-                } catch (NumberFormatException e) {
-                    // Ignored
-                }
+                msecs += parseSubSeconds(subSecs);
             }
             return msecs;
         } catch (IllegalArgumentException e) {
             return -1;
         }
     }
+
+    @VisibleForTesting
+    static @CurrentTimeMillisLong long parseSubSeconds(@NonNull String subSec) {
+        try {
+            final int len = Math.min(subSec.length(), 3);
+            long sub = Long.parseLong(subSec.substring(0, len));
+            for (int i = len; i < 3; i++) {
+                sub *= 10;
+            }
+            return sub;
+        } catch (NumberFormatException e) {
+            // Ignored
+        }
+        return 0L;
+    }
 }
diff --git a/src/com/android/providers/media/util/FileUtils.java b/src/com/android/providers/media/util/FileUtils.java
index 47c5bc1..0d6494b 100644
--- a/src/com/android/providers/media/util/FileUtils.java
+++ b/src/com/android/providers/media/util/FileUtils.java
@@ -49,6 +49,7 @@
 import android.os.Environment;
 import android.os.ParcelFileDescriptor;
 import android.os.storage.StorageManager;
+import android.os.storage.StorageVolume;
 import android.provider.MediaStore;
 import android.provider.MediaStore.MediaColumns;
 import android.system.ErrnoException;
@@ -89,6 +90,11 @@
 import java.util.regex.Pattern;
 
 public class FileUtils {
+    // Even though vfat allows 255 UCS-2 chars, we might eventually write to
+    // ext4 through a FUSE layer, so use that limit.
+    @VisibleForTesting
+    static final int MAX_FILENAME_BYTES = 255;
+
     /**
      * Drop-in replacement for {@link ParcelFileDescriptor#open(File, int)}
      * which adds security features like {@link OsConstants#O_CLOEXEC} and
@@ -386,18 +392,31 @@
         }
     }
 
+    private static final int MAX_READ_STRING_SIZE = 4096;
+
     /**
      * Read given {@link File} as a single {@link String}. Returns
-     * {@link Optional#empty()} when the file doesn't exist.
+     * {@link Optional#empty()} when
+     * <ul>
+     * <li> the file doesn't exist or
+     * <li> the size of the file exceeds {@code MAX_READ_STRING_SIZE}
+     * </ul>
      */
     public static @NonNull Optional<String> readString(@NonNull File file) throws IOException {
         try {
-            final String value = new String(Files.readAllBytes(file.toPath()),
-                    StandardCharsets.UTF_8);
-            return Optional.of(value);
-        } catch (NoSuchFileException e) {
-            return Optional.empty();
+            if (file.length() <= MAX_READ_STRING_SIZE) {
+                final String value = new String(Files.readAllBytes(file.toPath()),
+                        StandardCharsets.UTF_8);
+                return Optional.of(value);
+            }
+            // When file size exceeds MAX_READ_STRING_SIZE, file is either
+            // corrupted or doesn't the contain expected data. Hence we return
+            // Optional.empty() which will be interpreted as empty file.
+            Logging.logPersistent(String.format("Ignored reading %s, file size exceeds %d", file,
+                    MAX_READ_STRING_SIZE));
+        } catch (NoSuchFileException ignored) {
         }
+        return Optional.empty();
     }
 
     /**
@@ -507,9 +526,8 @@
                 res.append('_');
             }
         }
-        // Even though vfat allows 255 UCS-2 chars, we might eventually write to
-        // ext4 through a FUSE layer, so use that limit.
-        trimFilename(res, 255);
+
+        trimFilename(res, MAX_FILENAME_BYTES);
         return res.toString();
     }
 
@@ -573,7 +591,7 @@
                     int i = Integer.parseInt(dcfStrict.group(2));
                     @Override
                     public String next() {
-                        final String res = String.format("%s%04d", prefix, i);
+                        final String res = String.format(Locale.US, "%s%04d", prefix, i);
                         i++;
                         return res;
                     }
@@ -589,11 +607,14 @@
                 // Generate names like "IMG_20190102_030405~2"
                 final String prefix = dcfRelaxed.group(1);
                 return new Iterator<String>() {
-                    int i = TextUtils.isEmpty(dcfRelaxed.group(2)) ? 1
+                    int i = TextUtils.isEmpty(dcfRelaxed.group(2))
+                            ? 1
                             : Integer.parseInt(dcfRelaxed.group(2));
                     @Override
                     public String next() {
-                        final String res = (i == 1) ? prefix : String.format("%s~%d", prefix, i);
+                        final String res = (i == 1)
+                            ? prefix
+                            : String.format(Locale.US, "%s~%d", prefix, i);
                         i++;
                         return res;
                     }
@@ -807,8 +828,15 @@
         }
 
         final Uri uri = MediaStore.Files.getContentUri(volumeName);
-        final File path = context.getSystemService(StorageManager.class).getStorageVolume(uri)
-                .getDirectory();
+        File path = null;
+
+        try {
+            path = context.getSystemService(StorageManager.class).getStorageVolume(uri)
+                    .getDirectory();
+        } catch (IllegalStateException e) {
+            Log.w("Ignoring volume not found exception", e);
+        }
+
         if (path != null) {
             return path;
         } else {
@@ -831,19 +859,24 @@
     /**
      * Return volume name which hosts the given path.
      */
-    public static @NonNull String getVolumeName(@NonNull Context context, @NonNull File path) {
+    public static @NonNull String getVolumeName(@NonNull Context context, @NonNull File path)
+            throws FileNotFoundException {
         if (contains(Environment.getStorageDirectory(), path)) {
-            return context.getSystemService(StorageManager.class).getStorageVolume(path)
-                    .getMediaStoreVolumeName();
+            StorageVolume volume = context.getSystemService(StorageManager.class)
+                    .getStorageVolume(path);
+            if (volume == null) {
+                throw new FileNotFoundException("Can't find volume for " + path.getPath());
+            }
+            return volume.getMediaStoreVolumeName();
         } else {
             return MediaStore.VOLUME_INTERNAL;
         }
     }
 
     public static final Pattern PATTERN_DOWNLOADS_FILE = Pattern.compile(
-            "(?i)^/storage/[^/]+/(?:[0-9]+/)?(?:Android/sandbox/[^/]+/)?Download/.+");
+            "(?i)^/storage/[^/]+/(?:[0-9]+/)?Download/.+");
     public static final Pattern PATTERN_DOWNLOADS_DIRECTORY = Pattern.compile(
-            "(?i)^/storage/[^/]+/(?:[0-9]+/)?(?:Android/sandbox/[^/]+/)?Download/?");
+            "(?i)^/storage/[^/]+/(?:[0-9]+/)?Download/?");
     public static final Pattern PATTERN_EXPIRES_FILE = Pattern.compile(
             "(?i)^\\.(pending|trashed)-(\\d+)-([^/]+)$");
     public static final Pattern PATTERN_PENDING_FILEPATH_FOR_SQL = Pattern.compile(
@@ -884,7 +917,7 @@
      * and which captures the package name as the first group.
      */
     public static final Pattern PATTERN_OWNED_PATH = Pattern.compile(
-            "(?i)^/storage/[^/]+/(?:[0-9]+/)?Android/(?:data|media|obb|sandbox)/([^/]+)(/?.*)?");
+            "(?i)^/storage/[^/]+/(?:[0-9]+/)?Android/(?:data|media|obb)/([^/]+)(/?.*)?");
 
     /**
      * Regex that matches Android/obb or Android/data path.
@@ -892,6 +925,12 @@
     public static final Pattern PATTERN_DATA_OR_OBB_PATH = Pattern.compile(
             "(?i)^/storage/[^/]+/(?:[0-9]+/)?Android/(?:data|obb)/?$");
 
+    /**
+     * Regex that matches Android/obb paths.
+     */
+    public static final Pattern PATTERN_OBB_OR_CHILD_PATH = Pattern.compile(
+            "(?i)^/storage/[^/]+/(?:[0-9]+/)?Android/(?:obb)(/?.*)");
+
     @VisibleForTesting
     public static final String[] DEFAULT_FOLDER_NAMES = {
             Environment.DIRECTORY_MUSIC,
@@ -908,11 +947,10 @@
     };
 
     /**
-     * Regex that matches paths for {@link MediaColumns#RELATIVE_PATH}; it
-     * captures both top-level paths and sandboxed paths.
+     * Regex that matches paths for {@link MediaColumns#RELATIVE_PATH}
      */
     private static final Pattern PATTERN_RELATIVE_PATH = Pattern.compile(
-            "(?i)^/storage/(?:emulated/[0-9]+/|[^/]+/)(Android/sandbox/([^/]+)/)?");
+            "(?i)^/storage/(?:emulated/[0-9]+/|[^/]+/)");
 
     /**
      * Regex that matches paths under well-known storage paths.
@@ -1022,6 +1060,15 @@
     }
 
     /**
+     * Returns true if relative path is Android/obb path.
+     */
+    public static boolean isObbOrChildPath(String path) {
+        if (path == null) return false;
+        final Matcher m = PATTERN_OBB_OR_CHILD_PATH.matcher(path);
+        return m.matches();
+    }
+
+    /**
      * Returns the name of the top level directory, or null if the path doesn't go through the
      * external storage directory.
      */
@@ -1146,13 +1193,21 @@
         if (!isForFuse && getAsBoolean(values, MediaColumns.IS_PENDING, false)) {
             final long dateExpires = getAsLong(values, MediaColumns.DATE_EXPIRES,
                     (System.currentTimeMillis() + DEFAULT_DURATION_PENDING) / 1000);
-            resolvedDisplayName = String.format(".%s-%d-%s",
-                    FileUtils.PREFIX_PENDING, dateExpires, displayName);
+            final String combinedString = String.format(
+                    Locale.US, ".%s-%d-%s", FileUtils.PREFIX_PENDING, dateExpires, displayName);
+            // trim the file name to avoid ENAMETOOLONG error
+            // after trim the file, if the user unpending the file,
+            // the file name is not the original one
+            resolvedDisplayName = trimFilename(combinedString, MAX_FILENAME_BYTES);
         } else if (getAsBoolean(values, MediaColumns.IS_TRASHED, false)) {
             final long dateExpires = getAsLong(values, MediaColumns.DATE_EXPIRES,
                     (System.currentTimeMillis() + DEFAULT_DURATION_TRASHED) / 1000);
-            resolvedDisplayName = String.format(".%s-%d-%s",
-                    FileUtils.PREFIX_TRASHED, dateExpires, displayName);
+            final String combinedString = String.format(
+                    Locale.US, ".%s-%d-%s", FileUtils.PREFIX_TRASHED, dateExpires, displayName);
+            // trim the file name to avoid ENAMETOOLONG error
+            // after trim the file, if the user untrashes the file,
+            // the file name is not the original one
+            resolvedDisplayName = trimFilename(combinedString, MAX_FILENAME_BYTES);
         } else {
             resolvedDisplayName = displayName;
         }
@@ -1322,4 +1377,60 @@
         }
         return status;
     }
+
+    /**
+     * @return {@code true} if {@code dir} is dirty and should be scanned, {@code false} otherwise.
+     */
+    public static boolean isDirectoryDirty(File dir) {
+        File nomedia = new File(dir, ".nomedia");
+        if (nomedia.exists()) {
+            try {
+                Optional<String> expectedPath = readString(nomedia);
+                // Returns true If .nomedia file is empty or content doesn't match |dir|
+                // Returns false otherwise
+                return !expectedPath.isPresent()
+                        || !expectedPath.get().equals(dir.getPath());
+            } catch (IOException e) {
+                Log.w(TAG, "Failed to read directory dirty" + dir);
+            }
+        }
+        return true;
+    }
+
+    /**
+     * {@code isDirty} == {@code true} will force {@code dir} scanning even if it's hidden
+     * {@code isDirty} == {@code false} will skip {@code dir} scanning on next scan.
+     */
+    public static void setDirectoryDirty(File dir, boolean isDirty) {
+        File nomedia = new File(dir, ".nomedia");
+        if (nomedia.exists()) {
+            try {
+                writeString(nomedia, isDirty ? Optional.of("") : Optional.of(dir.getPath()));
+            } catch (IOException e) {
+                Log.w(TAG, "Failed to change directory dirty: " + dir + ". isDirty: " + isDirty);
+            }
+        }
+    }
+
+    /**
+     * @return the folder containing the top-most .nomedia in {@code file} hierarchy.
+     * E.g input as /sdcard/foo/bar/ will return /sdcard/foo
+     * even if foo and bar contain .nomedia files.
+     *
+     * Returns {@code null} if there's no .nomedia in hierarchy
+     */
+    public static File getTopLevelNoMedia(@NonNull File file) {
+        File topNoMediaDir = null;
+
+        File parent = file;
+        while (parent != null) {
+            File nomedia = new File(parent, ".nomedia");
+            if (nomedia.exists()) {
+                topNoMediaDir = parent;
+            }
+            parent = parent.getParentFile();
+        }
+
+        return topNoMediaDir;
+    }
 }
diff --git a/src/com/android/providers/media/util/PermissionUtils.java b/src/com/android/providers/media/util/PermissionUtils.java
index adbe0e2..09e01a9 100644
--- a/src/com/android/providers/media/util/PermissionUtils.java
+++ b/src/com/android/providers/media/util/PermissionUtils.java
@@ -17,12 +17,15 @@
 package com.android.providers.media.util;
 
 import static android.Manifest.permission.BACKUP;
+import static android.Manifest.permission.INSTALL_PACKAGES;
 import static android.Manifest.permission.MANAGE_EXTERNAL_STORAGE;
 import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
 import static android.Manifest.permission.UPDATE_DEVICE_STATS;
 import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
 import static android.app.AppOpsManager.MODE_ALLOWED;
+import static android.app.AppOpsManager.OPSTR_REQUEST_INSTALL_PACKAGES;
 import static android.app.AppOpsManager.OPSTR_LEGACY_STORAGE;
+import static android.app.AppOpsManager.OPSTR_NO_ISOLATED_STORAGE;
 import static android.app.AppOpsManager.OPSTR_READ_MEDIA_AUDIO;
 import static android.app.AppOpsManager.OPSTR_READ_MEDIA_IMAGES;
 import static android.app.AppOpsManager.OPSTR_READ_MEDIA_VIDEO;
@@ -42,8 +45,6 @@
 
 public class PermissionUtils {
 
-    public static final String OPSTR_NO_ISOLATED_STORAGE = "android:no_isolated_storage";
-
     // Callers must hold both the old and new permissions, so that we can
     // handle obscure cases like when an app targets Q but was installed on
     // a device that was originally running on P before being upgraded to Q.
@@ -185,6 +186,12 @@
                 generateAppOpMessage(packageName, sOpDescription.get()));
     }
 
+    public static boolean checkPermissionInstallPackages(@NonNull Context context, int pid, int uid,
+        @NonNull String packageName, @Nullable String attributionTag) {
+        return checkPermissionForDataDelivery(context, INSTALL_PACKAGES, pid,
+            uid, packageName, attributionTag, null);
+    }
+
     /**
      * Returns {@code true} if the given package has write images or write video app op, which
      * indicates the package is a system gallery.
@@ -199,6 +206,20 @@
                 generateAppOpMessage(packageName, sOpDescription.get()));
     }
 
+    /**
+     * Returns {@code true} if any package for the given uid has request_install_packages app op.
+     */
+    public static boolean checkAppOpRequestInstallPackagesForSharedUid(@NonNull Context context,
+            int uid, @NonNull String[] sharedPackageNames, @Nullable String attributionTag) {
+        for (String packageName : sharedPackageNames) {
+            if (checkAppOp(context, OPSTR_REQUEST_INSTALL_PACKAGES, uid, packageName,
+                    attributionTag, generateAppOpMessage(packageName, sOpDescription.get()))) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     @VisibleForTesting
     static boolean checkNoIsolatedStorageGranted(@NonNull Context context, int uid,
             @NonNull String packageName, @Nullable String attributionTag) {
diff --git a/src/com/android/providers/media/util/SQLiteQueryBuilder.java b/src/com/android/providers/media/util/SQLiteQueryBuilder.java
index e68cb80..75daeaf 100644
--- a/src/com/android/providers/media/util/SQLiteQueryBuilder.java
+++ b/src/com/android/providers/media/util/SQLiteQueryBuilder.java
@@ -45,6 +45,8 @@
 
 import com.android.providers.media.DatabaseHelper;
 
+import com.google.common.base.Strings;
+
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
@@ -61,6 +63,9 @@
  * {@link SQLiteDatabase} objects.
  */
 public class SQLiteQueryBuilder {
+
+    public static final String ROWID_COLUMN = "rowid";
+
     private static final String TAG = "SQLiteQueryBuilder";
 
     private static final Pattern sAggregationPattern = Pattern.compile(
@@ -229,6 +234,14 @@
         }
     }
 
+    /** Adds "rowid" to the projection map. */
+    public void allowRowidColumn() {
+        if (mProjectionMap == null) {
+            mProjectionMap = new ArrayMap<>();
+        }
+        mProjectionMap.put(ROWID_COLUMN, ROWID_COLUMN);
+    }
+
     /**
      * Gets the projection map for the query, as last configured by
      * {@link #setProjectionMap(Map)}.
@@ -516,7 +529,7 @@
         if (isStrictGrammar()) {
             enforceStrictGrammar(selection, groupBy, having, sortOrder, limit);
         }
-        if (isStrict()) {
+        if (isStrict() && hasUserWhere(selection)) {
             // Validate the user-supplied selection to detect syntactic anomalies
             // in the selection string that could indicate a SQL injection attempt.
             // The idea is to ensure that the selection clause is a valid SQL expression
@@ -636,7 +649,7 @@
         if (isStrictGrammar()) {
             enforceStrictGrammar(selection, null, null, null, null);
         }
-        if (isStrict()) {
+        if (isStrict() && hasUserWhere(selection)) {
             // Validate the user-supplied selection to detect syntactic anomalies
             // in the selection string that could indicate a SQL injection attempt.
             // The idea is to ensure that the selection clause is a valid SQL expression
@@ -718,7 +731,7 @@
         if (isStrictGrammar()) {
             enforceStrictGrammar(selection, null, null, null, null);
         }
-        if (isStrict()) {
+        if (isStrict() && hasUserWhere(selection)) {
             // Validate the user-supplied selection to detect syntactic anomalies
             // in the selection string that could indicate a SQL injection attempt.
             // The idea is to ensure that the selection clause is a valid SQL expression
@@ -753,6 +766,10 @@
         return com.android.providers.media.util.DatabaseUtils.executeUpdateDelete(db, sql, sqlArgs);
     }
 
+    private static boolean hasUserWhere(@Nullable String selection) {
+        return !Strings.isNullOrEmpty(selection);
+    }
+
     private void enforceStrictColumns(@Nullable String[] projection) {
         Objects.requireNonNull(mProjectionMap, "No projection map defined");
 
@@ -1122,7 +1139,13 @@
         }
     }
 
-    private static boolean shouldAppendRowId(ContentValues values) {
-        return !values.containsKey(MediaColumns._ID) && values.containsKey(MediaColumns.DATA);
+    @VisibleForTesting
+    boolean shouldAppendRowId(ContentValues values) {
+        // When no projectionMap provided, don't add the row
+        final boolean hasIdInProjectionMap = mProjectionMap != null && mProjectionMap.containsKey(
+                MediaColumns._ID) && TextUtils.equals(mProjectionMap.get(MediaColumns._ID),
+                MediaColumns._ID);
+        return !values.containsKey(MediaColumns._ID) && values.containsKey(MediaColumns.DATA)
+                && hasIdInProjectionMap;
     }
 }
diff --git a/src/com/android/providers/media/util/XmpInterface.java b/src/com/android/providers/media/util/XmpInterface.java
index 1a316e7..f5ead46 100644
--- a/src/com/android/providers/media/util/XmpInterface.java
+++ b/src/com/android/providers/media/util/XmpInterface.java
@@ -65,7 +65,7 @@
     private static final String NAME_INSTANCE_ID = "InstanceID";
 
     private final LongArray mRedactedRanges = new LongArray();
-    private byte[] mRedactedXmp;
+    private @NonNull byte[] mRedactedXmp;
     private String mFormat;
     private String mDocumentId;
     private String mInstanceId;
@@ -223,7 +223,7 @@
         return mOriginalDocumentId;
     }
 
-    public @Nullable byte[] getRedactedXmp() {
+    public @NonNull byte[] getRedactedXmp() {
         return mRedactedXmp;
     }
 
diff --git a/tests/Android.bp b/tests/Android.bp
index cab61cf..8054a05 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -17,9 +17,11 @@
         "main_res",
         "res",
     ],
+
     srcs: [
         ":framework-mediaprovider-sources",
         ":mediaprovider-sources",
+        ":mediaprovider-testutils",
         "src/**/*.java",
     ],
 
@@ -50,3 +52,8 @@
         ],
     },
 }
+
+filegroup {
+    name: "mediaprovider-testutils",
+    srcs: ["utils/**/*.java"],
+}
diff --git a/tests/client/Android.bp b/tests/client/Android.bp
index 26a0a0b..2b35634 100644
--- a/tests/client/Android.bp
+++ b/tests/client/Android.bp
@@ -10,6 +10,7 @@
 
     srcs: [
         "src/**/*.java",
+        ":mediaprovider-testutils",
     ],
 
     libs: [
diff --git a/tests/client/src/com/android/providers/media/client/ClientPlaylistTest.java b/tests/client/src/com/android/providers/media/client/ClientPlaylistTest.java
index 79efb4c..9aaaae2 100644
--- a/tests/client/src/com/android/providers/media/client/ClientPlaylistTest.java
+++ b/tests/client/src/com/android/providers/media/client/ClientPlaylistTest.java
@@ -16,16 +16,19 @@
 
 package com.android.providers.media.client;
 
+import static android.provider.MediaStore.VOLUME_EXTERNAL;
 import static android.provider.MediaStore.VOLUME_EXTERNAL_PRIMARY;
 import static android.provider.MediaStore.VOLUME_INTERNAL;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import android.content.ContentResolver;
 import android.content.ContentUris;
 import android.content.ContentValues;
 import android.content.Context;
+import android.database.ContentObserver;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
@@ -52,6 +55,8 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Verify typical behaviors of {@link MediaStore.Audio.Playlists} from an
@@ -117,82 +122,127 @@
         mValues.put(MediaColumns.DISPLAY_NAME, "Playlist " + System.nanoTime());
         mValues.put(MediaColumns.MIME_TYPE, mMimeType);
 
-        final Uri playlist = mContentResolver.insert(mExternalPlaylists, mValues);
-        final Uri members = MediaStore.Audio.Playlists.Members
-                .getContentUri(VOLUME_EXTERNAL_PRIMARY, ContentUris.parseId(playlist));
+        final Uri playlistUri = mContentResolver.insert(mExternalPlaylists, mValues);
+        final Uri externalVolumePlaylistUri = getExternalVolumePlaylistUri(
+                ContentUris.parseId(playlistUri));
+
+        final TestContentObserverHelper obs = TestContentObserverHelper.create(
+                Arrays.asList(playlistUri, externalVolumePlaylistUri),
+                ContentResolver.NOTIFY_INSERT);
+        final Uri membersUri = MediaStore.Audio.Playlists.Members
+                .getContentUri(VOLUME_EXTERNAL_PRIMARY, ContentUris.parseId(playlistUri));
 
         // Inserting without ordering will always append
         mValues.clear();
         mValues.put(Playlists.Members.AUDIO_ID, mRed);
-        mContentResolver.insert(members, mValues);
+        Uri resultUri = mContentResolver.insert(membersUri, mValues);
+        obs.waitForChange();
+
         mValues.put(Playlists.Members.AUDIO_ID, mGreen);
-        mContentResolver.insert(members, mValues);
+        resultUri = mContentResolver.insert(membersUri, mValues);
+        obs.waitForChange();
         assertMembers(Arrays.asList(
                 Pair.create(mRed, 1),
-                Pair.create(mGreen, 2)), queryMembers(members));
+                Pair.create(mGreen, 2)), queryMembers(membersUri));
 
         // Inserting with ordering should be injected
         mValues.clear();
         mValues.put(Playlists.Members.AUDIO_ID, mBlue);
         mValues.put(Playlists.Members.PLAY_ORDER, 1);
-        mContentResolver.insert(members, mValues);
+        resultUri = mContentResolver.insert(membersUri, mValues);
+        obs.waitForChange();
         assertMembers(Arrays.asList(
                 Pair.create(mBlue, 1),
                 Pair.create(mRed, 2),
-                Pair.create(mGreen, 3)), queryMembers(members));
+                Pair.create(mGreen, 3)), queryMembers(membersUri));
+
+        obs.unregister();
     }
 
     @Test
     public void testMove() throws Exception {
         final long playlistId = createPlaylist(mRed, mGreen, mBlue);
-        final Uri members = Playlists.Members.getContentUri(VOLUME_EXTERNAL_PRIMARY, playlistId);
+        Uri playlistUri = ContentUris.withAppendedId(
+                MediaStore.Audio.Playlists.getContentUri(VOLUME_EXTERNAL), playlistId);
+        Uri externalVolumePlaylistUri = getExternalVolumePlaylistUri(playlistId);
+        final Uri membersUri = Playlists.Members.getContentUri(VOLUME_EXTERNAL_PRIMARY, playlistId);
+
+        TestContentObserverHelper obs = TestContentObserverHelper.create(
+                Arrays.asList(playlistUri, externalVolumePlaylistUri),
+                ContentResolver.NOTIFY_UPDATE);
+
 
         // Simple move forwards
-        Playlists.Members.moveItem(mContentResolver, playlistId, 0, 2);
+        boolean result = Playlists.Members.moveItem(mContentResolver, playlistId, 0, 2);
+        obs.waitForChange();
+        assertTrue(result);
         assertMembers(Arrays.asList(
                 Pair.create(mGreen, 1),
                 Pair.create(mBlue, 2),
-                Pair.create(mRed, 3)), queryMembers(members));
+                Pair.create(mRed, 3)), queryMembers(membersUri));
 
         // Simple move backwards
-        Playlists.Members.moveItem(mContentResolver, playlistId, 2, 0);
+        result = Playlists.Members.moveItem(mContentResolver, playlistId, 2, 0);
+        obs.waitForChange();
+        assertTrue(result);
         assertMembers(Arrays.asList(
                 Pair.create(mRed, 1),
                 Pair.create(mGreen, 2),
-                Pair.create(mBlue, 3)), queryMembers(members));
+                Pair.create(mBlue, 3)), queryMembers(membersUri));
 
         // Advanced moves using query args
         mValues.clear();
         mValues.put(Playlists.Members.PLAY_ORDER, 1);
-        mContentResolver.update(members, mValues, Playlists.Members.PLAY_ORDER + "=?",
-                new String[] { "2" });
+        int count = mContentResolver.update(membersUri, mValues,
+                Playlists.Members.PLAY_ORDER + "=?", new String[] { "2" });
+        obs.waitForChange();
+        assertEquals(1, count);
         assertMembers(Arrays.asList(
                 Pair.create(mGreen, 1),
                 Pair.create(mRed, 2),
-                Pair.create(mBlue, 3)), queryMembers(members));
+                Pair.create(mBlue, 3)), queryMembers(membersUri));
 
-        mContentResolver.update(members, mValues, Playlists.Members.PLAY_ORDER + "=2", null);
+
+        count = mContentResolver.update(membersUri, mValues,
+                Playlists.Members.PLAY_ORDER + "=2", null);
+        obs.waitForChange();
+        assertEquals(1, count);
         assertMembers(Arrays.asList(
                 Pair.create(mRed, 1),
                 Pair.create(mGreen, 2),
-                Pair.create(mBlue, 3)), queryMembers(members));
+                Pair.create(mBlue, 3)), queryMembers(membersUri));
+
+        obs.unregister();
     }
 
     @Test
     public void testRemove() throws Exception {
         final long playlistId = createPlaylist(mRed, mGreen, mBlue);
-        final Uri members = Playlists.Members.getContentUri(VOLUME_EXTERNAL_PRIMARY, playlistId);
+        final Uri membersUri = Playlists.Members.getContentUri(VOLUME_EXTERNAL_PRIMARY, playlistId);
+
+        final Uri playlistUri = ContentUris.withAppendedId(
+                MediaStore.Audio.Playlists.getContentUri(VOLUME_EXTERNAL_PRIMARY), playlistId);
+        final Uri externalVolumePlaylistUri = getExternalVolumePlaylistUri(playlistId);
+        final TestContentObserverHelper obs = TestContentObserverHelper.create(
+                Arrays.asList(playlistUri, externalVolumePlaylistUri),
+                ContentResolver.NOTIFY_DELETE);
 
         // Simple delete in middle, duplicates are okay
-        mContentResolver.delete(members, Playlists.Members.PLAY_ORDER + "=?",
+        int count = mContentResolver.delete(membersUri, Playlists.Members.PLAY_ORDER + "=?",
                 new String[] { "2" });
+        obs.waitForChange();
+        assertEquals(count, 1);
         assertMembers(Arrays.asList(
                 Pair.create(mRed, 1),
-                Pair.create(mBlue, 2)), queryMembers(members));
+                Pair.create(mBlue, 2)), queryMembers(membersUri));
 
-        mContentResolver.delete(members, Playlists.Members.PLAY_ORDER + "=2", null);
+        count = mContentResolver.delete(membersUri, Playlists.Members.PLAY_ORDER + "=2", null);
+        obs.waitForChange();
+        assertEquals(count, 1);
         assertMembers(Arrays.asList(
-                Pair.create(mRed, 1)), queryMembers(members));
+                Pair.create(mRed, 1)), queryMembers(membersUri));
+
+        obs.unregister();
     }
 
     /**
@@ -245,8 +295,15 @@
         mValues.clear();
         mValues.put(MediaColumns.DISPLAY_NAME, "Playlist " + System.nanoTime());
         mValues.put(MediaColumns.MIME_TYPE, mMimeType);
+        final Uri externalVolumePlaylistUri = MediaStore.Audio.Playlists
+                .getContentUri(VOLUME_EXTERNAL_PRIMARY);
+        final TestContentObserverHelper obs = TestContentObserverHelper.create(
+                Arrays.asList(mExternalPlaylists, externalVolumePlaylistUri),
+                ContentResolver.NOTIFY_INSERT);
 
         final Uri playlist = mContentResolver.insert(mExternalPlaylists, mValues);
+        obs.waitForChange();
+        obs.unregister();
         final Uri members = MediaStore.Audio.Playlists.Members
                 .getContentUri(VOLUME_EXTERNAL_PRIMARY, ContentUris.parseId(playlist));
 
@@ -263,6 +320,11 @@
         return ContentUris.parseId(playlist);
     }
 
+    private static Uri getExternalVolumePlaylistUri(long playlistId) {
+        return ContentUris.withAppendedId(
+            MediaStore.Audio.Playlists.getContentUri(VOLUME_EXTERNAL), playlistId);
+    }
+
     private void assertMembers(List<Pair<Long, Integer>> expected,
             List<Pair<Long, Integer>> actual) {
         assertEquals(expected.toString(), actual.toString());
@@ -283,4 +345,81 @@
         }
         return res;
     }
+
+    /**
+     * Observer that will wait for a specific change event to be delivered on all the given uris.
+     */
+    private static class TestContentObserverHelper {
+        private List<TestContentObserver> observers;
+
+        private TestContentObserverHelper(List<TestContentObserver> observers) {
+            this.observers = observers;
+        }
+
+        private static TestContentObserverHelper create(List<Uri> uris, int flags) {
+            List<TestContentObserver> observers = new ArrayList();
+            for (Uri uri : uris) {
+                final TestContentObserver observer = TestContentObserver.create(uri, flags);
+                observers.add(observer);
+            }
+            final TestContentObserverHelper obsWrapper = new TestContentObserverHelper(observers);
+            return obsWrapper;
+        }
+
+        private void waitForChange() {
+            for (TestContentObserver observer : observers) {
+                observer.waitForChange();
+            }
+        }
+
+        private void unregister() {
+            for (TestContentObserver observer : observers) {
+                observer.unregister();
+            }
+        }
+    }
+
+    /**
+     * Observer that will wait for a specific change event to be delivered.
+     */
+    public static class TestContentObserver extends ContentObserver {
+        private final int flags;
+
+        private CountDownLatch latch = new CountDownLatch(1);
+
+        private TestContentObserver(int flags) {
+            super(null);
+            this.flags = flags;
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri, int flags) {
+            Log.v(TAG, String.format("onChange(%b, %s, %d)", selfChange, uri.toString(), flags));
+
+            if (flags == this.flags) {
+                latch.countDown();
+            }
+        }
+
+        public static TestContentObserver create(Uri uri, int flags) {
+            final TestContentObserver obs = new TestContentObserver(flags);
+            InstrumentationRegistry.getContext().getContentResolver()
+                    .registerContentObserver(uri, true, obs);
+            return obs;
+        }
+
+        public void waitForChange() {
+            try {
+                assertTrue(latch.await(5, TimeUnit.SECONDS));
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+            latch = new CountDownLatch(1);
+        }
+
+        public void unregister() {
+            InstrumentationRegistry.getContext().getContentResolver()
+                .unregisterContentObserver(this);
+        }
+    }
 }
diff --git a/tests/client/src/com/android/providers/media/client/DownloadProviderTest.java b/tests/client/src/com/android/providers/media/client/DownloadProviderTest.java
new file mode 100644
index 0000000..fc58590
--- /dev/null
+++ b/tests/client/src/com/android/providers/media/client/DownloadProviderTest.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright (C) 2020 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.providers.media.client;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertTrue;
+
+import android.app.UiAutomation;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.os.ParcelFileDescriptor;
+import android.os.storage.StorageManager;
+import android.provider.MediaStore;
+import android.util.Log;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.google.common.io.ByteStreams;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.function.Supplier;
+
+/**
+ * Verify DownloadProvider's access to app's private files on primary and public volumes.
+ * DownloadProvider and Media Provider client tests use the same shared UID
+ * `android:sharedUserId="android.media"` which helps us test DownloadProvider's behavior here
+ */
+@RunWith(AndroidJUnit4.class)
+public class DownloadProviderTest {
+
+    private static final String TAG = "DownloadProviderTest";
+    private static final  String OTHER_PKG_NAME = "com.example.foo";
+    private static final long POLLING_TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(1);
+    private static final long POLLING_SLEEP_MILLIS = 100;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        createNewPublicVolume();
+    }
+
+    @AfterClass
+    public static void tearDown() throws Exception {
+        deletePublicVolumes();
+    }
+
+    private static void deletePublicVolumes() throws Exception {
+        executeShellCommand("sm set-virtual-disk false");
+    }
+
+    @Test
+    public void testCanReadWriteOtherAppPrivateFiles() throws Exception {
+        List<File> otherPackageDirs = createOtherPackageExternalFilesDir();
+        List<File> otherPackagePrivateFiles = createOtherPackagePrivateFile(otherPackageDirs);
+        for (File privateFile: otherPackagePrivateFiles) {
+            assertTrue(canOpenForWrite(privateFile));
+        }
+        deleteOtherPackageExternalFiles(otherPackageDirs);
+    }
+
+    @Test
+    public void testCanOpenOtherAppPrivateDir() throws Exception {
+        List<File> otherPackageDirs = createOtherPackageExternalFilesDir();
+        for (File privateDir: otherPackageDirs) {
+            String[] dirContents = privateDir.list();
+            assertThat(dirContents).asList().containsExactly("files");
+        }
+        deleteOtherPackageExternalFiles(otherPackageDirs);
+    }
+
+    private List<File> createOtherPackageExternalFilesDir() throws Exception {
+        final Context context = InstrumentationRegistry.getTargetContext();
+        Set<String> volNames = MediaStore.getExternalVolumeNames(context);
+        List<File> otherPackageDirs = new ArrayList();
+
+        for (String volName : volNames) {
+            File volPath = getVolumePath(context, volName);
+            // List of private external package files for other package on the same volume
+            List<String> otherPackageDirsOnSameVolume = new ArrayList();
+            final String otherPackageDataDir = volPath.getAbsolutePath() + "/Android/data/"
+                    + OTHER_PKG_NAME;
+            otherPackageDirsOnSameVolume.add(otherPackageDataDir);
+            final String otherPackageObbDir = volPath.getAbsolutePath() + "/Android/obb/"
+                    + OTHER_PKG_NAME;
+            otherPackageDirsOnSameVolume.add(otherPackageObbDir);
+
+            for (String dir: otherPackageDirsOnSameVolume) {
+                otherPackageDirs.add(new File(dir));
+                final String otherPackageExternalFilesDir = dir + "/files";
+                executeShellCommand("mkdir -p " + otherPackageExternalFilesDir + " -m 2770");
+                // Need to wait for the directory to be created, as the rest of the test depends on
+                // the dir to be created. A race condition can cause the test to be flaky.
+                pollForDirectoryToBeCreated(new File(otherPackageExternalFilesDir));
+            }
+        }
+        return otherPackageDirs;
+    }
+
+    private List<File> createOtherPackagePrivateFile(List<File> otherPackageDirs) throws Exception {
+        List<File> otherPackagePrivateFiles = new ArrayList();
+        for (File otherPackageDir : otherPackageDirs) {
+            final String otherPackagePrivateFile = otherPackageDir + "/files/test.txt";
+            otherPackagePrivateFiles.add(new File(otherPackagePrivateFile));
+            executeShellCommand("touch " + otherPackagePrivateFile);
+        }
+        return otherPackagePrivateFiles;
+    }
+
+    private void deleteOtherPackageExternalFiles(List<File> otherPackageDirs) throws Exception {
+        for (File dir: otherPackageDirs) {
+            executeShellCommand("rm -r " + dir.getAbsolutePath());
+            // Need to wait for the directory to be deleted, as it is flaky sometimes due to the
+            // race condition in rm and the next mkdir for the next test.
+            pollForDirectoryToBeDeleted(dir);
+        }
+    }
+
+    /**
+     * Returns whether we can open the file.
+     */
+    private static boolean canOpenForWrite(File file) {
+        try (FileOutputStream fis = new FileOutputStream(file)) {
+            return true;
+        } catch (IOException expected) {
+            return false;
+        }
+    }
+
+    private static File getVolumePath(Context context, String volumeName) {
+        return context.getSystemService(StorageManager.class)
+            .getStorageVolume(MediaStore.Files.getContentUri(volumeName)).getDirectory();
+    }
+
+    private static String executeShellCommand(String cmd) throws IOException {
+        UiAutomation uiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        ParcelFileDescriptor pfd = uiAutomation.executeShellCommand(cmd);
+        try (FileInputStream output = new FileInputStream(pfd.getFileDescriptor())) {
+            return new String(ByteStreams.toByteArray(output));
+        }
+    }
+
+    private static void pollForCondition(Supplier<Boolean> condition, String errorMessage)
+            throws Exception {
+        for (int i = 0; i < POLLING_TIMEOUT_MILLIS / POLLING_SLEEP_MILLIS; i++) {
+            if (condition.get()) {
+                return;
+            }
+            Thread.sleep(POLLING_SLEEP_MILLIS);
+        }
+        throw new TimeoutException(errorMessage);
+    }
+
+    /**
+     * Polls for directory to be created
+     */
+    private static void pollForDirectoryToBeCreated(File dir) throws Exception {
+        pollForCondition(
+            () -> dir.exists(),
+            "Timed out while waiting for dir " + dir + " to be created");
+    }
+
+    /**
+     * Polls for directory to be deleted
+     */
+    private static void pollForDirectoryToBeDeleted(File dir) throws Exception {
+        pollForCondition(
+            () -> !dir.exists(),
+            "Timed out while waiting for dir " + dir + " to be deleted");
+    }
+
+    /**
+     * Creates a new virtual public volume and returns the volume's name.
+     */
+    private static void createNewPublicVolume() throws Exception {
+        executeShellCommand("sm set-force-adoptable on");
+        executeShellCommand("sm set-virtual-disk true");
+        pollForCondition(() -> partitionDisk(), "Timed out while waiting for"
+                + " disk partitioning");
+        pollForCondition(() -> isPublicVolumeMounted(), "Timed out while waiting for"
+                + " the public volume to mount");
+    }
+
+    private static boolean isPublicVolumeMounted() {
+        try {
+            final String publicVolume = executeShellCommand("sm list-volumes public").trim();
+            return publicVolume != null && publicVolume.contains("mounted");
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    private static boolean partitionDisk() {
+        try {
+            final String listDisks = executeShellCommand("sm list-disks").trim();
+            if (listDisks.length() > 0) {
+                executeShellCommand("sm partition " + listDisks + " public");
+                return true;
+            }
+            return false;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+}
diff --git a/tests/client/src/com/android/providers/media/client/LegacyProviderMigrationTest.java b/tests/client/src/com/android/providers/media/client/LegacyProviderMigrationTest.java
index 0c1fc65..08b69a1 100644
--- a/tests/client/src/com/android/providers/media/client/LegacyProviderMigrationTest.java
+++ b/tests/client/src/com/android/providers/media/client/LegacyProviderMigrationTest.java
@@ -18,7 +18,9 @@
 
 import static android.provider.MediaStore.rewriteToLegacy;
 
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -26,6 +28,7 @@
 import android.content.ContentProviderClient;
 import android.content.ContentProviderOperation;
 import android.content.ContentResolver;
+import android.content.ContentUris;
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.pm.ProviderInfo;
@@ -96,6 +99,7 @@
     private Uri mExternalVideo;
     private Uri mExternalImages;
     private Uri mExternalDownloads;
+    private Uri mExternalPlaylists;
 
     @Before
     public void setUp() throws Exception {
@@ -104,6 +108,10 @@
         mExternalVideo = MediaStore.Video.Media.getContentUri(mVolumeName);
         mExternalImages = MediaStore.Images.Media.getContentUri(mVolumeName);
         mExternalDownloads = MediaStore.Downloads.getContentUri(mVolumeName);
+
+        Uri playlists = MediaStore.Audio.Playlists.getContentUri(mVolumeName);
+        mExternalPlaylists = playlists.buildUpon()
+                .appendQueryParameter("silent", "true").build();
     }
 
     private ContentValues generateValues(int mediaType, String mimeType, String dirName) {
@@ -194,15 +202,143 @@
         doLegacy(mExternalDownloads, values);
     }
 
-    /**
-     * Verify that a legacy database with thousands of media entries can be
-     * successfully migrated.
-     */
     @Test
-    public void testLegacy_Extreme() throws Exception {
+    public void testLegacy_PlaylistMap() throws Exception {
         final Context context = InstrumentationRegistry.getTargetContext();
         final UiAutomation ui = InstrumentationRegistry.getInstrumentation().getUiAutomation();
 
+        final ContentValues audios[] = new ContentValues[] {
+                generateValues(FileColumns.MEDIA_TYPE_AUDIO, "audio/mpeg",
+                        Environment.DIRECTORY_MUSIC),
+                generateValues(FileColumns.MEDIA_TYPE_AUDIO, "audio/mpeg",
+                        Environment.DIRECTORY_MUSIC),
+        };
+
+        final String playlistMimeType = "audio/mpegurl";
+        final ContentValues playlist = generateValues(FileColumns.MEDIA_TYPE_PLAYLIST,
+                playlistMimeType, "Playlists");
+        final String playlistName = "LegacyPlaylistName_" + System.nanoTime();
+        playlist.put(MediaStore.Audio.PlaylistsColumns.NAME, playlistName);
+        File playlistFile = new File(playlist.getAsString(MediaColumns.DATA));
+
+        playlistFile.delete();
+
+        final ContentValues playlistMap = new ContentValues();
+        playlistMap.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, 1);
+
+        prepareProviders(context, ui);
+
+        try (ContentProviderClient legacy = context.getContentResolver()
+                .acquireContentProviderClient(MediaStore.AUTHORITY_LEGACY)) {
+
+            // Step 1: Insert the playlist entry into the playlists table.
+            final Uri playlistUri = rewriteToLegacy(legacy.insert(
+                    rewriteToLegacy(mExternalPlaylists), playlist));
+            long playlistId = ContentUris.parseId(playlistUri);
+            final Uri playlistMemberUri = MediaStore.rewriteToLegacy(
+                    MediaStore.Audio.Playlists.Members.getContentUri(mVolumeName, playlistId)
+                            .buildUpon()
+                            .appendQueryParameter("silent", "true").build());
+
+
+            for (ContentValues values : audios) {
+                // Step 2: Write the audio file to the legacy mediastore.
+                final Uri audioUri =
+                        rewriteToLegacy(legacy.insert(rewriteToLegacy(mExternalAudio), values));
+                // Remember our ID to check it later
+                values.put(MediaColumns._ID, audioUri.getLastPathSegment());
+
+
+                long audioId = ContentUris.parseId(audioUri);
+                playlistMap.put(MediaStore.Audio.Playlists.Members.PLAYLIST_ID, playlistId);
+                playlistMap.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, audioId);
+
+                // Step 3: Add a mapping to playlist members.
+                legacy.insert(playlistMemberUri, playlistMap);
+            }
+
+            // Insert a stale row, We only have 3 items in the database. #4 is a stale row
+            // and will be skipped from the playlist during the migration.
+            playlistMap.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, 4);
+            legacy.insert(playlistMemberUri, playlistMap);
+
+        }
+
+        // This will delete MediaProvider data and restarts MediaProvider, and mounts storage.
+        clearProviders(context, ui);
+
+        // Verify scan on DEMAND doesn't delete any virtual playlist files.
+        MediaStore.scanFile(context.getContentResolver(),
+                Environment.getExternalStorageDirectory());
+
+        // Playlist files are created from playlist NAME
+        final File musicDir = new File(context.getSystemService(StorageManager.class)
+                .getStorageVolume(MediaStore.Files.getContentUri(mVolumeName)).getDirectory(),
+                Environment.DIRECTORY_MUSIC);
+        playlistFile = new File(musicDir, playlistName + "."
+                + MimeTypeMap.getSingleton().getExtensionFromMimeType(playlistMimeType));
+        // Wait for scan on MEDIA_MOUNTED to create "real" playlist files.
+        pollForFile(playlistFile);
+
+        // Scan again to verify updated playlist metadata
+        MediaStore.scanFile(context.getContentResolver(), playlistFile);
+
+        try (ContentProviderClient modern = context.getContentResolver()
+                .acquireContentProviderClient(MediaStore.AUTHORITY)) {
+            long legacyPlaylistId =
+                    playlistMap.getAsLong(MediaStore.Audio.Playlists.Members.PLAYLIST_ID);
+            long legacyAudioId1 = audios[0].getAsLong(MediaColumns._ID);
+            long legacyAudioId2 = audios[1].getAsLong(MediaColumns._ID);
+
+            // Verify that playlist_id matches with legacy playlist_id
+            {
+                Uri playlists = MediaStore.Audio.Playlists.getContentUri(mVolumeName);
+                final String[] project = {FileColumns._ID, MediaStore.Audio.PlaylistsColumns.NAME};
+
+                try (Cursor cursor = modern.query(playlists, project, null, null, null)) {
+                    boolean found = false;
+                    while(cursor.moveToNext()) {
+                        if (cursor.getLong(0) == legacyPlaylistId) {
+                            found = true;
+                            assertEquals(playlistName, cursor.getString(1));
+                            break;
+                        }
+                    }
+                    assertTrue(found);
+                }
+            }
+
+            // Verify that playlist_members map matches legacy playlist_members map.
+            {
+                 Uri members = MediaStore.Audio.Playlists.Members.getContentUri(
+                        mVolumeName, legacyPlaylistId);
+                 final String[] project = { MediaStore.Audio.Playlists.Members.AUDIO_ID };
+
+                 try (Cursor cursor = modern.query(members, project, null, null,
+                         MediaStore.Audio.Playlists.Members.DEFAULT_SORT_ORDER)) {
+                     assertTrue(cursor.moveToNext());
+                     assertEquals(legacyAudioId1, cursor.getLong(0));
+                     assertTrue(cursor.moveToNext());
+                     assertEquals(legacyAudioId2, cursor.getLong(0));
+                     assertFalse(cursor.moveToNext());
+                 }
+            }
+
+            // Verify that migrated playlist audio_id refers to legacy audio file.
+            {
+                Uri modernAudioUri = ContentUris.withAppendedId(
+                        MediaStore.Audio.Media.getContentUri(mVolumeName), legacyAudioId1);
+                final String[] project = {FileColumns.DATA};
+
+                try (Cursor cursor = modern.query(modernAudioUri, project, null, null, null)) {
+                    assertTrue(cursor.moveToFirst());
+                    assertEquals(audios[0].getAsString(MediaColumns.DATA), cursor.getString(0));
+                }
+            }
+        }
+    }
+
+    private static void prepareProviders(Context context, UiAutomation ui) throws Exception {
         final ProviderInfo legacyProvider = context.getPackageManager()
                 .resolveContentProvider(MediaStore.AUTHORITY_LEGACY, 0);
         final ProviderInfo modernProvider = context.getPackageManager()
@@ -217,6 +353,30 @@
         executeShellCommand("sync", ui);
         executeShellCommand("pm clear " + legacyProvider.applicationInfo.packageName, ui);
         waitForMountedAndIdle(context.getContentResolver());
+    }
+
+    private static void clearProviders(Context context, UiAutomation ui) throws Exception {
+        final ProviderInfo modernProvider = context.getPackageManager()
+                .resolveContentProvider(MediaStore.AUTHORITY, 0);
+
+        // Clear data on the modern provider so that the initial scan recovers
+        // metadata from the legacy provider
+        waitForMountedAndIdle(context.getContentResolver());
+        executeShellCommand("sync", ui);
+        executeShellCommand("pm clear " + modernProvider.applicationInfo.packageName, ui);
+        waitForMountedAndIdle(context.getContentResolver());
+    }
+
+    /**
+     * Verify that a legacy database with thousands of media entries can be
+     * successfully migrated.
+     */
+    @Test
+    public void testLegacy_Extreme() throws Exception {
+        final Context context = InstrumentationRegistry.getTargetContext();
+        final UiAutomation ui = InstrumentationRegistry.getInstrumentation().getUiAutomation();
+
+        prepareProviders(context, ui);
 
         // Create thousands of items in the legacy provider
         try (ContentProviderClient legacy = context.getContentResolver()
@@ -241,12 +401,7 @@
             }
         }
 
-        // Clear data on the modern provider so that the initial scan recovers
-        // metadata from the legacy provider
-        waitForMountedAndIdle(context.getContentResolver());
-        executeShellCommand("sync", ui);
-        executeShellCommand("pm clear " + modernProvider.applicationInfo.packageName, ui);
-        waitForMountedAndIdle(context.getContentResolver());
+        clearProviders(context, ui);
 
         // Confirm that details from legacy provider have migrated
         try (ContentProviderClient modern = context.getContentResolver()
@@ -261,20 +416,7 @@
         final Context context = InstrumentationRegistry.getTargetContext();
         final UiAutomation ui = InstrumentationRegistry.getInstrumentation().getUiAutomation();
 
-        final ProviderInfo legacyProvider = context.getPackageManager()
-                .resolveContentProvider(MediaStore.AUTHORITY_LEGACY, 0);
-        final ProviderInfo modernProvider = context.getPackageManager()
-                .resolveContentProvider(MediaStore.AUTHORITY, 0);
-
-        // Only continue if we have both providers to test against
-        Assume.assumeNotNull(legacyProvider);
-        Assume.assumeNotNull(modernProvider);
-
-        // Clear data on the legacy provider so that we create a database
-        waitForMountedAndIdle(context.getContentResolver());
-        executeShellCommand("sync", ui);
-        executeShellCommand("pm clear " + legacyProvider.applicationInfo.packageName, ui);
-        waitForMountedAndIdle(context.getContentResolver());
+        prepareProviders(context, ui);
 
         // Create a well-known entry in legacy provider, and write data into
         // place to ensure the file is created on disk
@@ -296,12 +438,7 @@
             values.remove(FileColumns.DATA);
         }
 
-        // Clear data on the modern provider so that the initial scan recovers
-        // metadata from the legacy provider
-        waitForMountedAndIdle(context.getContentResolver());
-        executeShellCommand("sync", ui);
-        executeShellCommand("pm clear " + modernProvider.applicationInfo.packageName, ui);
-        waitForMountedAndIdle(context.getContentResolver());
+        clearProviders(context, ui);
 
         // And force a scan to confirm upgraded data survives
         MediaStore.scanVolume(context.getContentResolver(),
@@ -341,6 +478,16 @@
         MediaStore.waitForIdle(resolver);
     }
 
+    private static void pollForFile(File file) {
+        for (int i = 0; i < POLLING_TIMEOUT_MILLIS / POLLING_SLEEP_MILLIS; i++) {
+            if (file.exists()) return;
+
+            Log.v(TAG, "Waiting for..." + file);
+            SystemClock.sleep(POLLING_SLEEP_MILLIS);
+        }
+        fail("Timed out while waiting for file " + file);
+    }
+
     private static void pollForExternalStorageState() {
         final File target = Environment.getExternalStorageDirectory();
         for (int i = 0; i < POLLING_TIMEOUT_MILLIS / POLLING_SLEEP_MILLIS; i++) {
diff --git a/tests/client/src/com/android/providers/media/client/PerformanceTest.java b/tests/client/src/com/android/providers/media/client/PerformanceTest.java
index eff8e67..5f685cc 100644
--- a/tests/client/src/com/android/providers/media/client/PerformanceTest.java
+++ b/tests/client/src/com/android/providers/media/client/PerformanceTest.java
@@ -16,6 +16,8 @@
 
 package com.android.providers.media.client;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
@@ -33,13 +35,20 @@
 import android.util.Log;
 
 import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.LargeTest;
 import androidx.test.runner.AndroidJUnit4;
+import androidx.test.uiautomator.UiDevice;
+
+import com.android.providers.media.tests.utils.Timer;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.io.BufferedWriter;
 import java.io.File;
+import java.io.FileWriter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
@@ -238,32 +247,53 @@
 
     @Test
     public void testDirOperations_10() throws Exception {
-        Timer createTimer = new Timer("mkdir");
-        Timer readTimer = new Timer("readdir");
-        Timer deleteTimer = new Timer("rmdir");
-        for (int i = 0; i < COUNT_REPEAT; i++ ){
-            doDirOperations(10, createTimer, readTimer, deleteTimer);
-        }
-        createTimer.dumpResults();
-        readTimer.dumpResults();
-        deleteTimer.dumpResults();
+        testDirOperations_size(10);
     }
 
     @Test
     public void testDirOperations_100() throws Exception {
+        testDirOperations_size(100);
+    }
+
+    @Test
+    public void testDirOperations_500() throws Exception {
+        testDirOperations_size(500);
+    }
+
+    @LargeTest
+    @Test
+    public void testDirOperations_1000() throws Exception {
+        testDirOperations_size(1000);
+    }
+
+    private void testDirOperations_size(int size) throws Exception {
         Timer createTimer = new Timer("mkdir");
-        Timer readTimer = new Timer("readdir");
+        Timer readdirTimer = new Timer("readdir");
+        Timer isFileTimer = new Timer("isFile");
+        // We have different timers for rename dir only and rename files as we want to track the
+        // performance for both of the following:
+        // 1. Renaming a directory is significantly faster (for file managers) as we do not update
+        // DB entries for all the files within it. (it takes ~10ms for a dir of 1000 files)
+        // 2. Renaming files is faster as well (for file managers), as we do not do DB operations
+        // on each rename.
+        Timer renameDirTimer = new Timer("renamedir");
+        Timer renameFilesTimer = new Timer("renamefiles");
         Timer deleteTimer = new Timer("rmdir");
-        for (int i = 0; i < COUNT_REPEAT; i++ ){
-            doDirOperations(100, createTimer, readTimer, deleteTimer);
+        for (int i = 0; i < COUNT_REPEAT; i++ ) {
+            doDirOperations(size, createTimer, readdirTimer, isFileTimer,
+                    renameDirTimer, renameFilesTimer, deleteTimer);
         }
         createTimer.dumpResults();
-        readTimer.dumpResults();
+        readdirTimer.dumpResults();
+        isFileTimer.dumpResults();
+        renameDirTimer.dumpResults();
+        renameFilesTimer.dumpResults();
         deleteTimer.dumpResults();
     }
 
-    private void doDirOperations(int size, Timer createTimer, Timer readTimer, Timer deleteTimer)
-            throws Exception {
+    private void doDirOperations(int size, Timer createTimer, Timer readdirTimer,
+            Timer isFileTimer, Timer renameDirTimer, Timer renameFilesTimer,
+            Timer deleteTimer) throws Exception {
         createTimer.start();
         File testDir = new File(new File(Environment.getExternalStorageDirectory(),
                 "Download"), "test_dir_" + System.nanoTime());
@@ -271,23 +301,54 @@
         List<File> files = new ArrayList<>();
         for (int i = 0; i < size; i++) {
             File file = new File(testDir, "file_" + System.nanoTime());
-            assertTrue(file.createNewFile());
+            assertThat(file.createNewFile()).isTrue();
             files.add(file);
         }
         createTimer.stop();
 
+        File renamedTestDir = new File(new File(Environment.getExternalStorageDirectory(),
+                "Download"), "renamed_test_dir_" + System.nanoTime());
         try {
-            readTimer.start();
+            readdirTimer.start();
             File[] result = testDir.listFiles();
-            readTimer.stop();
-            assertEquals(size, result.length);
+            readdirTimer.stop();
+            assertThat(result.length).isEqualTo(size);
+
+            // Drop cache as this info is cached in the initial lookup
+            executeDropCachesImpl();
+            // This calls into lookup libfuse method
+            isFileTimer.start();
+            for (File file: files) {
+                file.isFile();
+            }
+            isFileTimer.stop();
+
+            renameDirTimer.start();
+            assertThat(testDir.renameTo(renamedTestDir)).isTrue();
+            renameDirTimer.stop();
+            testDir = renamedTestDir;
+
+            // renameTo for files will fail as the old files are not valid files as the dir name
+            // is changed, update the files to be valid.
+            files = Arrays.asList(renamedTestDir.listFiles());
+
+            renameFilesTimer.start();
+            List<File> renamedFiles = new ArrayList<>();
+            for (File file : files) {
+                File newFile = new File(testDir, "file_" + System.nanoTime());
+                assertThat(file.renameTo(newFile)).isTrue();
+                renamedFiles.add(newFile);
+            }
+            renameFilesTimer.stop();
+            // This is essential for the finally block to delete valid files.
+            files = renamedFiles;
 
         } finally {
             deleteTimer.start();
             for (File file : files) {
-                assertTrue(file.delete());
+                assertThat(file.delete()).isTrue();
             }
-            assertTrue(testDir.delete());
+            assertThat(testDir.delete()).isTrue();
             deleteTimer.stop();
         }
     }
@@ -296,52 +357,6 @@
         return new HashSet<>(uris);
     }
 
-    /**
-     * Timer that can be started/stopped with nanosecond accuracy, and later
-     * averaged based on the number of times it was cycled.
-     */
-    private static class Timer {
-        private final String name;
-        private int count;
-        private long duration;
-        private long start;
-
-        public Timer(String name) {
-            this.name = name;
-        }
-
-        public void start() {
-            if (start != 0) {
-                throw new IllegalStateException();
-            } else {
-                start = SystemClock.elapsedRealtimeNanos();
-            }
-        }
-
-        public void stop() {
-            if (start == 0) {
-                throw new IllegalStateException();
-            } else {
-                duration += (SystemClock.elapsedRealtimeNanos() - start);
-                start = 0;
-                count++;
-            }
-        }
-
-        public long getAverageDurationMillis() {
-            return TimeUnit.MILLISECONDS.convert(duration / count, TimeUnit.NANOSECONDS);
-        }
-
-        public void dumpResults() {
-            final long duration = getAverageDurationMillis();
-            Log.v(TAG, name + ": " + duration + "ms");
-
-            final Bundle results = new Bundle();
-            results.putLong(name, duration);
-            InstrumentationRegistry.getInstrumentation().sendStatus(0, results);
-        }
-    }
-
     private static class Timers {
         public final Timer actionInsert = new Timer("action_insert");
         public final Timer actionUpdate = new Timer("action_update");
@@ -414,4 +429,32 @@
                     .unregisterContentObserver(this);
         }
     }
+
+    /**
+     * Drops the disk cache.
+     */
+    private void executeDropCachesImpl() throws Exception {
+        // Create a temporary file which contains the dropCaches command.
+        // Do this because we cannot write to /proc/sys/vm/drop_caches directly,
+        // as executeShellCommand parses the '>' character as a literal.
+        File outputDir = InstrumentationRegistry.getInstrumentation().
+            getContext().getCacheDir();
+        File outputFile = File.createTempFile("drop_cache_script", ".sh", outputDir);
+        outputFile.setWritable(true);
+        outputFile.setExecutable(true, /*ownersOnly*/false);
+
+        String dropCacheScriptPath = outputFile.toString();
+
+        // If this works correctly, the next log-line will print 'Success'.
+        String dropCacheCmd = "sync; echo 3 > /proc/sys/vm/drop_caches "
+                + "&& echo Success || echo Failure";
+        BufferedWriter writer = new BufferedWriter(new FileWriter(dropCacheScriptPath));
+        writer.write(dropCacheCmd);
+        writer.close();
+
+        String result = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).
+                executeShellCommand(dropCacheScriptPath);
+        Log.v(TAG, "dropCaches output was: " + result);
+        outputFile.delete();
+    }
 }
diff --git a/tests/client/src/com/android/providers/media/client/PlaylistPerformanceTest.java b/tests/client/src/com/android/providers/media/client/PlaylistPerformanceTest.java
new file mode 100644
index 0000000..e761814
--- /dev/null
+++ b/tests/client/src/com/android/providers/media/client/PlaylistPerformanceTest.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2020 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.providers.media.client;
+
+import static android.provider.MediaStore.VOLUME_EXTERNAL_PRIMARY;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.Context;
+import android.net.Uri;
+import android.os.Environment;
+import android.os.FileUtils;
+import android.provider.MediaStore;
+import android.provider.MediaStore.Audio.Playlists;
+import android.provider.MediaStore.MediaColumns;
+
+import androidx.annotation.NonNull;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.providers.media.tests.utils.Timer;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+
+@RunWith(AndroidJUnit4.class)
+public class PlaylistPerformanceTest {
+    private static final Uri AUDIO_URI = MediaStore.Audio.Media
+            .getContentUri(VOLUME_EXTERNAL_PRIMARY);
+    private static final Uri PLAYLISTS_URI = Playlists
+            .getContentUri(VOLUME_EXTERNAL_PRIMARY);
+
+    private Context mContext;
+    private ContentResolver mContentResolver;
+
+    private String mRelativePath;
+    private File mTestDir;
+
+    @Before
+    public void setUp() throws Exception {
+        mContext = InstrumentationRegistry.getTargetContext();
+        mContentResolver = mContext.getContentResolver();
+
+        mRelativePath = Environment.DIRECTORY_MUSIC + "/test_" + System.nanoTime();
+        mTestDir = new File(Environment.getExternalStorageDirectory(), mRelativePath);
+        assertTrue(mTestDir.mkdirs());
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        FileUtils.deleteContentsAndDir(mTestDir);
+    }
+
+    @Test
+    public void testBulkInsertPlaylistMembers() throws Exception {
+        final int expected = 200;
+        final long[] memberIds = new long[expected];
+        for (int i = 0; i < expected; i++) {
+            memberIds[i] = (createAudio(i));
+        }
+
+        final Uri playlistUri = createPlaylist();
+        final Uri membersUri = Playlists.Members
+                .getContentUri(VOLUME_EXTERNAL_PRIMARY, ContentUris.parseId(playlistUri));
+
+        final ContentValues[] valuesArray = createValuesForMembers(memberIds);
+        final Timer addMembers = new Timer("bulk insert " + expected);
+        addMembers.start();
+        final int actual = mContentResolver.bulkInsert(membersUri, valuesArray);
+        addMembers.stop();
+        addMembers.dumpResults();
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void testDeletePlaylistMembers() throws Exception {
+        final int expected = 200;
+        final long[] memberIds = new long[expected];
+        for (int i = 0; i < expected; i++) {
+            memberIds[i] = (createAudio(i));
+        }
+
+        final Uri playlistUri = createPlaylist();
+        final Uri membersUri = Playlists.Members
+                .getContentUri(VOLUME_EXTERNAL_PRIMARY, ContentUris.parseId(playlistUri));
+
+        final ContentValues[] valuesArray = createValuesForMembers(memberIds);
+        assertEquals(expected, mContentResolver.bulkInsert(membersUri, valuesArray));
+
+        final Timer deleteMembers = new Timer("delete member " + expected);
+        final String[] whereArgs = new String[] { "0" };
+        int actual = 0;
+        for (int i = 0; i < memberIds.length; i++) {
+            whereArgs[0] = "" + memberIds[i];
+            deleteMembers.start();
+            actual += mContentResolver.delete(membersUri, Playlists.Members.AUDIO_ID + "=?",
+                    whereArgs);
+            deleteMembers.stop();
+        }
+        deleteMembers.dumpResults();
+        assertEquals(expected, actual);
+    }
+
+    private @NonNull Uri createPlaylist() {
+        final ContentValues values = new ContentValues();
+        values.put(MediaColumns.DISPLAY_NAME, "Test_Playlist");
+        values.put(MediaColumns.RELATIVE_PATH, mRelativePath);
+        values.put(MediaColumns.MIME_TYPE, "audio/x-mpegurl");
+
+        final Uri playlistUri = mContentResolver.insert(PLAYLISTS_URI, values);
+        assertNotNull(playlistUri);
+        return playlistUri;
+    }
+
+    private long createAudio(int num) throws IOException {
+        final ContentValues values = new ContentValues();
+        values.put(MediaColumns.DISPLAY_NAME, "Test_Song_" + num);
+        values.put(MediaColumns.RELATIVE_PATH, mRelativePath);
+        values.put(MediaColumns.MIME_TYPE, "audio/mpeg");
+
+        final Uri uri = mContentResolver.insert(AUDIO_URI, values);
+        assertNotNull(uri);
+        try (OutputStream ignore = mContentResolver.openOutputStream(uri)) {
+        }
+        return ContentUris.parseId(uri);
+    }
+
+    private @NonNull ContentValues[] createValuesForMembers(@NonNull long[] memberIds) {
+        final ContentValues[] valuesArray = new ContentValues[memberIds.length];
+        for (int i = 0; i < memberIds.length; i++) {
+            final ContentValues values = new ContentValues();
+            values.put(Playlists.Members.AUDIO_ID, memberIds[i]);
+            valuesArray[i] = values;
+        }
+        return valuesArray;
+    }
+}
+
diff --git a/tests/res/raw/large_xmp.mp4 b/tests/res/raw/large_xmp.mp4
new file mode 100644
index 0000000..3dd4b2c
--- /dev/null
+++ b/tests/res/raw/large_xmp.mp4
Binary files differ
diff --git a/tests/res/raw/test_bmp.bmp b/tests/res/raw/test_bmp.bmp
new file mode 100644
index 0000000..e7cf515
--- /dev/null
+++ b/tests/res/raw/test_bmp.bmp
Binary files differ
diff --git a/tests/src/com/android/providers/media/DatabaseHelperTest.java b/tests/src/com/android/providers/media/DatabaseHelperTest.java
index b2b7825..a9c77b6 100644
--- a/tests/src/com/android/providers/media/DatabaseHelperTest.java
+++ b/tests/src/com/android/providers/media/DatabaseHelperTest.java
@@ -75,7 +75,7 @@
 
     @Test
     public void testFilterVolumeNames() throws Exception {
-        try (DatabaseHelper helper = new DatabaseHelperR(sIsolatedContext, TEST_CLEAN_DB)) {
+        try (DatabaseHelper helper = new DatabaseHelperS(sIsolatedContext, TEST_CLEAN_DB)) {
             SQLiteDatabase db = helper.getWritableDatabaseForTest();
             {
                 final ContentValues values = new ContentValues();
@@ -234,18 +234,23 @@
     }
 
     @Test
-    public void testRtoO() throws Exception {
-        assertDowngrade(DatabaseHelperR.class, DatabaseHelperO.class);
+    public void testStoO() throws Exception {
+        assertDowngrade(DatabaseHelperS.class, DatabaseHelperO.class);
     }
 
     @Test
-    public void testRtoP() throws Exception {
-        assertDowngrade(DatabaseHelperR.class, DatabaseHelperP.class);
+    public void testStoP() throws Exception {
+        assertDowngrade(DatabaseHelperS.class, DatabaseHelperP.class);
     }
 
     @Test
-    public void testRtoQ() throws Exception {
-        assertDowngrade(DatabaseHelperR.class, DatabaseHelperQ.class);
+    public void testStoQ() throws Exception {
+        assertDowngrade(DatabaseHelperS.class, DatabaseHelperQ.class);
+    }
+
+    @Test
+    public void testStoR() throws Exception {
+        assertDowngrade(DatabaseHelperS.class, DatabaseHelperR.class);
     }
 
     private void assertDowngrade(Class<? extends DatabaseHelper> before,
@@ -279,20 +284,25 @@
     }
 
     @Test
-    public void testOtoR() throws Exception {
-        assertRecompute(DatabaseHelperO.class, DatabaseHelperR.class);
-        assertUpgrade(DatabaseHelperO.class, DatabaseHelperR.class);
+    public void testOtoS() throws Exception {
+        assertRecompute(DatabaseHelperO.class, DatabaseHelperS.class);
+        assertUpgrade(DatabaseHelperO.class, DatabaseHelperS.class);
     }
 
     @Test
-    public void testPtoR() throws Exception {
-        assertRecompute(DatabaseHelperP.class, DatabaseHelperR.class);
-        assertUpgrade(DatabaseHelperP.class, DatabaseHelperR.class);
+    public void testPtoS() throws Exception {
+        assertRecompute(DatabaseHelperP.class, DatabaseHelperS.class);
+        assertUpgrade(DatabaseHelperP.class, DatabaseHelperS.class);
     }
 
     @Test
-    public void testQtoR() throws Exception {
-        assertUpgrade(DatabaseHelperQ.class, DatabaseHelperR.class);
+    public void testQtoS() throws Exception {
+        assertUpgrade(DatabaseHelperQ.class, DatabaseHelperS.class);
+    }
+
+    @Test
+    public void testRtoS() throws Exception {
+        assertUpgrade(DatabaseHelperR.class, DatabaseHelperS.class);
     }
 
     private void assertRecompute(Class<? extends DatabaseHelper> before,
@@ -336,17 +346,6 @@
             {
                 final ContentValues values = new ContentValues();
                 values.put(FileColumns.DATA,
-                        "/storage/0000-0000/Android/sandbox/com.example2/Download/dir/foo.mp4");
-                values.put(FileColumns.DATE_ADDED, System.currentTimeMillis());
-                values.put(FileColumns.DATE_MODIFIED, System.currentTimeMillis());
-                values.put(FileColumns.DISPLAY_NAME, "foo.mp4");
-                values.put(FileColumns.MEDIA_TYPE, FileColumns.MEDIA_TYPE_VIDEO);
-                values.put(FileColumns.MIME_TYPE, "video/mp4");
-                assertFalse(db.insert("files", FileColumns.DATA, values) == -1);
-            }
-            {
-                final ContentValues values = new ContentValues();
-                values.put(FileColumns.DATA,
                         "/storage/emulated/0/Download/foo");
                 values.put(FileColumns.DATE_ADDED, System.currentTimeMillis());
                 values.put(FileColumns.DATE_MODIFIED, System.currentTimeMillis());
@@ -396,18 +395,6 @@
                         c.getString(c.getColumnIndexOrThrow(FileColumns.OWNER_PACKAGE_NAME)));
                 assertEquals("1", c.getString(c.getColumnIndexOrThrow(FileColumns.IS_DOWNLOAD)));
             }
-            try (Cursor c = db.query("files", null, FileColumns.DISPLAY_NAME + "='foo.mp4'",
-                    null, null, null, null)) {
-                assertEquals(1, c.getCount());
-                assertTrue(c.moveToFirst());
-                assertEquals("/storage/0000-0000/Android/sandbox/com.example2/Download/dir/foo.mp4",
-                        c.getString(c.getColumnIndexOrThrow(FileColumns.DATA)));
-                assertEquals("video/mp4",
-                        c.getString(c.getColumnIndexOrThrow(FileColumns.MIME_TYPE)));
-                assertEquals("com.example2",
-                        c.getString(c.getColumnIndexOrThrow(FileColumns.OWNER_PACKAGE_NAME)));
-                assertEquals("1", c.getString(c.getColumnIndexOrThrow(FileColumns.IS_DOWNLOAD)));
-            }
             try (Cursor c = db.query("files", null,
                     FileColumns.DATA + "='/storage/emulated/0/Download/foo'",
                     null, null, null, null)) {
@@ -525,6 +512,19 @@
                     false, false, false, Column.class, null, null,
                     MediaProvider.MIGRATION_LISTENER, null);
         }
+
+        @Override
+        public void onCreate(SQLiteDatabase db) {
+            createRSchema(db, false);
+        }
+    }
+
+    private static class DatabaseHelperS extends DatabaseHelper {
+        public DatabaseHelperS(Context context, String name) {
+            super(context, name, DatabaseHelper.VERSION_S,
+                    false, false, false, Column.class, null, null,
+                    MediaProvider.MIGRATION_LISTENER, null);
+        }
     }
 
     /**
@@ -935,4 +935,168 @@
                 + "instance_id,duration,description,orientation,height,is_drm,bucket_display_name,owner_package_name,volume_name,date_modified,date_expires,_display_name,datetaken,mime_type,referer_uri,_id,_data,_hash,_size,title,width,is_trashed,group_id,document_id,is_pending,date_added,download_uri,primary_directory,secondary_directory,original_document_id,bucket_id,relative_path"
                 + " FROM files WHERE is_download=1");
     }
+
+
+    /**
+     * Snapshot of {@link DatabaseHelper#createLatestSchema} as of
+     * {@link android.os.Build.VERSION_CODES#R}.
+     */
+    private static void createRSchema(SQLiteDatabase db, boolean internal) {
+        makePristineSchema(db);
+
+        // CAUTION: THIS IS A SNAPSHOTTED GOLDEN SCHEMA THAT SHOULD NEVER BE
+        // DIRECTLY MODIFIED, SINCE IT REPRESENTS A DEVICE IN THE WILD THAT WE
+        // MUST SUPPORT. IF TESTS ARE FAILING, THE CORRECT FIX IS TO ADJUST THE
+        // DATABASE UPGRADE LOGIC TO MIGRATE THIS SNAPSHOTTED GOLDEN SCHEMA TO
+        // THE LATEST SCHEMA.
+
+        db.execSQL("CREATE TABLE local_metadata (generation INTEGER DEFAULT 0)");
+        db.execSQL("INSERT INTO local_metadata VALUES (0)");
+
+        db.execSQL("CREATE TABLE android_metadata (locale TEXT)");
+        db.execSQL("CREATE TABLE thumbnails (_id INTEGER PRIMARY KEY,_data TEXT,image_id INTEGER,"
+                + "kind INTEGER,width INTEGER,height INTEGER)");
+        db.execSQL("CREATE TABLE album_art (album_id INTEGER PRIMARY KEY,_data TEXT)");
+        db.execSQL("CREATE TABLE videothumbnails (_id INTEGER PRIMARY KEY,_data TEXT,"
+                + "video_id INTEGER,kind INTEGER,width INTEGER,height INTEGER)");
+        db.execSQL("CREATE TABLE files (_id INTEGER PRIMARY KEY AUTOINCREMENT,"
+                + "_data TEXT UNIQUE COLLATE NOCASE,_size INTEGER,format INTEGER,parent INTEGER,"
+                + "date_added INTEGER,date_modified INTEGER,mime_type TEXT,title TEXT,"
+                + "description TEXT,_display_name TEXT,picasa_id TEXT,orientation INTEGER,"
+                + "latitude DOUBLE,longitude DOUBLE,datetaken INTEGER,mini_thumb_magic INTEGER,"
+                + "bucket_id TEXT,bucket_display_name TEXT,isprivate INTEGER,title_key TEXT,"
+                + "artist_id INTEGER,album_id INTEGER,composer TEXT,track INTEGER,"
+                + "year INTEGER CHECK(year!=0),is_ringtone INTEGER,is_music INTEGER,"
+                + "is_alarm INTEGER,is_notification INTEGER,is_podcast INTEGER,album_artist TEXT,"
+                + "duration INTEGER,bookmark INTEGER,artist TEXT,album TEXT,resolution TEXT,"
+                + "tags TEXT,category TEXT,language TEXT,mini_thumb_data TEXT,name TEXT,"
+                + "media_type INTEGER,old_id INTEGER,is_drm INTEGER,"
+                + "width INTEGER, height INTEGER, title_resource_uri TEXT,"
+                + "owner_package_name TEXT DEFAULT NULL,"
+                + "color_standard INTEGER, color_transfer INTEGER, color_range INTEGER,"
+                + "_hash BLOB DEFAULT NULL, is_pending INTEGER DEFAULT 0,"
+                + "is_download INTEGER DEFAULT 0, download_uri TEXT DEFAULT NULL,"
+                + "referer_uri TEXT DEFAULT NULL, is_audiobook INTEGER DEFAULT 0,"
+                + "date_expires INTEGER DEFAULT NULL,is_trashed INTEGER DEFAULT 0,"
+                + "group_id INTEGER DEFAULT NULL,primary_directory TEXT DEFAULT NULL,"
+                + "secondary_directory TEXT DEFAULT NULL,document_id TEXT DEFAULT NULL,"
+                + "instance_id TEXT DEFAULT NULL,original_document_id TEXT DEFAULT NULL,"
+                + "relative_path TEXT DEFAULT NULL,volume_name TEXT DEFAULT NULL,"
+                + "artist_key TEXT DEFAULT NULL,album_key TEXT DEFAULT NULL,"
+                + "genre TEXT DEFAULT NULL,genre_key TEXT DEFAULT NULL,genre_id INTEGER,"
+                + "author TEXT DEFAULT NULL, bitrate INTEGER DEFAULT NULL,"
+                + "capture_framerate REAL DEFAULT NULL, cd_track_number TEXT DEFAULT NULL,"
+                + "compilation INTEGER DEFAULT NULL, disc_number TEXT DEFAULT NULL,"
+                + "is_favorite INTEGER DEFAULT 0, num_tracks INTEGER DEFAULT NULL,"
+                + "writer TEXT DEFAULT NULL, exposure_time TEXT DEFAULT NULL,"
+                + "f_number TEXT DEFAULT NULL, iso INTEGER DEFAULT NULL,"
+                + "scene_capture_type INTEGER DEFAULT NULL, generation_added INTEGER DEFAULT 0,"
+                + "generation_modified INTEGER DEFAULT 0, xmp BLOB DEFAULT NULL)");
+
+        db.execSQL("CREATE TABLE log (time DATETIME, message TEXT)");
+        if (!internal) {
+            db.execSQL("CREATE TABLE audio_playlists_map (_id INTEGER PRIMARY KEY,"
+                    + "audio_id INTEGER NOT NULL,playlist_id INTEGER NOT NULL,"
+                    + "play_order INTEGER NOT NULL)");
+        }
+
+        db.execSQL("CREATE VIEW searchhelpertitle AS SELECT * FROM audio ORDER BY title_key");
+        db.execSQL("CREATE VIEW search AS SELECT _id,'artist' AS mime_type,artist,NULL AS album,"
+                + "NULL AS title,artist AS text1,NULL AS text2,number_of_albums AS data1,"
+                + "number_of_tracks AS data2,artist_key AS match,"
+                + "'content://media/external/audio/artists/'||_id AS suggest_intent_data,"
+                + "1 AS grouporder FROM artist_info WHERE (artist!='<unknown>')"
+                + " UNION ALL SELECT _id,'album' AS mime_type,artist,album,"
+                + "NULL AS title,album AS text1,artist AS text2,NULL AS data1,"
+                + "NULL AS data2,artist_key||' '||album_key AS match,"
+                + "'content://media/external/audio/albums/'||_id AS suggest_intent_data,"
+                + "2 AS grouporder FROM album_info"
+                + " WHERE (album!='<unknown>')"
+                + " UNION ALL SELECT searchhelpertitle._id AS _id,mime_type,artist,album,title,"
+                + "title AS text1,artist AS text2,NULL AS data1,"
+                + "NULL AS data2,artist_key||' '||album_key||' '||title_key AS match,"
+                + "'content://media/external/audio/media/'||searchhelpertitle._id"
+                + " AS suggest_intent_data,"
+                + "3 AS grouporder FROM searchhelpertitle WHERE (title != '')");
+
+        db.execSQL("CREATE VIEW audio AS SELECT "
+                + "title_key,instance_id,compilation,disc_number,duration,is_ringtone,album_artist,resolution,orientation,artist,author,height,is_drm,bucket_display_name,is_audiobook,owner_package_name,volume_name,title_resource_uri,date_modified,writer,date_expires,composer,_display_name,datetaken,mime_type,is_notification,bitrate,cd_track_number,_id,xmp,year,_data,_size,album,genre,is_alarm,title,track,width,is_music,album_key,is_favorite,is_trashed,group_id,document_id,artist_id,generation_added,artist_key,genre_key,is_download,generation_modified,is_pending,date_added,is_podcast,capture_framerate,album_id,num_tracks,original_document_id,genre_id,bucket_id,bookmark,relative_path"
+                + " FROM files WHERE media_type=2");
+        db.execSQL("CREATE VIEW video AS SELECT"
+                +  " instance_id,compilation,disc_number,duration,album_artist,description,language,resolution,latitude,orientation,artist,color_transfer,author,color_standard,height,is_drm,bucket_display_name,owner_package_name,volume_name,date_modified,writer,date_expires,composer,_display_name,datetaken,mime_type,bitrate,cd_track_number,_id,xmp,tags,year,category,_data,_size,album,genre,title,width,longitude,is_favorite,is_trashed,group_id,document_id,generation_added,is_download,generation_modified,is_pending,date_added,mini_thumb_magic,capture_framerate,color_range,num_tracks,isprivate,original_document_id,bucket_id,bookmark,relative_path"
+                + " FROM files WHERE media_type=3");
+        db.execSQL("CREATE VIEW images AS SELECT"
+                + " instance_id,compilation,disc_number,duration,album_artist,description,picasa_id,resolution,latitude,orientation,artist,author,height,is_drm,bucket_display_name,owner_package_name,f_number,volume_name,date_modified,writer,date_expires,composer,_display_name,scene_capture_type,datetaken,mime_type,bitrate,cd_track_number,_id,iso,xmp,year,_data,_size,album,genre,title,width,longitude,is_favorite,is_trashed,exposure_time,group_id,document_id,generation_added,is_download,generation_modified,is_pending,date_added,mini_thumb_magic,capture_framerate,num_tracks,isprivate,original_document_id,bucket_id,relative_path"
+                + " FROM files WHERE media_type=1");
+        db.execSQL("CREATE VIEW downloads AS SELECT"
+                + " instance_id,compilation,disc_number,duration,album_artist,description,resolution,orientation,artist,author,height,is_drm,bucket_display_name,owner_package_name,volume_name,date_modified,writer,date_expires,composer,_display_name,datetaken,mime_type,bitrate,cd_track_number,referer_uri,_id,xmp,year,_data,_size,album,genre,title,width,is_favorite,is_trashed,group_id,document_id,generation_added,is_download,generation_modified,is_pending,date_added,download_uri,capture_framerate,num_tracks,original_document_id,bucket_id,relative_path"
+                + " FROM files WHERE is_download=1");
+
+        db.execSQL("CREATE VIEW audio_artists AS SELECT "
+                + "  artist_id AS " + "_id"
+                + ", MIN(artist) AS " + "artist"
+                + ", artist_key AS " + "artist_key"
+                + ", COUNT(DISTINCT album_id) AS " + "number_of_albums"
+                + ", COUNT(DISTINCT _id) AS " + "number_of_tracks"
+                + " FROM audio"
+                + " WHERE is_music=1"
+                + " GROUP BY artist_id");
+
+        db.execSQL("CREATE VIEW audio_albums AS SELECT "
+                + "  album_id AS " + "_id"
+                + ", album_id AS " + "album_id"
+                + ", MIN(album) AS " + "album"
+                + ", album_key AS " + "album_key"
+                + ", artist_id AS " + "artist_id"
+                + ", artist AS " + "artist"
+                + ", artist_key AS " + "artist_key"
+                + ", COUNT(DISTINCT _id) AS " + "numsongs"
+                + ", COUNT(DISTINCT _id) AS " + "numsongs_by_artist"
+                + ", MIN(year) AS " + "minyear"
+                + ", MAX(year) AS " + "maxyear"
+                + ", NULL AS " + "album_art"
+                + " FROM audio"
+                + " WHERE is_music=1"
+                + " GROUP BY album_id");
+
+        db.execSQL("CREATE VIEW audio_genres AS SELECT "
+                + "  genre_id AS " + "_id"
+                + ", MIN(genre) AS " + "name"
+                + " FROM audio"
+                + " GROUP BY genre_id");
+
+        final String insertArg =
+                "new.volume_name||':'||new._id||':'||new.media_type||':'||new.is_download";
+        final String updateArg =
+                "old.volume_name||':'||old._id||':'||old.media_type||':'||old.is_download"
+                        + "||':'||new._id||':'||new.media_type||':'||new.is_download"
+                        + "||':'||ifnull(old.owner_package_name,'null')"
+                        + "||':'||ifnull(new.owner_package_name,'null')||':'||old._data";
+        final String deleteArg =
+                "old.volume_name||':'||old._id||':'||old.media_type||':'||old.is_download"
+                        + "||':'||ifnull(old.owner_package_name,'null')||':'||old._data";
+
+        db.execSQL("CREATE TRIGGER files_insert AFTER INSERT ON files"
+                + " BEGIN SELECT _INSERT(" + insertArg + "); END");
+        db.execSQL("CREATE TRIGGER files_update AFTER UPDATE ON files"
+                + " BEGIN SELECT _UPDATE(" + updateArg + "); END");
+        db.execSQL("CREATE TRIGGER files_delete AFTER DELETE ON files"
+                + " BEGIN SELECT _DELETE(" + deleteArg + "); END");
+
+        db.execSQL("CREATE INDEX image_id_index on thumbnails(image_id)");
+        db.execSQL("CREATE INDEX video_id_index on videothumbnails(video_id)");
+        db.execSQL("CREATE INDEX album_id_idx ON files(album_id)");
+        db.execSQL("CREATE INDEX artist_id_idx ON files(artist_id)");
+        db.execSQL("CREATE INDEX genre_id_idx ON files(genre_id)");
+        db.execSQL("CREATE INDEX bucket_index on files(bucket_id,media_type,datetaken, _id)");
+        db.execSQL("CREATE INDEX bucket_name on files(bucket_id,media_type,bucket_display_name)");
+        db.execSQL("CREATE INDEX format_index ON files(format)");
+        db.execSQL("CREATE INDEX media_type_index ON files(media_type)");
+        db.execSQL("CREATE INDEX parent_index ON files(parent)");
+        db.execSQL("CREATE INDEX path_index ON files(_data)");
+        db.execSQL("CREATE INDEX sort_index ON files(datetaken ASC, _id ASC)");
+        db.execSQL("CREATE INDEX title_idx ON files(title)");
+        db.execSQL("CREATE INDEX titlekey_index ON files(title_key)");
+    }
+
 }
diff --git a/tests/src/com/android/providers/media/MediaProviderForFuseTest.java b/tests/src/com/android/providers/media/MediaProviderForFuseTest.java
index 277acf2..752f474 100644
--- a/tests/src/com/android/providers/media/MediaProviderForFuseTest.java
+++ b/tests/src/com/android/providers/media/MediaProviderForFuseTest.java
@@ -100,7 +100,7 @@
 
         // We should have no redaction
         Truth.assertThat(sMediaProvider.getRedactionRangesForFuse(
-                        file.getPath(), sTestUid, 0)).isEqualTo(new long[0]);
+                        file.getPath(), file.getPath(), sTestUid, 0)).isEqualTo(new long[0]);
 
         // We can rename our file
         final File renamed = new File(sTestDir, "renamed" + System.nanoTime() + ".jpg");
@@ -139,7 +139,7 @@
 
     @Test
     public void test_scanFileForFuse() throws Exception {
-        final File file = new File(sTestDir, "test" + System.nanoTime() + ".jpg");
+        final File file = new File(sTestDir, "test_scan" + System.nanoTime() + ".jpg");
         Truth.assertThat(file.createNewFile()).isTrue();
         sMediaProvider.scanFileForFuse(file.getPath());
     }
diff --git a/tests/src/com/android/providers/media/MediaProviderTest.java b/tests/src/com/android/providers/media/MediaProviderTest.java
index 76faa16..f77792b 100644
--- a/tests/src/com/android/providers/media/MediaProviderTest.java
+++ b/tests/src/com/android/providers/media/MediaProviderTest.java
@@ -17,10 +17,13 @@
 package com.android.providers.media;
 
 import static com.android.providers.media.scan.MediaScannerTest.stage;
+import static com.android.providers.media.util.FileUtils.extractDisplayName;
+import static com.android.providers.media.util.FileUtils.extractRelativePath;
 import static com.android.providers.media.util.FileUtils.extractRelativePathForDirectory;
 import static com.android.providers.media.util.FileUtils.isDownload;
 import static com.android.providers.media.util.FileUtils.isDownloadDir;
 
+import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
 import static org.junit.Assert.assertArrayEquals;
@@ -63,6 +66,7 @@
 import com.android.providers.media.MediaProvider.VolumeNotFoundException;
 import com.android.providers.media.scan.MediaScannerTest.IsolatedContext;
 import com.android.providers.media.util.FileUtils;
+import com.android.providers.media.util.FileUtilsTest;
 import com.android.providers.media.util.SQLiteQueryBuilder;
 
 import org.junit.AfterClass;
@@ -313,6 +317,59 @@
                 android.os.Process.myUid(), Intent.FLAG_GRANT_READ_URI_PERMISSION));
     }
 
+    @Test
+    public void testTrashLongFileNameItemHasTrimmedFileName() throws Exception {
+        testActionLongFileNameItemHasTrimmedFileName(MediaColumns.IS_TRASHED);
+    }
+
+    @Test
+    public void testPendingLongFileNameItemHasTrimmedFileName() throws Exception {
+        testActionLongFileNameItemHasTrimmedFileName(MediaColumns.IS_PENDING);
+    }
+
+    private void testActionLongFileNameItemHasTrimmedFileName(String columnKey) throws Exception {
+        // We might have old files lurking, so force a clean slate
+        final Context context = InstrumentationRegistry.getTargetContext();
+        sIsolatedContext = new IsolatedContext(context, "modern", /*asFuseThread*/ false);
+        sIsolatedResolver = sIsolatedContext.getContentResolver();
+        final String[] projection = new String[]{MediaColumns.DATA};
+        final File dir = Environment
+                .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
+
+        // create extreme long file name
+        final String originalName = FileUtilsTest.createExtremeFileName("test" + System.nanoTime(),
+                ".jpg");
+
+        File file = stage(R.raw.lg_g4_iso_800_jpg, new File(dir, originalName));
+        final Uri uri = MediaStore.scanFile(sIsolatedResolver, file);
+        Log.v(TAG, "Scanned " + file + " as " + uri);
+
+        try (Cursor c = sIsolatedResolver.query(uri, projection, null, null)) {
+            assertNotNull(c);
+            assertEquals(1, c.getCount());
+            assertTrue(c.moveToFirst());
+            final String data = c.getString(0);
+            final String result = FileUtils.extractDisplayName(data);
+            assertEquals(originalName, result);
+        }
+
+        final Bundle extras = new Bundle();
+        extras.putBoolean(MediaStore.QUERY_ARG_ALLOW_MOVEMENT, true);
+        final ContentValues values = new ContentValues();
+        values.put(columnKey, 1);
+        sIsolatedResolver.update(uri, values, extras);
+
+        try (Cursor c = sIsolatedResolver.query(uri, projection, null, null)) {
+            assertNotNull(c);
+            assertEquals(1, c.getCount());
+            assertTrue(c.moveToFirst());
+            final String data = c.getString(0);
+            final String result = FileUtils.extractDisplayName(data);
+            assertThat(result.length()).isAtMost(FileUtilsTest.MAX_FILENAME_BYTES);
+            assertNotEquals(originalName, result);
+        }
+    }
+
     /**
      * We already have solid coverage of this logic in
      * {@code CtsProviderTestCases}, but the coverage system currently doesn't
@@ -434,8 +491,6 @@
                 getPathOwnerPackageName("/storage/emulated/0/Android/obb/com.example/foo.jpg"));
         assertEquals("com.example",
                 getPathOwnerPackageName("/storage/emulated/0/Android/media/com.example/foo.jpg"));
-        assertEquals("com.example",
-                getPathOwnerPackageName("/storage/emulated/0/Android/sandbox/com.example/foo.jpg"));
     }
 
     @Test
@@ -629,6 +684,18 @@
     }
 
     @Test
+    public void testBuildData_Pending_FromValues_differentLocale() throws Exception {
+        // See b/174120008 for context.
+        Locale defaultLocale = Locale.getDefault();
+        try {
+            Locale.setDefault(new Locale("ar", "SA"));
+            testBuildData_Pending_FromValues();
+        } finally {
+            Locale.setDefault(defaultLocale);
+        }
+    }
+
+    @Test
     public void testBuildData_Pending_FromData() throws Exception {
         final Uri uri = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
         final ContentValues reverse = new ContentValues();
@@ -665,6 +732,18 @@
     }
 
     @Test
+    public void testBuildData_Trashed_FromValues_differentLocale() throws Exception {
+        // See b/174120008 for context.
+        Locale defaultLocale = Locale.getDefault();
+        try {
+            Locale.setDefault(new Locale("ar", "SA"));
+            testBuildData_Trashed_FromValues();
+        } finally {
+            Locale.setDefault(defaultLocale);
+        }
+    }
+
+    @Test
     public void testBuildData_Trashed_FromData() throws Exception {
         final Uri uri = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
         final ContentValues reverse = new ContentValues();
@@ -832,36 +911,19 @@
         assertTrue(isDownload("/storage/emulated/0/Download/test.pdf"));
         assertTrue(isDownload("/storage/emulated/0/Download/dir/foo.mp4"));
         assertTrue(isDownload("/storage/0000-0000/Download/foo.txt"));
-        assertTrue(isDownload(
-                "/storage/emulated/0/Android/sandbox/com.example/Download/colors.png"));
-        assertTrue(isDownload(
-                "/storage/emulated/0/Android/sandbox/shared-com.uid.shared/Download/colors.png"));
-        assertTrue(isDownload(
-                "/storage/0000-0000/Android/sandbox/com.example/Download/colors.png"));
-        assertTrue(isDownload(
-                "/storage/0000-0000/Android/sandbox/shared-com.uid.shared/Download/colors.png"));
-
 
         assertFalse(isDownload("/storage/emulated/0/Pictures/colors.png"));
         assertFalse(isDownload("/storage/emulated/0/Pictures/Download/colors.png"));
         assertFalse(isDownload("/storage/emulated/0/Android/data/com.example/Download/foo.txt"));
-        assertFalse(isDownload(
-                "/storage/emulated/0/Android/sandbox/com.example/dir/Download/foo.txt"));
         assertFalse(isDownload("/storage/emulated/0/Download"));
-        assertFalse(isDownload("/storage/emulated/0/Android/sandbox/com.example/Download"));
-        assertFalse(isDownload(
-                "/storage/0000-0000/Android/sandbox/shared-com.uid.shared/Download"));
     }
 
     @Test
     public void testIsDownloadDir() throws Exception {
         assertTrue(isDownloadDir("/storage/emulated/0/Download"));
-        assertTrue(isDownloadDir("/storage/emulated/0/Android/sandbox/com.example/Download"));
 
         assertFalse(isDownloadDir("/storage/emulated/0/Download/colors.png"));
         assertFalse(isDownloadDir("/storage/emulated/0/Download/dir/"));
-        assertFalse(isDownloadDir(
-                "/storage/emulated/0/Android/sandbox/com.example/Download/dir/foo.txt"));
     }
 
     @Test
@@ -922,7 +984,6 @@
 
         for (String top : new String[] {
                 "/storage/emulated/0",
-                "/storage/emulated/0/Android/sandbox/com.example",
         }) {
             values = computeDataValues(top + "/IMG1024.JPG");
             assertVolume(values, MediaStore.VOLUME_EXTERNAL_PRIMARY);
@@ -1115,6 +1176,59 @@
         assertEquals(albumIdThree, albumIdFour);
     }
 
+    @Test
+    public void testQueryAudioViewsNoPendingItem() throws Exception {
+        // We might have old files lurking, so force a clean slate
+        final Context context = InstrumentationRegistry.getTargetContext();
+        sIsolatedContext = new IsolatedContext(context, "modern", /*asFuseThread*/ false);
+        sIsolatedResolver = sIsolatedContext.getContentResolver();
+        final File dir = Environment
+                .getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
+
+        final File audio = new File(dir, "test" + System.nanoTime() + ".mp3");
+        final Uri audioUri =
+                MediaStore.Audio.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
+        final String album = "TestAlbum" + System.nanoTime();
+        final String artist = "TestArtist" + System.nanoTime();
+        final String genre = "TestGenre" + System.nanoTime();
+        final String relativePath = extractRelativePath(audio.getAbsolutePath());
+        final String displayName = extractDisplayName(audio.getAbsolutePath());
+        ContentValues values = new ContentValues();
+
+        values.put(MediaStore.Audio.Media.ALBUM, album);
+        values.put(MediaStore.Audio.Media.ARTIST, artist);
+        values.put(MediaStore.Audio.Media.GENRE, genre);
+        values.put(MediaStore.Audio.Media.DISPLAY_NAME, displayName);
+        values.put(MediaStore.Audio.Media.RELATIVE_PATH, relativePath);
+        values.put(MediaStore.Audio.Media.IS_MUSIC, 1);
+        values.put(MediaStore.Audio.Media.IS_PENDING, 1);
+
+        Uri result = sIsolatedResolver.insert(audioUri, values);
+
+        // Check the audio file is inserted correctly
+        try (Cursor c = sIsolatedResolver.query(result, new String[]{MediaColumns.DISPLAY_NAME,
+                        MediaColumns.IS_PENDING},
+                null, null)) {
+            assertNotNull(c);
+            assertEquals(1, c.getCount());
+            assertTrue(c.moveToFirst());
+            assertEquals(displayName, c.getString(0));
+            assertEquals(1, c.getInt(1));
+        }
+
+        final String volume = MediaStore.VOLUME_EXTERNAL_PRIMARY;
+        assertQueryResultNoItems(MediaStore.Audio.Albums.getContentUri(volume));
+        assertQueryResultNoItems(MediaStore.Audio.Artists.getContentUri(volume));
+        assertQueryResultNoItems(MediaStore.Audio.Genres.getContentUri(volume));
+    }
+
+    private static void assertQueryResultNoItems(Uri uri) throws Exception {
+        try (Cursor c = sIsolatedResolver.query(uri, null, null, null, null)) {
+            assertNotNull(c);
+            assertEquals(0, c.getCount());
+        }
+    }
+
     private static void assertRelativePathForDirectory(String directoryPath, String relativePath) {
         assertWithMessage("extractRelativePathForDirectory(" + directoryPath + ") :")
                 .that(extractRelativePathForDirectory(directoryPath))
diff --git a/tests/src/com/android/providers/media/playlist/PlaylistTest.java b/tests/src/com/android/providers/media/playlist/PlaylistTest.java
index fd453e0..d7b7f92 100644
--- a/tests/src/com/android/providers/media/playlist/PlaylistTest.java
+++ b/tests/src/com/android/providers/media/playlist/PlaylistTest.java
@@ -16,6 +16,8 @@
 
 package com.android.providers.media.playlist;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertEquals;
 
 import androidx.test.runner.AndroidJUnit4;
@@ -128,7 +130,31 @@
         assertPlaylistEquals(GREEN);
     }
 
+    @Test
+    public void testRemoveMultiple() throws Exception {
+        playlist.add(0, RED);
+        playlist.add(1, GREEN);
+        playlist.add(2, BLUE);
+        assertPlaylistEquals(RED, GREEN, BLUE);
+
+        // Unlike #remove, #removeMultiple ignores out of bounds indexes
+        assertEquals(0, playlist.removeMultiple(100));
+        assertPlaylistEquals(RED, GREEN, BLUE);
+
+        assertEquals(2, playlist.removeMultiple(0, 2));
+        assertPlaylistEquals(GREEN);
+
+        assertEquals(1, playlist.removeMultiple(0));
+        assertPlaylistEmpty();
+    }
+
+
+
     private void assertPlaylistEquals(Path... items) {
         assertEquals(items, playlist.asList().toArray());
     }
+
+    private void assertPlaylistEmpty() {
+        assertThat(playlist.asList()).isEmpty();
+    }
 }
diff --git a/tests/src/com/android/providers/media/scan/MediaScannerTest.java b/tests/src/com/android/providers/media/scan/MediaScannerTest.java
index 3d28820..d938180 100644
--- a/tests/src/com/android/providers/media/scan/MediaScannerTest.java
+++ b/tests/src/com/android/providers/media/scan/MediaScannerTest.java
@@ -85,6 +85,16 @@
                 public boolean isFuseThread() {
                     return asFuseThread;
                 }
+
+                @Override
+                public boolean getBooleanDeviceConfig(String key, boolean defaultValue) {
+                    return defaultValue;
+                }
+
+                @Override
+                public String getStringDeviceConfig(String key, String defaultValue) {
+                    return defaultValue;
+                }
             };
             mProvider.attachInfo(this, info);
             mResolver.addProvider(MediaStore.AUTHORITY, mProvider);
diff --git a/tests/src/com/android/providers/media/scan/ModernMediaScannerTest.java b/tests/src/com/android/providers/media/scan/ModernMediaScannerTest.java
index f7bb434..e7e890b 100644
--- a/tests/src/com/android/providers/media/scan/ModernMediaScannerTest.java
+++ b/tests/src/com/android/providers/media/scan/ModernMediaScannerTest.java
@@ -18,6 +18,7 @@
 
 import static com.android.providers.media.scan.MediaScanner.REASON_UNKNOWN;
 import static com.android.providers.media.scan.MediaScannerTest.stage;
+import static com.android.providers.media.scan.ModernMediaScanner.MAX_EXCLUDE_DIRS;
 import static com.android.providers.media.scan.ModernMediaScanner.shouldScanPathAndIsPathHidden;
 import static com.android.providers.media.scan.ModernMediaScanner.isFileAlbumArt;
 import static com.android.providers.media.scan.ModernMediaScanner.parseOptional;
@@ -36,6 +37,8 @@
 import static com.android.providers.media.util.FileUtils.isDirectoryHidden;
 import static com.android.providers.media.util.FileUtils.isFileHidden;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -68,6 +71,7 @@
 
 import com.android.providers.media.R;
 import com.android.providers.media.scan.MediaScannerTest.IsolatedContext;
+import com.android.providers.media.tests.utils.Timer;
 import com.android.providers.media.util.FileUtils;
 
 import com.google.common.io.ByteStreams;
@@ -90,6 +94,11 @@
     // TODO: scan directory-vs-files and confirm identical results
 
     private static final String TAG = "ModernMediaScannerTest";
+    /**
+     * Number of times we should repeat an operation to get an average/max.
+     */
+    private static final int COUNT_REPEAT = 5;
+
     private File mDir;
 
     private Context mIsolatedContext;
@@ -228,7 +237,12 @@
 
     @Test
     public void testParseOptionalDate() throws Exception {
-        assertEquals(1577836800000L, (long) parseOptionalDate("20200101T000000").get());
+        assertThat(parseOptionalDate("20200101T000000")).isEqualTo(Optional.of(1577836800000L));
+        assertThat(parseOptionalDate("20200101T211205")).isEqualTo(Optional.of(1577913125000L));
+        assertThat(parseOptionalDate("20200101T211205.000Z"))
+                .isEqualTo(Optional.of(1577913125000L));
+        assertThat(parseOptionalDate("20200101T211205.123Z"))
+                .isEqualTo(Optional.of(1577913125123L));
     }
 
     @Test
@@ -383,15 +397,11 @@
     public void testShouldScanPathAndIsPathHidden() {
         for (String prefix : new String[] {
                 "/storage/emulated/0",
-                "/storage/emulated/0/Android/sandbox/com.example",
                 "/storage/0000-0000",
-                "/storage/0000-0000/Android/sandbox/com.example",
         }) {
             assertShouldScanPathAndIsPathHidden(true, false, new File(prefix));
             assertShouldScanPathAndIsPathHidden(true, false, new File(prefix + "/meow"));
             assertShouldScanPathAndIsPathHidden(true, false, new File(prefix + "/Android/meow"));
-            assertShouldScanPathAndIsPathHidden(true, false,
-                    new File(prefix + "/Android/sandbox/meow"));
 
             assertShouldScanPathAndIsPathHidden(true, true, new File(prefix + "/.meow/dir"));
 
@@ -407,6 +417,9 @@
                     new File(prefix + "/Movies/.thumbnails/meow"));
             assertShouldScanPathAndIsPathHidden(false, false,
                     new File(prefix + "/Music/.thumbnails/meow"));
+
+            assertShouldScanPathAndIsPathHidden(false, false,
+                    new File(prefix + "/.transcode/meow"));
         }
     }
 
@@ -457,26 +470,24 @@
     public void testShouldScanDirectory() throws Exception {
         for (String prefix : new String[] {
                 "/storage/emulated/0",
-                "/storage/emulated/0/Android/sandbox/com.example",
                 "/storage/0000-0000",
-                "/storage/0000-0000/Android/sandbox/com.example",
         }) {
             assertShouldScanDirectory(new File(prefix));
             assertShouldScanDirectory(new File(prefix + "/meow"));
             assertShouldScanDirectory(new File(prefix + "/Android"));
             assertShouldScanDirectory(new File(prefix + "/Android/meow"));
-            assertShouldScanDirectory(new File(prefix + "/Android/sandbox"));
-            assertShouldScanDirectory(new File(prefix + "/Android/sandbox/meow"));
             assertShouldScanDirectory(new File(prefix + "/.meow"));
 
             assertShouldntScanDirectory(new File(prefix + "/Android/data"));
             assertShouldntScanDirectory(new File(prefix + "/Android/obb"));
+            assertShouldntScanDirectory(new File(prefix + "/Android/sandbox"));
 
             assertShouldntScanDirectory(new File(prefix + "/Pictures/.thumbnails"));
             assertShouldntScanDirectory(new File(prefix + "/Movies/.thumbnails"));
             assertShouldntScanDirectory(new File(prefix + "/Music/.thumbnails"));
 
             assertShouldScanDirectory(new File(prefix + "/DCIM/.thumbnails"));
+            assertShouldntScanDirectory(new File(prefix + "/.transcode"));
         }
     }
 
@@ -492,9 +503,7 @@
     public void testIsDirectoryHidden() throws Exception {
         for (String prefix : new String[] {
                 "/storage/emulated/0",
-                "/storage/emulated/0/Android/sandbox/com.example",
                 "/storage/0000-0000",
-                "/storage/0000-0000/Android/sandbox/com.example",
         }) {
             assertDirectoryNotHidden(new File(prefix));
             assertDirectoryNotHidden(new File(prefix + "/meow"));
@@ -736,12 +745,12 @@
 
     @Test
     public void testScan_Nomedia_Dir() throws Exception {
-        final File red = new File(mDir, "red");
-        final File blue = new File(mDir, "blue");
-        red.mkdirs();
-        blue.mkdirs();
-        stage(R.raw.test_image, new File(red, "red.jpg"));
-        stage(R.raw.test_image, new File(blue, "blue.jpg"));
+        final File redDir = new File(mDir, "red");
+        final File blueDir = new File(mDir, "blue");
+        redDir.mkdirs();
+        blueDir.mkdirs();
+        stage(R.raw.test_image, new File(redDir, "red.jpg"));
+        stage(R.raw.test_image, new File(blueDir, "blue.jpg"));
 
         mModern.scanDirectory(mDir, REASON_UNKNOWN);
 
@@ -749,7 +758,7 @@
         assertQueryCount(2, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
 
         // Hide one directory, rescan, and confirm hidden
-        final File redNomedia = new File(red, ".nomedia");
+        final File redNomedia = new File(redDir, ".nomedia");
         redNomedia.createNewFile();
         mModern.scanDirectory(mDir, REASON_UNKNOWN);
         assertQueryCount(1, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
@@ -761,6 +770,35 @@
     }
 
     @Test
+    public void testScan_MaxExcludeNomediaDirs_DoesNotThrowException() throws Exception {
+        // Create MAX_EXCLUDE_DIRS + 50 nomedia dirs in mDir
+        // (Need to add 50 as MAX_EXCLUDE_DIRS is a safe limit;
+        // 499 would have been too close to the exception limit)
+        // Mark them as non-dirty so that they are excluded from scans
+        for (int i = 0 ; i < (MAX_EXCLUDE_DIRS + 50) ; i++) {
+            createCleanNomediaDir(mDir);
+        }
+
+        final File redDir = new File(mDir, "red");
+        redDir.mkdirs();
+        stage(R.raw.test_image, new File(redDir, "red.jpg"));
+
+        assertQueryCount(0, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
+        mModern.scanDirectory(mDir, REASON_UNKNOWN);
+        assertQueryCount(1, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
+    }
+
+    private void createCleanNomediaDir(File dir) throws Exception {
+        final File nomediaDir = new File(dir, "test_" + System.nanoTime());
+        nomediaDir.mkdirs();
+        final File nomedia = new File(nomediaDir, ".nomedia");
+        nomedia.createNewFile();
+
+        FileUtils.setDirectoryDirty(nomediaDir, false);
+        assertThat(FileUtils.isDirectoryDirty(nomediaDir)).isFalse();
+    }
+
+    @Test
     public void testScan_Nomedia_File() throws Exception {
         final File image = new File(mDir, "image.jpg");
         final File nomedia = new File(mDir, ".nomedia");
@@ -925,6 +963,24 @@
         }
     }
 
+    @Test
+    public void testScan_BitmapFile() throws Exception {
+        final File bmp = new File(mDir, "image.bmp");
+        stage(R.raw.test_bmp, bmp);
+
+        final Uri uri = mModern.scanFile(bmp, REASON_UNKNOWN);
+        try (Cursor cursor = mIsolatedResolver
+                .query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null)) {
+            assertEquals(1, cursor.getCount());
+            cursor.moveToFirst();
+            assertEquals(1280,
+                    cursor.getInt(cursor.getColumnIndex(MediaColumns.WIDTH)));
+            assertEquals(720,
+                    cursor.getInt(cursor.getColumnIndex(MediaColumns.HEIGHT)));
+        }
+    }
+
+
     /**
      * Executes a shell command.
      */
@@ -949,4 +1005,133 @@
             return new String(ByteStreams.toByteArray(output));
         }
     }
+
+    @Test
+    public void testPlaylistDeletion() throws Exception {
+        final File music = new File(mDir, "Music");
+        music.mkdirs();
+        stage(R.raw.test_audio, new File(music, "001.mp3"));
+        stage(R.raw.test_audio, new File(music, "002.mp3"));
+        stage(R.raw.test_audio, new File(music, "003.mp3"));
+        stage(R.raw.test_audio, new File(music, "004.mp3"));
+        stage(R.raw.test_audio, new File(music, "005.mp3"));
+        stage(R.raw.test_m3u, new File(music, "test.m3u"));
+
+        mModern.scanDirectory(mDir, REASON_UNKNOWN);
+
+        final Uri playlistUri = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;
+        final long playlistId;
+        try (Cursor cursor = mIsolatedContext.getContentResolver().query(playlistUri,
+                new String[] { FileColumns._ID }, null, null)) {
+            assertTrue(cursor.moveToFirst());
+            playlistId = cursor.getLong(0);
+        }
+
+        final int count = mIsolatedContext.getContentResolver().delete(
+                ContentUris.withAppendedId(playlistUri, playlistId), null);
+        assertEquals(1, count);
+
+        MediaStore.waitForIdle(mIsolatedResolver);
+
+        final Uri membersUri = MediaStore.Audio.Playlists.Members
+                .getContentUri(MediaStore.VOLUME_EXTERNAL, playlistId);
+        try (Cursor cursor = mIsolatedResolver.query(membersUri, null, null, null)) {
+            assertEquals(0, cursor.getCount());
+        }
+    }
+
+    @Test
+    public void testPlaylistMembersDeletion() throws Exception {
+        final File music = new File(mDir, "Music");
+        music.mkdirs();
+        stage(R.raw.test_audio, new File(music, "001.mp3"));
+        stage(R.raw.test_audio, new File(music, "002.mp3"));
+        stage(R.raw.test_audio, new File(music, "003.mp3"));
+        stage(R.raw.test_audio, new File(music, "004.mp3"));
+        stage(R.raw.test_audio, new File(music, "005.mp3"));
+        stage(R.raw.test_m3u, new File(music, "test.m3u"));
+
+        mModern.scanDirectory(mDir, REASON_UNKNOWN);
+
+        final Uri playlistUri = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;
+        final long playlistId;
+        try (Cursor cursor = mIsolatedContext.getContentResolver().query(playlistUri,
+                new String[] { FileColumns._ID }, null, null)) {
+            assertTrue(cursor.moveToFirst());
+            playlistId = cursor.getLong(0);
+        }
+
+        final int count = mIsolatedContext.getContentResolver().delete(
+                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null);
+        assertEquals(5, count);
+
+        MediaStore.waitForIdle(mIsolatedResolver);
+
+        final Uri membersUri = MediaStore.Audio.Playlists.Members
+                .getContentUri(MediaStore.VOLUME_EXTERNAL, playlistId);
+        try (Cursor cursor = mIsolatedResolver.query(membersUri, null, null, null)) {
+            assertEquals(0, cursor.getCount());
+        }
+    }
+
+    @Test
+    public void testScan_largeXmpData() throws Exception {
+        final File image = new File(mDir, "large_xmp.mp4");
+        stage(R.raw.large_xmp, image);
+        assertTrue(image.exists());
+
+        mModern.scanDirectory(mDir, REASON_UNKNOWN);
+
+        try (Cursor cursor = mIsolatedResolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
+                new String[] { MediaColumns.XMP }, null, null, null)) {
+            assertEquals(1, cursor.getCount());
+            cursor.moveToFirst();
+            assertEquals(0, cursor.getBlob(0).length);
+        }
+    }
+
+    @Test
+    public void testNoOpScan_NoMediaDirs() throws Exception {
+        File nomedia = new File(mDir, ".nomedia");
+        assertThat(nomedia.createNewFile()).isTrue();
+        for (int i = 0; i < 100; i++) {
+            File file = new File(mDir, "file_" + System.nanoTime());
+            assertThat(file.createNewFile()).isTrue();
+        }
+        Timer firstDirScan = new Timer("firstDirScan");
+        firstDirScan.start();
+        // Time taken : preVisitDirectory + 100 visitFiles
+        mModern.scanDirectory(mDir, REASON_UNKNOWN);
+        firstDirScan.stop();
+        firstDirScan.dumpResults();
+
+        // Time taken : preVisitDirectory
+        Timer noOpDirScan = new Timer("noOpDirScan");
+        for (int i = 0 ; i < COUNT_REPEAT ; i++) {
+            noOpDirScan.start();
+            mModern.scanDirectory(mDir, REASON_UNKNOWN);
+            noOpDirScan.stop();
+        }
+        noOpDirScan.dumpResults();
+        assertThat(noOpDirScan.getMaxDurationMillis()).isLessThan(
+                firstDirScan.getMaxDurationMillis());
+
+        // renaming directory for non-M_E_S apps does a scan of the directory as well;
+        // so subsequent scans should be noOp as the directory is not dirty.
+        File renamedTestDir = new File(mIsolatedContext.getExternalMediaDirs()[0],
+                "renamed_test_" + System.nanoTime());
+        assertThat(mDir.renameTo(renamedTestDir)).isTrue();
+
+        Timer renamedDirScan = new Timer("renamedDirScan");
+        renamedDirScan.start();
+        // Time taken : preVisitDirectory
+        mModern.scanDirectory(renamedTestDir, REASON_UNKNOWN);
+        renamedDirScan.stop();
+        renamedDirScan.dumpResults();
+        assertThat(renamedDirScan.getMaxDurationMillis()).isLessThan(
+                firstDirScan.getMaxDurationMillis());
+
+        // This is essential for folder cleanup in tearDown
+        mDir = renamedTestDir;
+    }
 }
diff --git a/tests/src/com/android/providers/media/util/ExifUtilsTest.java b/tests/src/com/android/providers/media/util/ExifUtilsTest.java
index b712d51..6af0eac 100644
--- a/tests/src/com/android/providers/media/util/ExifUtilsTest.java
+++ b/tests/src/com/android/providers/media/util/ExifUtilsTest.java
@@ -103,5 +103,17 @@
         }
         return true;
     }
+
+    @Test
+    public void testSubSeconds() throws Exception {
+        assertEquals(0L, ExifUtils.parseSubSeconds("0"));
+        assertEquals(100L, ExifUtils.parseSubSeconds("1"));
+        assertEquals(10L, ExifUtils.parseSubSeconds("01"));
+        assertEquals(120L, ExifUtils.parseSubSeconds("12"));
+        assertEquals(123L, ExifUtils.parseSubSeconds("123"));
+        assertEquals(123L, ExifUtils.parseSubSeconds("1234"));
+        assertEquals(12L, ExifUtils.parseSubSeconds("01234"));
+    }
+
 }
 
diff --git a/tests/src/com/android/providers/media/util/FileUtilsTest.java b/tests/src/com/android/providers/media/util/FileUtilsTest.java
index edec1a2..2e85421 100644
--- a/tests/src/com/android/providers/media/util/FileUtilsTest.java
+++ b/tests/src/com/android/providers/media/util/FileUtilsTest.java
@@ -57,6 +57,7 @@
 import static org.junit.Assert.fail;
 
 import android.content.ContentValues;
+import android.os.Environment;
 import android.provider.MediaStore;
 import android.provider.MediaStore.MediaColumns;
 
@@ -74,15 +75,32 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.RandomAccessFile;
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.Locale;
 import java.util.Optional;
 
 @RunWith(AndroidJUnit4.class)
 public class FileUtilsTest {
+    // Exposing here since it is also used by MediaProviderTest.java
+    public static final int MAX_FILENAME_BYTES = FileUtils.MAX_FILENAME_BYTES;
+
+    /**
+     * To help avoid flaky tests, give ourselves a unique nonce to be used for
+     * all filesystem paths, so that we don't risk conflicting with previous
+     * test runs.
+     */
+    private static final String NONCE = String.valueOf(System.nanoTime());
+
+    private static final String TEST_DIRECTORY_NAME = "FileUtilsTestDirectory" + NONCE;
+    private static final String TEST_FILE_NAME = "FileUtilsTestFile" + NONCE;
+
     private File mTarget;
     private File mDcimTarget;
     private File mDeleteTarget;
+    private File mDownloadTarget;
+    private File mTestDownloadDir;
 
     @Before
     public void setUp() throws Exception {
@@ -93,11 +111,17 @@
         mDcimTarget.mkdirs();
 
         mDeleteTarget = mDcimTarget;
+
+        mDownloadTarget = new File(Environment.getExternalStorageDirectory(),
+                Environment.DIRECTORY_DOWNLOADS);
+        mTestDownloadDir = new File(mDownloadTarget, TEST_DIRECTORY_NAME);
+        mTestDownloadDir.mkdirs();
     }
 
     @After
     public void tearDown() throws Exception {
         FileUtils.deleteContents(mTarget);
+        FileUtils.deleteContents(mTestDownloadDir);
     }
 
     private void touch(String name, long age) throws Exception {
@@ -121,6 +145,17 @@
         // Verify empty writing deletes file
         FileUtils.writeString(file, Optional.empty());
         assertFalse(FileUtils.readString(file).isPresent());
+
+        // Verify reading from a file with more than 4096 chars
+        try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
+            raf.setLength(4097);
+        }
+        assertEquals(Optional.empty(), FileUtils.readString(file));
+
+        // Verify reading from non existing file.
+        file.delete();
+        assertEquals(Optional.empty(), FileUtils.readString(file));
+
     }
 
     @Test
@@ -407,7 +442,25 @@
     }
 
     /**
-     * Verify that we generate unique filenames that look sane compared to other
+     * Verify that we generate unique filenames that meet the JEITA DCF
+     * specification when writing into directories like {@code DCIM}.
+     *
+     * See b/174120008 for context.
+     */
+    @Test
+    public void testBuildUniqueFile_DCF_strict_differentLocale() throws Exception {
+        Locale defaultLocale = Locale.getDefault();
+        try {
+            Locale.setDefault(new Locale("ar", "SA"));
+            testBuildUniqueFile_DCF_strict();
+        }
+        finally {
+            Locale.setDefault(defaultLocale);
+        }
+    }
+
+    /**
+     * Verify that we generate unique filenames that look valid compared to other
      * {@code DCIM} filenames. These technically aren't part of the official
      * JEITA DCF specification.
      */
@@ -424,6 +477,24 @@
                 buildUniqueFile(mDcimTarget, "IMG_20190102_030405~2.jpg"));
     }
 
+    /**
+     * Verify that we generate unique filenames that look valid compared to other
+     * {@code DCIM} filenames. These technically aren't part of the official
+     * JEITA DCF specification.
+     *
+     * See b/174120008 for context.
+     */
+    @Test
+    public void testBuildUniqueFile_DCF_relaxed_differentLocale() throws Exception {
+        Locale defaultLocale = Locale.getDefault();
+        try {
+            Locale.setDefault(new Locale("ar", "SA"));
+            testBuildUniqueFile_DCF_relaxed();
+        } finally {
+            Locale.setDefault(defaultLocale);
+        }
+    }
+
     @Test
     public void testExtractVolumePath() throws Exception {
         assertEquals("/storage/emulated/0/",
@@ -643,6 +714,81 @@
         assertNull(values.get(MediaColumns.DATE_EXPIRES));
     }
 
+    @Test
+    public void testComputeDataFromValues_Trashed_trimFileName() throws Exception {
+        testComputeDataFromValues_withAction_trimFileName(MediaColumns.IS_TRASHED);
+    }
+
+    @Test
+    public void testComputeDataFromValues_Pending_trimFileName() throws Exception {
+        testComputeDataFromValues_withAction_trimFileName(MediaColumns.IS_PENDING);
+    }
+
+    @Test
+    public void testGetTopLevelNoMedia_CurrentDir() throws Exception {
+        File dirInDownload = getNewDirInDownload("testGetTopLevelNoMedia_CurrentDir");
+        File nomedia = new File(dirInDownload, ".nomedia");
+        assertTrue(nomedia.createNewFile());
+
+        assertEquals(dirInDownload, FileUtils.getTopLevelNoMedia(new File(dirInDownload, "foo")));
+    }
+
+    @Test
+    public void testGetTopLevelNoMedia_TopDir() throws Exception {
+        File topDirInDownload = getNewDirInDownload("testGetTopLevelNoMedia_TopDir");
+        File topNomedia = new File(topDirInDownload, ".nomedia");
+        assertTrue(topNomedia.createNewFile());
+
+        File dirInTopDirInDownload = new File(topDirInDownload, "foo");
+        assertTrue(dirInTopDirInDownload.mkdirs());
+        File nomedia = new File(dirInTopDirInDownload, ".nomedia");
+        assertTrue(nomedia.createNewFile());
+
+        assertEquals(topDirInDownload,
+                FileUtils.getTopLevelNoMedia(new File(dirInTopDirInDownload, "foo")));
+    }
+
+    @Test
+    public void testGetTopLevelNoMedia_NoDir() throws Exception {
+        File topDirInDownload = getNewDirInDownload("testGetTopLevelNoMedia_NoDir");
+        File dirInTopDirInDownload = new File(topDirInDownload, "foo");
+        assertTrue(dirInTopDirInDownload.mkdirs());
+
+        assertEquals(null,
+                FileUtils.getTopLevelNoMedia(new File(dirInTopDirInDownload, "foo")));
+    }
+
+    @Test
+    public void testDirectoryDirty() throws Exception {
+        File dirInDownload = getNewDirInDownload("testDirectoryDirty");
+
+        // All directories are considered dirty, unless hidden
+        assertTrue(FileUtils.isDirectoryDirty(dirInDownload));
+
+        // Marking a directory as clean has no effect without a .nomedia file
+        FileUtils.setDirectoryDirty(dirInDownload, false);
+        assertTrue(FileUtils.isDirectoryDirty(dirInDownload));
+
+        // Creating an empty .nomedia file still keeps a directory dirty
+        File nomedia = new File(dirInDownload, ".nomedia");
+        assertTrue(nomedia.createNewFile());
+        assertTrue(FileUtils.isDirectoryDirty(dirInDownload));
+
+        // Marking as clean with a .nomedia file works
+        FileUtils.setDirectoryDirty(dirInDownload, false);
+        assertFalse(FileUtils.isDirectoryDirty(dirInDownload));
+
+        // Marking as dirty with a .nomedia file works
+        FileUtils.setDirectoryDirty(dirInDownload, true);
+        assertTrue(FileUtils.isDirectoryDirty(dirInDownload));
+    }
+
+    private File getNewDirInDownload(String name) {
+        File file = new File(mTestDownloadDir, name);
+        assertTrue(file.mkdir());
+        return file;
+    }
+
     private static File touch(File dir, String name) throws IOException {
         final File res = new File(dir, name);
         res.createNewFile();
@@ -665,4 +811,34 @@
             assertTrue("Unexpected actual file " + actualFile, expectedSet.contains(actualFile));
         }
     }
+
+    public static String createExtremeFileName(String prefix, String extension) {
+        // create extreme long file name
+        final int prefixLength = prefix.length();
+        final int extensionLength = extension.length();
+        StringBuilder str = new StringBuilder(prefix);
+        for (int i = 0; i < (MAX_FILENAME_BYTES - prefixLength - extensionLength); i++) {
+            str.append(i % 10);
+        }
+        return str.append(extension).toString();
+    }
+
+    private void testComputeDataFromValues_withAction_trimFileName(String columnKey) {
+        final String originalName = createExtremeFileName("test", ".jpg");
+        final String volumePath = "/storage/emulated/0/";
+        final ContentValues values = new ContentValues();
+        values.put(columnKey, 1);
+        values.put(MediaColumns.RELATIVE_PATH, "DCIM/My Vacation/");
+        values.put(MediaColumns.DATE_EXPIRES, 1577836800L);
+        values.put(MediaColumns.DISPLAY_NAME, originalName);
+
+        FileUtils.computeDataFromValues(values, new File(volumePath), false /* isForFuse */);
+
+        final String data = values.getAsString(MediaColumns.DATA);
+        final String result = FileUtils.extractDisplayName(data);
+        // after adding the prefix .pending-timestamp or .trashed-timestamp,
+        // the largest length of the file name is MAX_FILENAME_BYTES 255
+        Truth.assertThat(result.length()).isAtMost(MAX_FILENAME_BYTES);
+        Truth.assertThat(result).isNotEqualTo(originalName);
+    }
 }
diff --git a/tests/src/com/android/providers/media/util/SQLiteQueryBuilderTest.java b/tests/src/com/android/providers/media/util/SQLiteQueryBuilderTest.java
index c8fe3bb..322e962 100644
--- a/tests/src/com/android/providers/media/util/SQLiteQueryBuilderTest.java
+++ b/tests/src/com/android/providers/media/util/SQLiteQueryBuilderTest.java
@@ -16,7 +16,10 @@
 
 package com.android.providers.media.util;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -31,6 +34,7 @@
 import android.os.Build;
 import android.os.CancellationSignal;
 import android.os.OperationCanceledException;
+import android.provider.MediaStore;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.runner.AndroidJUnit4;
@@ -91,9 +95,9 @@
         sqliteQueryBuilder.appendWhere("age=20");
         String sql = sqliteQueryBuilder.buildQuery(new String[] { "age", "address" },
                 null, null, null, null, null);
-        assertEquals(TEST_TABLE_NAME, sqliteQueryBuilder.getTables());
+        assertThat(sqliteQueryBuilder.getTables()).isEqualTo(TEST_TABLE_NAME);
         expected = "SELECT age, address FROM " + TEST_TABLE_NAME + " WHERE (age=20)";
-        assertEquals(expected, sql);
+        assertThat(sql).isEqualTo(expected);
 
         sqliteQueryBuilder = new SQLiteQueryBuilder();
         sqliteQueryBuilder.setTables(EMPLOYEE_TABLE_NAME);
@@ -101,9 +105,9 @@
         sqliteQueryBuilder.appendWhere("age>32");
         sql = sqliteQueryBuilder.buildQuery(new String[] { "age", "address" },
                 null, null, null, null, null);
-        assertEquals(EMPLOYEE_TABLE_NAME, sqliteQueryBuilder.getTables());
+        assertThat(sqliteQueryBuilder.getTables()).isEqualTo(EMPLOYEE_TABLE_NAME);
         expected = "SELECT DISTINCT age, address FROM " + EMPLOYEE_TABLE_NAME + " WHERE (age>32)";
-        assertEquals(expected, sql);
+        assertThat(sql).isEqualTo(expected);
 
         sqliteQueryBuilder = new SQLiteQueryBuilder();
         sqliteQueryBuilder.setTables(EMPLOYEE_TABLE_NAME);
@@ -111,15 +115,14 @@
         sqliteQueryBuilder.appendWhereEscapeString("age>32");
         sql = sqliteQueryBuilder.buildQuery(new String[] { "age", "address" },
                 null, null, null, null, null);
-        assertEquals(EMPLOYEE_TABLE_NAME, sqliteQueryBuilder.getTables());
+        assertThat(sqliteQueryBuilder.getTables()).isEqualTo(EMPLOYEE_TABLE_NAME);
         expected = "SELECT DISTINCT age, address FROM " + EMPLOYEE_TABLE_NAME
                 + " WHERE ('age>32')";
-        assertEquals(expected, sql);
+        assertThat(sql).isEqualTo(expected);
     }
 
     @Test
     public void testSetProjectionMap() {
-        String expected;
         Map<String, String> projectMap = new HashMap<String, String>();
         projectMap.put("EmployeeName", "name");
         projectMap.put("EmployeeAge", "age");
@@ -130,24 +133,54 @@
         sqliteQueryBuilder.setProjectionMap(projectMap);
         String sql = sqliteQueryBuilder.buildQuery(new String[] { "EmployeeName", "EmployeeAge" },
                 null, null, null, null, null);
-        expected = "SELECT name, age FROM " + TEST_TABLE_NAME;
-        assertEquals(expected, sql);
+        assertThat(sql).isEqualTo("SELECT name, age FROM " + TEST_TABLE_NAME);
 
         sql = sqliteQueryBuilder.buildQuery(null, // projectionIn is null
                 null, null, null, null, null);
-        assertTrue(sql.matches("SELECT (age|name|address), (age|name|address), (age|name|address) "
-                + "FROM " + TEST_TABLE_NAME));
-        assertTrue(sql.contains("age"));
-        assertTrue(sql.contains("name"));
-        assertTrue(sql.contains("address"));
+        assertThat(sql).matches(
+                "SELECT (age|name|address), (age|name|address), (age|name|address) "
+                    + "FROM " + TEST_TABLE_NAME);
+        assertThat(sql).contains("age");
+        assertThat(sql).contains("name");
+        assertThat(sql).contains("address");
 
         sqliteQueryBuilder.setProjectionMap(null);
         sql = sqliteQueryBuilder.buildQuery(new String[] { "name", "address" },
                 null, null, null, null, null);
-        assertTrue(sql.matches("SELECT (name|address), (name|address) "
-                + "FROM " + TEST_TABLE_NAME));
-        assertTrue(sql.contains("name"));
-        assertTrue(sql.contains("address"));
+        assertThat(sql).matches("SELECT (name|address), (name|address) "
+                + "FROM " + TEST_TABLE_NAME);
+        assertThat(sql).contains("name");
+        assertThat(sql).contains("address");
+
+    }
+
+    @Test
+    public void testAllowRowid() {
+        Map<String, String> projectMap = new HashMap<String, String>();
+        projectMap.put("EmployeeName", "name");
+        projectMap.put("EmployeeAge", "age");
+        projectMap.put("EmployeeAddress", "address");
+        SQLiteQueryBuilder sqliteQueryBuilder = new SQLiteQueryBuilder();
+        sqliteQueryBuilder.setTables(TEST_TABLE_NAME);
+        sqliteQueryBuilder.setDistinct(false);
+        sqliteQueryBuilder.setProjectionMap(projectMap);
+
+        sqliteQueryBuilder.allowRowidColumn();
+
+        String sql = sqliteQueryBuilder.buildQuery(new String[] { SQLiteQueryBuilder.ROWID_COLUMN },
+                null, null, null, null, null);
+        assertThat(sql).isEqualTo("SELECT rowid FROM " + TEST_TABLE_NAME);
+
+        sql = sqliteQueryBuilder.buildQuery(null, // projectionIn is null
+                null, null, null, null, null);
+        assertThat(sql).matches(
+                "SELECT (age|name|address|rowid), (age|name|address|rowid), "
+                    + "(age|name|address|rowid), (age|name|address|rowid) "
+                    + "FROM " + TEST_TABLE_NAME);
+        assertThat(sql).contains("age");
+        assertThat(sql).contains("name");
+        assertThat(sql).contains("address");
+        assertThat(sql).contains("rowid");
     }
 
     private static class MockCursor extends SQLiteCursor {
@@ -173,7 +206,7 @@
                 "HAVING " + DEFAULT_HAVING + " " +
                 "ORDER BY name " +
                 "LIMIT 100";
-        assertEquals(expected, sql);
+        assertThat(sql).isEqualTo(expected);
     }
 
     @Test
@@ -190,7 +223,7 @@
         String expected = "SELECT name, sum(salary) FROM " + TEST_TABLE_NAME
                 + " WHERE (" + DEFAULT_TEST_WHERE + ") " +
                 "GROUP BY name HAVING " + DEFAULT_HAVING + " ORDER BY name LIMIT 2";
-        assertEquals(expected, sql);
+        assertThat(sql).isEqualTo(expected);
     }
 
     @Test
@@ -198,9 +231,9 @@
         StringBuilder sb = new StringBuilder();
         String[] columns = new String[] { "name", "age" };
 
-        assertEquals("", sb.toString());
+        assertThat(sb.toString()).isEmpty();
         SQLiteQueryBuilder.appendColumns(sb, columns);
-        assertEquals("name, age ", sb.toString());
+        assertThat(sb.toString()).isEqualTo("name, age ");
     }
 
     @Test
@@ -212,7 +245,7 @@
         qb.appendWhereStandalone("C");
 
         final String query = qb.buildQuery(null, null, null, null, null, null);
-        assertTrue(query.contains("(A) AND (B) AND (C)"));
+        assertThat(query).contains("(A) AND (B) AND (C)");
     }
 
     @Test
@@ -770,6 +803,66 @@
         builder.enforceStrictGrammar(null, null, null, sortOrder, null);
     }
 
+    @Test
+    public void testShouldAppendRowId_hasIdInValues_notAppendId() {
+        final SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
+        final ContentValues values = new ContentValues();
+        values.put(MediaStore.MediaColumns._ID, "1");
+        values.put(MediaStore.MediaColumns.DATA, "/storage/emulated/0/");
+
+        assertFalse(builder.shouldAppendRowId(values));
+    }
+
+    @Test
+    public void testShouldAppendRowId_noDataInValues_notAppendId() {
+        final SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
+        final ContentValues values = new ContentValues();
+
+        assertFalse(builder.shouldAppendRowId(values));
+    }
+
+    @Test
+    public void testShouldAppendRowId_noIdInProjectionMap_notAppendId() {
+        final SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
+        final ContentValues values = new ContentValues();
+        values.put(MediaStore.MediaColumns.DATA, "/storage/emulated/0/");
+
+        final HashMap<String, String> map = new HashMap<>();
+        map.put("_data", "_data");
+        map.put("date_added", "date_added");
+        map.put("date_modified", "date_modified");
+        map.put("media_type", "media_type");
+        builder.setProjectionMap(map);
+
+        assertFalse(builder.shouldAppendRowId(values));
+    }
+
+    @Test
+    public void testShouldAppendRowId_noProjectionMap_notAppendId() {
+        final SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
+        final ContentValues values = new ContentValues();
+        values.put(MediaStore.MediaColumns.DATA, "/storage/emulated/0/");
+
+        assertFalse(builder.shouldAppendRowId(values));
+    }
+
+    @Test
+    public void testShouldAppendRowId_hasIdInProjectionMap_shouldAppendId() {
+        final SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
+        final ContentValues values = new ContentValues();
+        values.put(MediaStore.MediaColumns.DATA, "/storage/emulated/0/");
+
+        final HashMap<String, String> map = new HashMap<>();
+        map.put(MediaStore.MediaColumns._ID, MediaStore.MediaColumns._ID);
+        map.put("_data", "_data");
+        map.put("date_added", "date_added");
+        map.put("date_modified", "date_modified");
+        map.put("media_type", "media_type");
+        builder.setProjectionMap(map);
+
+        assertTrue(builder.shouldAppendRowId(values));
+    }
+
     private void assertStrictInsertValid(ContentValues values) {
         mStrictBuilder.insert(mDatabase, values);
     }
diff --git a/tests/transcode/Android.bp b/tests/transcode/Android.bp
new file mode 100644
index 0000000..3619c69
--- /dev/null
+++ b/tests/transcode/Android.bp
@@ -0,0 +1,57 @@
+android_test {
+    name: "MediaProviderTranscodeTests",
+    test_suites: [
+        "device-tests",
+        "mts",
+    ],
+    compile_multilib: "both",
+
+    manifest: "AndroidManifest.xml",
+
+    srcs: [
+        "src/**/*.java",
+    ],
+
+    libs: [
+        "android.test.base",
+        "android.test.mock",
+        "android.test.runner",
+    ],
+
+    static_libs: [
+        "androidx.test.rules",
+        "cts-install-lib",
+        "collector-device-lib-platform",
+        "mockito-target",
+        "truth-prebuilt",
+    ],
+
+    certificate: "media",
+    java_resources: [":TranscodeTestAppSupportsHevc", ":TranscodeTestAppSupportsSlowMotion"]
+}
+
+android_test_helper_app {
+    name: "TranscodeTestAppSupportsHevc",
+    manifest: "helper/AndroidManifest.xml",
+    sdk_version: "test_current",
+    resource_dirs: ["helper/res-hevc"],
+    srcs: [
+          "helper/src/**/*.java",
+          "src/com/android/providers/media/transcode/TranscodeTestConstants.java"
+    ],
+    static_libs: ["androidx.legacy_legacy-support-v4"],
+    target_sdk_version: "28",
+}
+
+android_test_helper_app {
+    name: "TranscodeTestAppSupportsSlowMotion",
+    manifest: "helper/AndroidManifest.xml",
+    sdk_version: "test_current",
+    resource_dirs: ["helper/res-slow-motion"],
+    srcs: [
+          "helper/src/**/*.java",
+          "src/com/android/providers/media/transcode/TranscodeTestConstants.java"
+    ],
+    static_libs: ["androidx.legacy_legacy-support-v4"],
+    target_sdk_version: "28",
+}
\ No newline at end of file
diff --git a/tests/transcode/AndroidManifest.xml b/tests/transcode/AndroidManifest.xml
new file mode 100644
index 0000000..0005688
--- /dev/null
+++ b/tests/transcode/AndroidManifest.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.providers.media.transcode">
+
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
+
+    <application android:label="MediaProvider Transcode Tests">
+      <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.providers.media.transcode"
+        android:label="MediaProvider Transcode Tests" />
+
+</manifest>
diff --git a/tests/transcode/AndroidTest.xml b/tests/transcode/AndroidTest.xml
new file mode 100644
index 0000000..1a9b813
--- /dev/null
+++ b/tests/transcode/AndroidTest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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.
+-->
+<configuration description="Runs Tests for MediaProvder.">
+    <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
+        <option name="test-file-name" value="MediaProviderTranscodeTests.apk" />
+        <option name="install-arg" value="-g" />
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
+
+    <option name="test-suite-tag" value="apct" />
+    <option name="test-suite-tag" value="framework-base-presubmit" />
+    <option name="test-tag" value="MediaProviderTranscodeTests" />
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="com.android.providers.media.transcode" />
+        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
+        <option name="hidden-api-checks" value="false"/>
+    </test>
+</configuration>
diff --git a/tests/transcode/helper/AndroidManifest.xml b/tests/transcode/helper/AndroidManifest.xml
new file mode 100644
index 0000000..c8f5a99
--- /dev/null
+++ b/tests/transcode/helper/AndroidManifest.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 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.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.android.providers.media.transcode.testapp"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+    <application android:label="Transcode Test App">
+      <property android:name="android.media.PROPERTY_MEDIA_CAPABILITIES"
+                android:resource="@xml/media_capabilities" />
+
+      <activity android:name="com.android.providers.media.transcode.testapp.TranscodeTestHelper"
+                android:exported="true" >
+        <intent-filter>
+          <action android:name="android.intent.action.MAIN" />
+          <category android:name="android.intent.category.DEFAULT"/>
+          <category android:name="android.intent.category.LAUNCHER" />
+        </intent-filter>
+      </activity>
+
+      <provider
+            android:name="androidx.core.content.FileProvider"
+            android:authorities="com.android.providers.media.transcode.testapp"
+            android:exported="false"
+            android:grantUriPermissions="true">
+          <meta-data
+              android:name="android.support.FILE_PROVIDER_PATHS"
+              android:resource="@xml/file_paths" />
+      </provider>
+    </application>
+</manifest>
diff --git a/tests/transcode/helper/res-hevc/xml/file_paths.xml b/tests/transcode/helper/res-hevc/xml/file_paths.xml
new file mode 100644
index 0000000..2d5ccaf
--- /dev/null
+++ b/tests/transcode/helper/res-hevc/xml/file_paths.xml
@@ -0,0 +1,3 @@
+<external-paths xmlns:android="http://schemas.android.com/apk/res/android">
+   <external-path name="external_files" path="."/>
+</external-paths>
diff --git a/tests/transcode/helper/res-hevc/xml/media_capabilities.xml b/tests/transcode/helper/res-hevc/xml/media_capabilities.xml
new file mode 100644
index 0000000..3bff61e
--- /dev/null
+++ b/tests/transcode/helper/res-hevc/xml/media_capabilities.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 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.
+-->
+
+<media-capabilities xmlns:android="http://schemas.android.com/apk/res/android">
+    <format android:name="HEVC" supported="true"/>
+    <format android:name="HDR10" supported="false"/>
+    <format android:name="SlowMotion" supported="false"/>
+</media-capabilities>
diff --git a/tests/transcode/helper/res-slow-motion/xml/file_paths.xml b/tests/transcode/helper/res-slow-motion/xml/file_paths.xml
new file mode 100644
index 0000000..2d5ccaf
--- /dev/null
+++ b/tests/transcode/helper/res-slow-motion/xml/file_paths.xml
@@ -0,0 +1,3 @@
+<external-paths xmlns:android="http://schemas.android.com/apk/res/android">
+   <external-path name="external_files" path="."/>
+</external-paths>
diff --git a/tests/transcode/helper/res-slow-motion/xml/media_capabilities.xml b/tests/transcode/helper/res-slow-motion/xml/media_capabilities.xml
new file mode 100644
index 0000000..e96557e
--- /dev/null
+++ b/tests/transcode/helper/res-slow-motion/xml/media_capabilities.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 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.
+-->
+
+<media-capabilities xmlns:android="http://schemas.android.com/apk/res/android">
+    <format android:name="HEVC" supported="false"/>
+    <format android:name="HDR10" supported="false"/>
+    <format android:name="SlowMotion" supported="true"/>
+</media-capabilities>
diff --git a/tests/transcode/helper/src/com/android/providers/media/transcode/TranscodeTestHelper.java b/tests/transcode/helper/src/com/android/providers/media/transcode/TranscodeTestHelper.java
new file mode 100644
index 0000000..43deec7
--- /dev/null
+++ b/tests/transcode/helper/src/com/android/providers/media/transcode/TranscodeTestHelper.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2020 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.providers.media.transcode.testapp;
+
+import static com.android.providers.media.transcode.TranscodeTestConstants.INTENT_EXTRA_CALLING_PKG;
+import static com.android.providers.media.transcode.TranscodeTestConstants.INTENT_EXTRA_PATH;
+import static com.android.providers.media.transcode.TranscodeTestConstants.OPEN_FILE_QUERY;
+import static com.android.providers.media.transcode.TranscodeTestConstants.INTENT_QUERY_TYPE;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+
+import androidx.core.content.FileProvider;
+
+import java.io.File;
+
+/**
+ * Helper app for TranscodeTest.
+ *
+ * <p>Used to perform TranscodeTest functions as a different app. Based on the Query type
+ * app can perform different functions and send the result back to host app.
+ */
+public class TranscodeTestHelper extends Activity {
+    private static final String TAG = "TranscodeTestHelper";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        String queryType = getIntent().getStringExtra(INTENT_QUERY_TYPE);
+        if (!OPEN_FILE_QUERY.equals(queryType)) {
+            throw new IllegalStateException(
+                    "Unknown query received from launcher app: " + queryType);
+        }
+
+        final File file = new File(getIntent().getStringExtra(INTENT_EXTRA_PATH));
+        Uri contentUri = FileProvider.getUriForFile(this, getPackageName(), file);
+
+        final Intent intent = new Intent(queryType);
+        intent.putExtra(queryType, contentUri);
+
+        // Grant permission to the calling package
+        getApplicationContext().grantUriPermission(getIntent().getStringExtra(
+                        INTENT_EXTRA_CALLING_PKG),
+                contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION
+                | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+        sendBroadcast(intent);
+    }
+}
diff --git a/tests/transcode/res/raw/testVideo_HEVC_small.mp4 b/tests/transcode/res/raw/testVideo_HEVC_small.mp4
new file mode 100755
index 0000000..f2aa045
--- /dev/null
+++ b/tests/transcode/res/raw/testVideo_HEVC_small.mp4
Binary files differ
diff --git a/tests/transcode/res/raw/testVideo_Legacy.mp4 b/tests/transcode/res/raw/testVideo_Legacy.mp4
new file mode 100755
index 0000000..1c74ffa
--- /dev/null
+++ b/tests/transcode/res/raw/testVideo_Legacy.mp4
Binary files differ
diff --git a/tests/transcode/res/raw/testvideo_HEVC.mp4 b/tests/transcode/res/raw/testvideo_HEVC.mp4
new file mode 100644
index 0000000..8a3dba2
--- /dev/null
+++ b/tests/transcode/res/raw/testvideo_HEVC.mp4
Binary files differ
diff --git a/tests/transcode/src/com/android/providers/media/transcode/TranscodeTest.java b/tests/transcode/src/com/android/providers/media/transcode/TranscodeTest.java
new file mode 100644
index 0000000..83ad729
--- /dev/null
+++ b/tests/transcode/src/com/android/providers/media/transcode/TranscodeTest.java
@@ -0,0 +1,723 @@
+/*
+ * Copyright (C) 2020 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.providers.media.transcode;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static com.android.providers.media.transcode.TranscodeTestUtils.assertFileContent;
+import static com.android.providers.media.transcode.TranscodeTestUtils.assertTranscode;
+import static com.android.providers.media.transcode.TranscodeTestUtils.installAppWithStoragePermissions;
+import static com.android.providers.media.transcode.TranscodeTestUtils.open;
+import static com.android.providers.media.transcode.TranscodeTestUtils.openFileAs;
+import static com.android.providers.media.transcode.TranscodeTestUtils.uninstallApp;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.Manifest;
+import android.content.ContentResolver;
+import android.media.ApplicationMediaCapabilities;
+import android.media.MediaFormat;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.ParcelFileDescriptor;
+import android.provider.MediaStore;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.cts.install.lib.TestApp;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class TranscodeTest {
+    private static final File EXTERNAL_STORAGE_DIRECTORY
+            = Environment.getExternalStorageDirectory();
+    private static final File DIR_CAMERA
+            = new File(EXTERNAL_STORAGE_DIRECTORY, Environment.DIRECTORY_DCIM + "/Camera");
+    // TODO(b/169546642): Test other directories like /sdcard and /sdcard/foo
+    // These are the only transcode unsupported directories we can stage files in given our
+    // test app permissions
+    private static final File[] DIRS_NO_TRANSCODE = {
+        new File(EXTERNAL_STORAGE_DIRECTORY, Environment.DIRECTORY_PICTURES),
+        new File(EXTERNAL_STORAGE_DIRECTORY, Environment.DIRECTORY_MOVIES),
+        new File(EXTERNAL_STORAGE_DIRECTORY, Environment.DIRECTORY_DOWNLOADS),
+        new File(EXTERNAL_STORAGE_DIRECTORY, Environment.DIRECTORY_DCIM),
+        new File(EXTERNAL_STORAGE_DIRECTORY, Environment.DIRECTORY_DOCUMENTS),
+    };
+
+    static final String NONCE = String.valueOf(System.nanoTime());
+    private static final String HEVC_FILE_NAME = "TranscodeTestHEVC_" + NONCE + ".mp4";
+    private static final String SMALL_HEVC_FILE_NAME = "TranscodeTestHevcSmall_" + NONCE + ".mp4";
+    private static final String LEGACY_FILE_NAME = "TranscodeTestLegacy_" + NONCE + ".mp4";
+
+    private static final TestApp TEST_APP_HEVC = new TestApp("TestAppHevc",
+            "com.android.providers.media.transcode.testapp", 1, false,
+            "TranscodeTestAppSupportsHevc.apk");
+
+    private static final TestApp TEST_APP_SLOW_MOTION = new TestApp("TestAppSlowMotion",
+            "com.android.providers.media.transcode.testapp", 1, false,
+            "TranscodeTestAppSupportsSlowMotion.apk");
+
+    @Before
+    public void setUp() throws Exception {
+        // TODO(b/171789917): Cuttlefish doesn't support transcoding yet
+        Assume.assumeFalse(Build.MODEL.contains("Cuttlefish"));
+
+        TranscodeTestUtils.pollForExternalStorageState();
+        TranscodeTestUtils.grantPermission(getContext().getPackageName(),
+                Manifest.permission.READ_EXTERNAL_STORAGE);
+        TranscodeTestUtils.pollForPermission(Manifest.permission.READ_EXTERNAL_STORAGE, true);
+        TranscodeTestUtils.enableSeamlessTranscoding();
+        TranscodeTestUtils.disableTranscodingForAllPackages();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        TranscodeTestUtils.disableSeamlessTranscoding();
+    }
+
+    /**
+     * Tests that we return FD of transcoded file for legacy apps
+     * @throws Exception
+     */
+    @Test
+    public void testTranscoded_FilePath() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            ParcelFileDescriptor pfdOriginal = open(modernFile, false);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+            ParcelFileDescriptor pfdTranscoded = open(modernFile, false);
+
+            assertFileContent(modernFile, modernFile, pfdOriginal, pfdTranscoded, false);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    /**
+     * Tests that we don't transcode files outside DCIM/Camera
+     * @throws Exception
+     */
+    @Test
+    public void testNoTranscodeOutsideCamera_FilePath() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        List<File> noTranscodeFiles = new ArrayList<>();
+        for (File file : DIRS_NO_TRANSCODE) {
+            noTranscodeFiles.add(new File(file, HEVC_FILE_NAME));
+        }
+        noTranscodeFiles.add(new File(getContext().getExternalFilesDir(null), HEVC_FILE_NAME));
+
+        try {
+            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+            for (File file : noTranscodeFiles) {
+                TranscodeTestUtils.stageHEVCVideoFile(file);
+            }
+            ParcelFileDescriptor pfdOriginal1 = open(modernFile, false);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            for (File file : noTranscodeFiles) {
+                pfdOriginal1.seekTo(0);
+                ParcelFileDescriptor pfdOriginal2 = open(file, false);
+                assertFileContent(modernFile, file, pfdOriginal1, pfdOriginal2, true);
+            }
+        } finally {
+            modernFile.delete();
+            for (File file : noTranscodeFiles) {
+                file.delete();
+            }
+        }
+    }
+
+    /**
+     * Tests that same transcoded file is used for multiple open() from same app
+     * @throws Exception
+     */
+    @Test
+    public void testSameTranscoded_FilePath() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+            ParcelFileDescriptor pfdTranscoded1 = open(modernFile, false);
+            ParcelFileDescriptor pfdTranscoded2 = open(modernFile, false);
+
+            assertFileContent(modernFile, modernFile, pfdTranscoded1, pfdTranscoded2, true);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    /**
+     * Tests that we return FD of transcoded file for legacy apps
+     * @throws Exception
+     */
+    @Test
+    public void testTranscoded_ContentResolver() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            ParcelFileDescriptor pfdOriginal = open(uri, false, null /* bundle */);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            ParcelFileDescriptor pfdTranscoded = open(uri, false, null /* bundle */);
+
+            assertFileContent(modernFile, modernFile, pfdOriginal, pfdTranscoded, false);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    /**
+     * Tests that we don't transcode files outside DCIM/Camera
+     * @throws Exception
+     */
+    @Test
+    public void testNoTranscodeOutsideCamera_ConentResolver() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        List<File> noTranscodeFiles = new ArrayList<>();
+        for (File file : DIRS_NO_TRANSCODE) {
+            noTranscodeFiles.add(new File(file, HEVC_FILE_NAME));
+        }
+
+        try {
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+            ArrayList<Uri> noTranscodeUris = new ArrayList<>();
+            for (File file : noTranscodeFiles) {
+                noTranscodeUris.add(TranscodeTestUtils.stageHEVCVideoFile(file));
+            }
+
+            ParcelFileDescriptor pfdOriginal1 = open(uri, false, null /* bundle */);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            for (int i = 0; i < noTranscodeUris.size(); i++) {
+                pfdOriginal1.seekTo(0);
+                ParcelFileDescriptor pfdOriginal2 =
+                        open(noTranscodeUris.get(i), false, null /* bundle */);
+                assertFileContent(modernFile, noTranscodeFiles.get(1), pfdOriginal1, pfdOriginal2,
+                        true);
+            }
+        } finally {
+            modernFile.delete();
+            for (File file : noTranscodeFiles) {
+                file.delete();
+            }
+        }
+    }
+
+    /**
+     * Tests that same transcoded file is used for multiple open() from same app
+     * @throws Exception
+     */
+    @Test
+    public void testSameTranscodedFile_ContentResolver() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            ParcelFileDescriptor pfdTranscoded1 = open(uri, false, null /* bundle */);
+            ParcelFileDescriptor pfdTranscoded2 = open(uri, false, null /* bundle */);
+
+            assertFileContent(modernFile, modernFile, pfdTranscoded1, pfdTranscoded2, true);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    /**
+     * Tests that deletes are visible across legacy and modern apps
+     * @throws Exception
+     */
+    @Test
+    public void testDeleteTranscodedFile_FilePath() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            assertTrue(modernFile.delete());
+            assertFalse(modernFile.exists());
+
+            TranscodeTestUtils.disableTranscodingForAllPackages();
+
+            assertFalse(modernFile.exists());
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    /**
+     * Tests that renames are visible across legacy and modern apps
+     * @throws Exception
+     */
+    @Test
+    public void testRenameTranscodedFile_FilePath() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        File destFile = new File(DIR_CAMERA, "renamed_" + HEVC_FILE_NAME);
+        try {
+            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            assertTrue(modernFile.renameTo(destFile));
+            assertTrue(destFile.exists());
+            assertFalse(modernFile.exists());
+
+            TranscodeTestUtils.disableTranscodingForAllPackages();
+
+            assertTrue(destFile.exists());
+            assertFalse(modernFile.exists());
+        } finally {
+            modernFile.delete();
+            destFile.delete();
+        }
+    }
+
+    /**
+     * Tests that transcode doesn't start until read(2)
+     * @throws Exception
+     */
+    @Test
+    public void testLazyTranscodedFile_FilePath() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            assertTranscode(modernFile, false);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            assertTranscode(modernFile, true);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    /**
+     * Tests that transcode cache is reused after file path transcode
+     * @throws Exception
+     */
+    @Test
+    public void testTranscodedCacheReuse_FilePath() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            assertTranscode(modernFile, true);
+            assertTranscode(modernFile, false);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    /**
+     * Tests that transcode cache is reused after ContentResolver transcode
+     * @throws Exception
+     */
+    @Ignore("b/174655855")
+    @Test
+    public void testTranscodedCacheReuse_ContentResolver() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            assertTranscode(uri, true);
+            assertTranscode(uri, false);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    /**
+     * Tests that transcode cache is reused after ContentResolver transcode
+     * and file path opens
+     * @throws Exception
+     */
+    @Ignore("b/174655855")
+    @Test
+    public void testTranscodedCacheReuse_ContentResolverFilePath() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            assertTranscode(uri, true);
+            assertTranscode(modernFile, false);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    /**
+     * Tests that transcode cache is reused after file path transcode
+     * and ContentResolver opens
+     * @throws Exception
+     */
+    @Test
+    public void testTranscodedCacheReuse_FilePathContentResolver() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            assertTranscode(modernFile, true);
+            assertTranscode(uri, false);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    /**
+     * Tests that transcode cache is reused after rename
+     * @throws Exception
+     */
+    @Test
+    public void testTranscodedCacheReuseAfterRename_FilePath() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        File destFile = new File(DIR_CAMERA, "renamed_" + HEVC_FILE_NAME);
+        try {
+            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            assertTranscode(modernFile, true);
+
+            assertTrue(modernFile.renameTo(destFile));
+
+            assertTranscode(destFile, false);
+        } finally {
+            modernFile.delete();
+            destFile.delete();
+        }
+    }
+
+    @Test
+    public void testExtraAcceptOriginalFormatTrue_ContentResolver() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            ParcelFileDescriptor pfdOriginal1 = open(uri, false, null /* bundle */);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            Bundle bundle = new Bundle();
+            bundle.putBoolean(MediaStore.EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMAT, true);
+            ParcelFileDescriptor pfdOriginal2 = open(uri, false, bundle);
+
+            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, true);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    @Test
+    public void testExtraAcceptOriginalFormatFalse_ContentResolver() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            ParcelFileDescriptor pfdOriginal = open(uri, false, null /* bundle */);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            Bundle bundle = new Bundle();
+            bundle.putBoolean(MediaStore.EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMAT, false);
+            ParcelFileDescriptor pfdTranscoded = open(uri, false, bundle);
+
+            assertFileContent(modernFile, modernFile, pfdOriginal, pfdTranscoded, false);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    @Test
+    public void testExtraMediaCapabilitiesHevcTrue_ContentResolver() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            ParcelFileDescriptor pfdOriginal1 = open(uri, false, null /* bundle */);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            Bundle bundle = new Bundle();
+            ApplicationMediaCapabilities capabilities =
+                    new ApplicationMediaCapabilities.Builder()
+                    .addSupportedVideoMimeType(MediaFormat.MIMETYPE_VIDEO_HEVC).build();
+            bundle.putParcelable(MediaStore.EXTRA_MEDIA_CAPABILITIES, capabilities);
+            ParcelFileDescriptor pfdOriginal2 = open(uri, false, bundle);
+
+            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, true);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    @Test
+    public void testExtraMediaCapabilitiesHevcFalse_ContentResolver() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            ParcelFileDescriptor pfdOriginal1 = open(uri, false, null /* bundle */);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            Bundle bundle = new Bundle();
+            ApplicationMediaCapabilities capabilities =
+                    new ApplicationMediaCapabilities.Builder().build();
+            bundle.putParcelable(MediaStore.EXTRA_MEDIA_CAPABILITIES, capabilities);
+            ParcelFileDescriptor pfdTranscoded = open(uri, false, bundle);
+
+            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdTranscoded, false);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    @Test
+    public void testExtraAcceptOriginalTrueAndMediaCapabilitiesHevcFalse_ContentResolver()
+            throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        try {
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            ParcelFileDescriptor pfdOriginal1 = open(uri, false, null /* bundle */);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            Bundle bundle = new Bundle();
+            ApplicationMediaCapabilities capabilities =
+                    new ApplicationMediaCapabilities.Builder().build();
+            bundle.putParcelable(MediaStore.EXTRA_MEDIA_CAPABILITIES, capabilities);
+            bundle.putBoolean(MediaStore.EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMAT, true);
+            ParcelFileDescriptor pfdOriginal2 = open(uri, false, bundle);
+
+            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, true);
+        } finally {
+            modernFile.delete();
+        }
+    }
+
+    @Test
+    public void testMediaCapabilitiesManifestHevc()
+            throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        ParcelFileDescriptor pfdOriginal2 = null;
+        try {
+            installAppWithStoragePermissions(TEST_APP_HEVC);
+
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            ParcelFileDescriptor pfdOriginal1 = open(modernFile, false);
+
+            TranscodeTestUtils.enableTranscodingForPackage(TEST_APP_HEVC.getPackageName());
+
+            pfdOriginal2 = openFileAs(TEST_APP_HEVC, modernFile);
+
+            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, true);
+        } finally {
+            // Explicitly close PFD otherwise instrumention might crash when test_app is uninstalled
+            if (pfdOriginal2 != null) {
+                pfdOriginal2.close();
+            }
+            modernFile.delete();
+            uninstallApp(TEST_APP_HEVC);
+        }
+    }
+
+    @Test
+    public void testMediaCapabilitiesManifestSlowMotion()
+            throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        ParcelFileDescriptor pfdOriginal2 = null;
+        try {
+            installAppWithStoragePermissions(TEST_APP_SLOW_MOTION);
+
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            ParcelFileDescriptor pfdOriginal1 = open(modernFile, false);
+
+            TranscodeTestUtils.enableTranscodingForPackage(TEST_APP_SLOW_MOTION.getPackageName());
+
+            pfdOriginal2 = openFileAs(TEST_APP_SLOW_MOTION, modernFile);
+
+            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, false);
+        } finally {
+            // Explicitly close PFD otherwise instrumention might crash when test_app is uninstalled
+            if (pfdOriginal2 != null) {
+                pfdOriginal2.close();
+            }
+            modernFile.delete();
+            uninstallApp(TEST_APP_HEVC);
+        }
+    }
+
+    @Test
+    public void testAppCompatNoTranscodeHevc() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        String packageName = TEST_APP_SLOW_MOTION.getPackageName();
+        ParcelFileDescriptor pfdOriginal2 = null;
+        try {
+            installAppWithStoragePermissions(TEST_APP_SLOW_MOTION);
+
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            ParcelFileDescriptor pfdOriginal1 = open(modernFile, false);
+
+            TranscodeTestUtils.enableTranscodingForPackage(packageName);
+            // App compat takes precedence
+            TranscodeTestUtils.forceEnableAppCompatHevc(packageName);
+
+            Thread.sleep(2000);
+
+            pfdOriginal2 = openFileAs(TEST_APP_SLOW_MOTION, modernFile);
+
+            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, true);
+        } finally {
+            // Explicitly close PFD otherwise instrumention might crash when test_app is uninstalled
+            if (pfdOriginal2 != null) {
+                pfdOriginal2.close();
+            }
+            modernFile.delete();
+            TranscodeTestUtils.resetAppCompat(packageName);
+            uninstallApp(TEST_APP_HEVC);
+        }
+    }
+
+    @Test
+    public void testAppCompatTranscodeHevc() throws Exception {
+        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
+        String packageName = TEST_APP_SLOW_MOTION.getPackageName();
+        ParcelFileDescriptor pfdOriginal2 = null;
+        try {
+            installAppWithStoragePermissions(TEST_APP_SLOW_MOTION);
+
+            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
+
+            ParcelFileDescriptor pfdOriginal1 = open(modernFile, false);
+
+            // Transcoding is disabled but app compat enables it (disables hevc support)
+            TranscodeTestUtils.forceDisableAppCompatHevc(packageName);
+
+            pfdOriginal2 = openFileAs(TEST_APP_SLOW_MOTION, modernFile);
+
+            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, false);
+        } finally {
+            // Explicitly close PFD otherwise instrumention might crash when test_app is uninstalled
+            if (pfdOriginal2 != null) {
+                pfdOriginal2.close();
+            }
+            modernFile.delete();
+            TranscodeTestUtils.resetAppCompat(packageName);
+            uninstallApp(TEST_APP_HEVC);
+        }
+    }
+
+    /**
+     * Tests that we never initiate tanscoding for legacy formats.
+     * This test compares the bytes read before and after enabling transcoding for the test app.
+     * @throws Exception
+     */
+    @Test
+    public void testTranscodedNotInitiatedForLegacy_UsingBytesRead() throws Exception {
+        File legacyFile = new File(DIR_CAMERA, LEGACY_FILE_NAME);
+        try {
+            TranscodeTestUtils.stageLegacyVideoFile(legacyFile);
+
+            ParcelFileDescriptor pfdOriginal = open(legacyFile, false);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+            ParcelFileDescriptor pfdTranscoded = open(legacyFile, false);
+
+            assertFileContent(legacyFile, legacyFile, pfdOriginal, pfdTranscoded, true);
+        } finally {
+            legacyFile.delete();
+        }
+    }
+
+    /**
+     * Tests that we never initiate tanscoding for legacy formats.
+     * This test asserts using the time it took to read after enabling transcoding for the test app.
+     * The reason for keeping this check separately (than
+     * {@link TranscodeTest#testTranscodedNotInitiatedForLegacy_UsingTiming()}) is that this
+     * provides a higher level of suret that the timing wasn't favorable because of any caching
+     * after open().
+     * @throws Exception
+     */
+    @Test
+    public void testTranscodedNotInitiatedForLegacy_UsingTiming() throws Exception {
+        File legacyFile = new File(DIR_CAMERA, LEGACY_FILE_NAME);
+        try {
+            TranscodeTestUtils.stageLegacyVideoFile(legacyFile);
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+
+            assertTranscode(legacyFile, false);
+        } finally {
+            legacyFile.delete();
+        }
+    }
+
+    /**
+     * Tests that we don't timeout while transcoding small HEVC videos.
+     * For instance, due to some calculation errors we might incorrectly make timeout to be 0.
+     * We test this by making sure that a small HEVC video (< 1 sec long and < 1Mb size) gets
+     * transcoded.
+     * @throws Exception
+     */
+    @Test
+    public void testNoTranscodeTimeoutForSmallHevcVideos() throws Exception {
+        File modernFile = new File(DIR_CAMERA, SMALL_HEVC_FILE_NAME);
+        try {
+            TranscodeTestUtils.stageSmallHevcVideoFile(modernFile);
+            ParcelFileDescriptor pfdOriginal = open(modernFile, false);
+
+            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
+            ParcelFileDescriptor pfdTranscoded = open(modernFile, false);
+
+            assertFileContent(modernFile, modernFile, pfdOriginal, pfdTranscoded, false);
+        } finally {
+            modernFile.delete();
+        }
+    }
+}
diff --git a/tests/transcode/src/com/android/providers/media/transcode/TranscodeTestConstants.java b/tests/transcode/src/com/android/providers/media/transcode/TranscodeTestConstants.java
new file mode 100644
index 0000000..64981c4
--- /dev/null
+++ b/tests/transcode/src/com/android/providers/media/transcode/TranscodeTestConstants.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2020 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.providers.media.transcode;
+
+public final class TranscodeTestConstants {
+    private TranscodeTestConstants() {}
+
+    public static final String INTENT_QUERY_TYPE =
+            "com.android.providers.media.transcode.query_type";
+    public static final String INTENT_EXTRA_CALLING_PKG =
+            "com.android.providers.media.transcode.calling_pkg";
+    public static final String INTENT_EXTRA_PATH = "com.android.providers.media.transcode.path";
+    public static final String OPEN_FILE_QUERY = "com.android.providers.media.transcode.open_file";
+}
diff --git a/tests/transcode/src/com/android/providers/media/transcode/TranscodeTestUtils.java b/tests/transcode/src/com/android/providers/media/transcode/TranscodeTestUtils.java
new file mode 100644
index 0000000..4731af2
--- /dev/null
+++ b/tests/transcode/src/com/android/providers/media/transcode/TranscodeTestUtils.java
@@ -0,0 +1,430 @@
+/*
+ * Copyright (C) 2020 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.providers.media.transcode;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static com.android.providers.media.transcode.TranscodeTestConstants.INTENT_EXTRA_CALLING_PKG;
+import static com.android.providers.media.transcode.TranscodeTestConstants.INTENT_EXTRA_PATH;
+import static com.android.providers.media.transcode.TranscodeTestConstants.OPEN_FILE_QUERY;
+import static com.android.providers.media.transcode.TranscodeTestConstants.INTENT_QUERY_TYPE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+import android.Manifest;
+import android.app.ActivityManager;
+import android.app.AppOpsManager;
+import android.app.UiAutomation;
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.FileUtils;
+import android.os.ParcelFileDescriptor;
+import android.os.SystemClock;
+import android.provider.MediaStore;
+import android.system.Os;
+import android.util.Log;
+
+import androidx.test.InstrumentationRegistry;
+
+import com.android.cts.install.lib.Install;
+import com.android.cts.install.lib.InstallUtils;
+import com.android.cts.install.lib.TestApp;
+import com.android.cts.install.lib.Uninstall;
+
+import com.google.common.io.ByteStreams;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InterruptedIOException;
+import java.util.Arrays;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.function.Supplier;
+
+public class TranscodeTestUtils {
+    private static final String TAG = "TranscodeTestUtils";
+
+    private static final long POLLING_TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(20);
+    private static final long POLLING_SLEEP_MILLIS = 100;
+
+    public static Uri stageHEVCVideoFile(File videoFile) throws IOException {
+        return stageVideoFile(videoFile, R.raw.testvideo_HEVC);
+    }
+
+    public static Uri stageSmallHevcVideoFile(File videoFile) throws IOException {
+        return stageVideoFile(videoFile, R.raw.testVideo_HEVC_small);
+    }
+
+    public static Uri stageLegacyVideoFile(File videoFile) throws IOException {
+        return stageVideoFile(videoFile, R.raw.testVideo_Legacy);
+    }
+
+    private static Uri stageVideoFile(File videoFile, int resourceId) throws IOException {
+        if (!videoFile.getParentFile().exists()) {
+            assertTrue(videoFile.getParentFile().mkdirs());
+        }
+        try (InputStream in =
+                     getContext().getResources().openRawResource(resourceId);
+             FileOutputStream out = new FileOutputStream(videoFile)) {
+            FileUtils.copy(in, out);
+            // Sync file to disk to ensure file is fully written to the lower fs before scanning
+            // Otherwise, media provider might try to read the file on the lower fs and not see
+            // the fully written bytes
+            out.getFD().sync();
+        }
+        return MediaStore.scanFile(getContext().getContentResolver(), videoFile);
+    }
+
+    public static ParcelFileDescriptor open(File file, boolean forWrite) throws Exception {
+        return ParcelFileDescriptor.open(file, forWrite ? ParcelFileDescriptor.MODE_READ_WRITE
+                : ParcelFileDescriptor.MODE_READ_ONLY);
+    }
+
+    public static ParcelFileDescriptor open(Uri uri, boolean forWrite, Bundle bundle)
+            throws Exception {
+        ContentResolver resolver = getContext().getContentResolver();
+        if (bundle == null) {
+            return resolver.openFileDescriptor(uri, forWrite ? "rw" : "r");
+        } else {
+            return resolver.openTypedAssetFileDescriptor(uri, "*/*", bundle)
+                    .getParcelFileDescriptor();
+        }
+    }
+
+    public static void enableSeamlessTranscoding() throws Exception {
+        // This is required so that MediaProvider handles device config changes
+        executeShellCommand("setprop sys.fuse.transcode_debug true");
+        // This is required so that setprop changes take precedence over device_config changes
+        executeShellCommand("setprop persist.sys.fuse.transcode_user_control true");
+        executeShellCommand("setprop persist.sys.fuse.transcode_enabled true");
+        executeShellCommand("setprop persist.sys.fuse.transcode_default false");
+    }
+
+    public static void disableSeamlessTranscoding() throws Exception {
+        executeShellCommand("setprop sys.fuse.transcode_debug false");
+        executeShellCommand("setprop persist.sys.fuse.transcode_user_control true");
+        executeShellCommand("setprop persist.sys.fuse.transcode_enabled false");
+        executeShellCommand("setprop persist.sys.fuse.transcode_default false");
+        disableTranscodingForAllPackages();
+    }
+
+    public static void enableTranscodingForPackage(String packageName) throws Exception {
+        executeShellCommand("device_config put storage_native_boot transcode_compat_manifest "
+                + packageName + ",0");
+    }
+
+    public static void forceEnableAppCompatHevc(String packageName) throws IOException {
+        final String command = "am compat enable 174228127 " + packageName;
+        executeShellCommand(command);
+    }
+
+    public static void forceDisableAppCompatHevc(String packageName) throws IOException {
+        final String command = "am compat enable 174227820 " + packageName;
+        executeShellCommand(command);
+    }
+
+    public static void resetAppCompat(String packageName) throws IOException {
+        final String command = "am compat reset-all " + packageName;
+        executeShellCommand(command);
+    }
+
+    public static void disableTranscodingForAllPackages() throws IOException {
+        executeShellCommand("device_config delete storage_native_boot transcode_compat_manifest");
+    }
+
+    /**
+     * Executes a shell command.
+     */
+    public static String executeShellCommand(String command) throws IOException {
+        int attempt = 0;
+        while (attempt++ < 5) {
+            try {
+                return executeShellCommandInternal(command);
+            } catch (InterruptedIOException e) {
+                // Hmm, we had trouble executing the shell command; the best we
+                // can do is try again a few more times
+                Log.v(TAG, "Trouble executing " + command + "; trying again", e);
+            }
+        }
+        throw new IOException("Failed to execute " + command);
+    }
+
+    private static String executeShellCommandInternal(String cmd) throws IOException {
+        UiAutomation uiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        try (FileInputStream output = new FileInputStream(
+                uiAutomation.executeShellCommand(cmd).getFileDescriptor())) {
+            return new String(ByteStreams.toByteArray(output));
+        }
+    }
+
+    /**
+     * Polls for external storage to be mounted.
+     */
+    public static void pollForExternalStorageState() throws Exception {
+        pollForCondition(
+                () -> Environment.getExternalStorageState(Environment.getExternalStorageDirectory())
+                        .equals(Environment.MEDIA_MOUNTED),
+                "Timed out while waiting for ExternalStorageState to be MEDIA_MOUNTED");
+    }
+
+    private static void pollForCondition(Supplier<Boolean> condition, String errorMessage)
+            throws Exception {
+        for (int i = 0; i < POLLING_TIMEOUT_MILLIS / POLLING_SLEEP_MILLIS; i++) {
+            if (condition.get()) {
+                return;
+            }
+            Thread.sleep(POLLING_SLEEP_MILLIS);
+        }
+        throw new TimeoutException(errorMessage);
+    }
+
+    public static void grantPermission(String packageName, String permission) {
+        UiAutomation uiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        uiAutomation.adoptShellPermissionIdentity("android.permission.GRANT_RUNTIME_PERMISSIONS");
+        try {
+            uiAutomation.grantRuntimePermission(packageName, permission);
+        } finally {
+            uiAutomation.dropShellPermissionIdentity();
+        }
+    }
+
+    /**
+     * Polls until we're granted or denied a given permission.
+     */
+    public static void pollForPermission(String perm, boolean granted) throws Exception {
+        pollForCondition(() -> granted == checkPermissionAndAppOp(perm),
+                "Timed out while waiting for permission " + perm + " to be "
+                        + (granted ? "granted" : "revoked"));
+    }
+
+
+    /**
+     * Checks if the given {@code permission} is granted and corresponding AppOp is MODE_ALLOWED.
+     */
+    private static boolean checkPermissionAndAppOp(String permission) {
+        final int pid = Os.getpid();
+        final int uid = Os.getuid();
+        final Context context = getContext();
+        final String packageName = context.getPackageName();
+        if (context.checkPermission(permission, pid, uid) != PackageManager.PERMISSION_GRANTED) {
+            return false;
+        }
+
+        final String op = AppOpsManager.permissionToOp(permission);
+        // No AppOp associated with the given permission, skip AppOp check.
+        if (op == null) {
+            return true;
+        }
+
+        final AppOpsManager appOps = context.getSystemService(AppOpsManager.class);
+        try {
+            appOps.checkPackage(uid, packageName);
+        } catch (SecurityException e) {
+            return false;
+        }
+
+        return appOps.unsafeCheckOpNoThrow(op, uid, packageName) == AppOpsManager.MODE_ALLOWED;
+    }
+
+    /**
+     * Installs a {@link TestApp} and grants it storage permissions.
+     */
+    public static void installAppWithStoragePermissions(TestApp testApp)
+            throws Exception {
+        UiAutomation uiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        try {
+            final String packageName = testApp.getPackageName();
+            uiAutomation.adoptShellPermissionIdentity(
+                    Manifest.permission.INSTALL_PACKAGES, Manifest.permission.DELETE_PACKAGES);
+            if (InstallUtils.getInstalledVersion(packageName) != -1) {
+                Uninstall.packages(packageName);
+            }
+            Install.single(testApp).commit();
+            assertThat(InstallUtils.getInstalledVersion(packageName)).isEqualTo(1);
+
+            grantPermission(packageName, Manifest.permission.WRITE_EXTERNAL_STORAGE);
+            grantPermission(packageName, Manifest.permission.READ_EXTERNAL_STORAGE);
+        } finally {
+            uiAutomation.dropShellPermissionIdentity();
+        }
+    }
+
+    /**
+     * Uninstalls a {@link TestApp}.
+     */
+    public static void uninstallApp(TestApp testApp) throws Exception {
+        UiAutomation uiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        try {
+            final String packageName = testApp.getPackageName();
+            uiAutomation.adoptShellPermissionIdentity(Manifest.permission.DELETE_PACKAGES);
+
+            Uninstall.packages(packageName);
+            assertThat(InstallUtils.getInstalledVersion(packageName)).isEqualTo(-1);
+        } catch (Exception e) {
+            Log.e(TAG, "Exception occurred while uninstalling app: " + testApp, e);
+        } finally {
+            uiAutomation.dropShellPermissionIdentity();
+        }
+    }
+
+    /**
+     * Makes the given {@code testApp} open a file for read or write.
+     *
+     * <p>This method drops shell permission identity.
+     */
+    public static ParcelFileDescriptor openFileAs(TestApp testApp, File dirPath)
+            throws Exception {
+        String actionName = getContext().getPackageName() + ".open_file";
+        Bundle bundle = getFromTestApp(testApp, dirPath.getPath(), actionName);
+        return getContext().getContentResolver().openFileDescriptor(
+                bundle.getParcelable(actionName), "rw");
+    }
+
+    /**
+     * <p>This method drops shell permission identity.
+     */
+    private static Bundle getFromTestApp(TestApp testApp, String dirPath, String actionName)
+            throws Exception {
+        final CountDownLatch latch = new CountDownLatch(1);
+        final Bundle[] bundle = new Bundle[1];
+        BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                bundle[0] = intent.getExtras();
+                latch.countDown();
+            }
+        };
+
+        sendIntentToTestApp(testApp, dirPath, actionName, broadcastReceiver, latch);
+        return bundle[0];
+    }
+
+    /**
+     * <p>This method drops shell permission identity.
+     */
+    private static void sendIntentToTestApp(TestApp testApp, String dirPath, String actionName,
+            BroadcastReceiver broadcastReceiver, CountDownLatch latch) throws Exception {
+        final String packageName = testApp.getPackageName();
+        forceStopApp(packageName);
+        // Register broadcast receiver
+        final IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction(actionName);
+        intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
+        getContext().registerReceiver(broadcastReceiver, intentFilter);
+
+        // Launch the test app.
+        final Intent intent = new Intent(Intent.ACTION_MAIN);
+        intent.setPackage(packageName);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.putExtra(INTENT_QUERY_TYPE, actionName);
+        intent.putExtra(INTENT_EXTRA_CALLING_PKG, getContext().getPackageName());
+        intent.putExtra(INTENT_EXTRA_PATH, dirPath);
+        intent.addCategory(Intent.CATEGORY_LAUNCHER);
+        getContext().startActivity(intent);
+        if (!latch.await(POLLING_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)) {
+            final String errorMessage = "Timed out while waiting to receive " + actionName
+                    + " intent from " + packageName;
+            throw new TimeoutException(errorMessage);
+        }
+        getContext().unregisterReceiver(broadcastReceiver);
+    }
+
+    /**
+     * <p>This method drops shell permission identity.
+     */
+    private static void forceStopApp(String packageName) throws Exception {
+        UiAutomation uiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        try {
+            uiAutomation.adoptShellPermissionIdentity(Manifest.permission.FORCE_STOP_PACKAGES);
+
+            getContext().getSystemService(ActivityManager.class).forceStopPackage(packageName);
+            Thread.sleep(1000);
+        } finally {
+            uiAutomation.dropShellPermissionIdentity();
+        }
+    }
+
+    public static void assertFileContent(File file1, File file2, ParcelFileDescriptor pfd1,
+            ParcelFileDescriptor pfd2, boolean assertSame) throws Exception {
+        final int len = 1024;
+        byte[] bytes1;
+        byte[] bytes2;
+        int size1 = 0;
+        int size2 = 0;
+
+        boolean isSame = true;
+        do {
+            bytes1 = new byte[len];
+            bytes2 = new byte[len];
+
+            size1 = Os.read(pfd1.getFileDescriptor(), bytes1, 0, len);
+            size2 = Os.read(pfd2.getFileDescriptor(), bytes2, 0, len);
+
+            assertTrue(size1 >= 0);
+            assertTrue(size2 >= 0);
+
+            isSame = (size1 == size2) && Arrays.equals(bytes1, bytes2);
+            if (!isSame) {
+                break;
+            }
+        } while (size1 > 0 && size2 > 0);
+
+        String message = String.format("Files: %s and %s. isSame=%b. assertSame=%s",
+                file1, file2, isSame, assertSame);
+        assertEquals(message, isSame, assertSame);
+    }
+
+    public static void assertTranscode(Uri uri, boolean transcode) throws Exception {
+        long start = SystemClock.elapsedRealtimeNanos();
+        assertTranscode(open(uri, true, null /* bundle */), transcode);
+    }
+
+    public static void assertTranscode(File file, boolean transcode) throws Exception {
+        assertTranscode(open(file, false), transcode);
+    }
+
+    public static void assertTranscode(ParcelFileDescriptor pfd, boolean transcode)
+            throws Exception {
+        long start = SystemClock.elapsedRealtimeNanos();
+        assertEquals(10, Os.pread(pfd.getFileDescriptor(), new byte[10], 0, 10, 0));
+        long end = SystemClock.elapsedRealtimeNanos();
+        long readDuration = end - start;
+
+        // With transcoding read(2) > 100ms (usually > 1s)
+        // Without transcoding read(2) < 10ms (usually < 1ms)
+        String message = "readDuration=" + readDuration + "ns";
+        if (transcode) {
+            assertTrue(message, readDuration > TimeUnit.MILLISECONDS.toNanos(100));
+        } else {
+            assertTrue(message, readDuration < TimeUnit.MILLISECONDS.toNanos(10));
+        }
+    }
+}
diff --git a/tests/utils/src/com/android/providers/media/tests/utils/Timer.java b/tests/utils/src/com/android/providers/media/tests/utils/Timer.java
new file mode 100644
index 0000000..6d8caca
--- /dev/null
+++ b/tests/utils/src/com/android/providers/media/tests/utils/Timer.java
@@ -0,0 +1,82 @@
+/**
+ * Copyright (C) 2020 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.providers.media.tests.utils;
+
+import android.os.Bundle;
+import android.os.SystemClock;
+
+import android.util.Log;
+
+import androidx.test.InstrumentationRegistry;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * General Timer function for MediaProvider tests.
+ */
+public class Timer {
+    private static final String TAG = "Timer";
+
+    private final String name;
+    private int count;
+    private long duration;
+    private long start;
+    private long maxRunDuration = 0;
+
+    public Timer(String name) {
+        this.name = name;
+    }
+
+    public void start() {
+        if (start != 0) {
+            throw new IllegalStateException();
+        } else {
+            start = SystemClock.elapsedRealtimeNanos();
+        }
+    }
+
+    public void stop() {
+        long currentRunDuration = 0;
+        if (start == 0) {
+            throw new IllegalStateException();
+        } else {
+            currentRunDuration = (SystemClock.elapsedRealtimeNanos() - start);
+            maxRunDuration = (currentRunDuration > maxRunDuration) ? currentRunDuration :
+                maxRunDuration;
+            duration += currentRunDuration;
+            start = 0;
+            count++;
+        }
+    }
+
+    public long getAverageDurationMillis() {
+        return TimeUnit.MILLISECONDS.convert(duration / count, TimeUnit.NANOSECONDS);
+    }
+
+    public long getMaxDurationMillis() {
+        return TimeUnit.MILLISECONDS.convert(maxRunDuration, TimeUnit.NANOSECONDS);
+    }
+
+    public void dumpResults() {
+        final long duration = getAverageDurationMillis();
+        Log.v(TAG, name + ": " + duration + "ms");
+
+        final Bundle results = new Bundle();
+        results.putLong(name, duration);
+        InstrumentationRegistry.getInstrumentation().sendStatus(0, results);
+    }
+}
diff --git a/tools/dialogs/AndroidManifest.xml b/tools/dialogs/AndroidManifest.xml
index 947f1bd..8ee5f2c 100644
--- a/tools/dialogs/AndroidManifest.xml
+++ b/tools/dialogs/AndroidManifest.xml
@@ -1,14 +1,17 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.providers.media.tools.dialogs">
+<?xml version="1.0" encoding="utf-8"?>
 
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+     package="com.android.providers.media.tools.dialogs">
+
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 
     <application android:label="DialogsTool">
-        <activity android:name=".DialogsActivity">
+        <activity android:name=".DialogsActivity"
+             android:exported="true">
             <intent-filter android:label="DialogsTool">
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
             </intent-filter>
          </activity>
     </application>
diff --git a/transcode.sh b/transcode.sh
new file mode 100644
index 0000000..c223eb5
--- /dev/null
+++ b/transcode.sh
@@ -0,0 +1,18 @@
+# For extracting a transcode_compat_manifest from a csv file in the format
+# package_name,hevc_support,slow_motion_support,hdr_10_support,hdr_10_plus_support,hdr_hlg_support,hdr_dolby_vision_support,hevc_support_shift,slow_motion_support_shift,hdr_10_support_shift,hd_10_plus_support_shift,hdr_hlg_support_shift,hdr_dolby_vision_support_shift,media_capability
+# com.foo,1,0,0,0,0,0,1,0,0,0,0,0,1
+# ....
+function transcode_compat_manifest() {
+    # Cat file
+    # Remove CLRF (DOS format)
+    # Remove first line (header)
+    # Extract first and last columns in each line
+    # For device_config convert new lines (\n) to comma(,)
+    # For device_config remove trailing comma(,)
+    case "$1" in
+        -r) cat $2 | tr -d '\r' | sed 1d | awk -F "," '{new_var=$1","$NF; print new_var}';;
+        -d) cat $2 | tr -d '\r' | sed 1d | awk -F "," '{new_var=$1","$NF; print new_var}' | tr '\n' ',' | sed 's/,$//g';;
+        *) "Enter '-d' for device_config, '-r' for resource";;
+    esac
+    echo
+}