crowdin: Use crowdin3

* crowdin3 requires changes to the config files:
  - yaml won't work anymore due to an error:
    "Number of aliases for non-scalar nodes exceeds the specified max=50"
  - %original_path% is currently broken, so we don't use it
  - "api_token" instead of "api_key" and
    "project_id" instead of "project_identifier"
* The script itself requires a few other changes:
  - Parse stdout for the actual extracted files so we can work with those,
    that way we don't have to "guess" the downloaded files
  - Add a little spinner to indicate that there is still stuff happening
  - Rename a few variables so debugging will be easier next time...
* The script now also deletes empty folders when it removes the last
  file without translations

Change-Id: Iada741cfa3276675b23ea3cbe1bd57f6e81f108f
diff --git a/README.mkdn b/README.mkdn
index e0a535a..4ce0c81 100644
--- a/README.mkdn
+++ b/README.mkdn
@@ -12,22 +12,27 @@
 
     wget -qO - https://artifacts.crowdin.com/repo/GPG-KEY-crowdin | sudo apt-key add -
     echo 'deb https://artifacts.crowdin.com/repo/deb/ /' | sudo tee /etc/apt/sources.list.d/crowdin.list > /dev/null
-    sudo apt-get update && sudo apt-get install crowdin
+    sudo apt-get update && sudo apt-get install crowdin3
 
 The following tools are also required to run the tool:
 
     sudo apt-get install python3-git python3-yaml python3-lxml
 
+Run the following command:
+
+    pip install -r requirements.txt
+
 Copy <lineage_version>_extra_packages.xml to .repo/local_manifests of each <lineage_version> tree
 to make sure you sync all the extra packages not included in the main manifest.
 
+Create a personal access token on https://crowdin.com/settings#api-key and store it safely.
+
 Executing
 ---------
 Export the following environment variables to set the API keys and the base path.
 Each LineageOS version requires a different environment variable set for the base path that depends on the branch name:
 
-    export LINEAGE_CROWDIN_API_KEY=your_api_key
-    export LINEAGE_AOSP_CROWDIN_API_KEY=your_aosp_api_key
+    export LINEAGE_CROWDIN_API_TOKEN=your_api_token
     export LINEAGE_CROWDIN_BASE_PATH_CM_13_0=your_13.0_base_path
     export LINEAGE_CROWDIN_BASE_PATH_CM_14_1=your_14.1_base_path
     export LINEAGE_CROWDIN_BASE_PATH_LINEAGE_15_1=your_15.1_base_path
@@ -37,8 +42,7 @@
 
 Example:
 
-    export LINEAGE_CROWDIN_API_KEY=1234567890
-    export LINEAGE_AOSP_CROWDIN_API_KEY=0987654321
+    export LINEAGE_CROWDIN_API_TOKEN=1234567890
     export LINEAGE_CROWDIN_BASE_PATH_CM_13_0=/mnt/android/lineageos/cm-13.0
     export LINEAGE_CROWDIN_BASE_PATH_CM_14_1=/mnt/android/lineageos/cm-14.1
     export LINEAGE_CROWDIN_BASE_PATH_LINEAGE_15_1=/mnt/android/lineageos/lineage-15.1
diff --git a/config/cm-13.0.yaml b/config/cm-13.0.yaml
index f591089..be967da 100644
--- a/config/cm-13.0.yaml
+++ b/config/cm-13.0.yaml
@@ -3,7 +3,7 @@
 # Crowdin configuration file for LineageOS
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2018 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,607 +17,370 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-api_key_env: LINEAGE_CROWDIN_API_KEY
-base_path_env: LINEAGE_CROWDIN_BASE_PATH_CM_13_0
-project_identifier: lineageos
-preserve_hierarchy: true
+"api_token_env": LINEAGE_CROWDIN_API_TOKEN
+"base_path_env": LINEAGE_CROWDIN_BASE_PATH_CM_13_0
+"project_id": 237414
+"preserve_hierarchy": true
 
-files:
-# Frameworks
-
-  # framework-res
-  -
-    source:      '/frameworks/base/core/res/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: &anchor
-      android_code:
-        af: af
-        am: am
-        ar: ar
-        as: as-rIN
-        ast: ast-rES
-        az: az-rAZ
-        be: be
-        bg: bg
-        bn: bn-rBD
-        ca: ca
-        cs: cs
-        cy: cy
-        da: da
-        de: de
-        el: el
-        en-AU: en-rAU
-        en-GB: en-rGB
-        en-IN: en-rIN
-        en-PT: en-rPT
-        eo: eo
-        es-ES: es
-        es-MX: es-rMX
-        es-US: es-rUS
-        et: et-rEE
-        eu: eu-rES
-        fa: fa
-        fi: fi
-        fr: fr
-        fr-CA: fr-rCA
-        fy-NL: fy-rNL
-        gl: gl-rES
-        gu-IN: gu-rIN
-        he: iw
-        hi: hi
-        hr: hr
-        hu: hu
-        hy-AM: hy-rAM
-        id: in
-        is: is-rIS
-        it: it
-        ja: ja
-        ka: ka-rGE
-        kab: kab-rDZ
-        kk: kk-rKZ
-        km: km-rKH
-        kn: kn-rIN
-        ko: ko
-        ku: ku
-        ky: ky-rKG
-        lb: lb
-        lo: lo-rLA
-        lt: lt
-        lv: lv
-        mk: mk-rMK
-        ml-IN: ml-rIN
-        mn: mn-rMN
-        mr: mr-rIN
-        ms: ms-rMY
-        my: my-rMM
-        nb: nb
-        ne-NP: ne-rNP
-        nl: nl
-        or: or-rIN
-        pa-IN: pa-rIN
-        pl: pl
-        pt-PT: pt-rPT
-        pt-BR: pt-rBR
-        rm-CH: rm
-        ro: ro
-        ru: ru
-        sc: sc-rIT
-        si-LK: si-rLK
-        sk: sk
-        sl: sl
-        sq: sq-rAL
-        sr: sr
-        sv-SE: sv
-        sw: sw
-        ta: ta-rIN
-        te: te-rIN
-        th: th
-        tl: tl
-        tr: tr
-        ug: ug
-        uk: uk
-        ur-PK: ur-rPK
-        uz: uz-rUZ
-        vi: vi
-        zh-CN: zh-rCN
-        zh-HK: zh-rHK
-        zh-TW: zh-rTW
-        zu: zu
-
-  # Keyguard
-  -
-    source:      '/frameworks/base/packages/Keyguard/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsLib
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SystemUI
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/cm_arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Packages
-
-  # AudioFX
-  -
-    source:      '/packages/apps/AudioFX/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Bluetooth
-  -
-    source:      '/packages/apps/Bluetooth/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # BluetoothExt
-  -
-    source:      '/packages/apps/BluetoothExt/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/BluetoothExt/res/values/strings_dun.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/BluetoothExt/res/values/strings_ftp.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/BluetoothExt/res/values/strings_map.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/BluetoothExt/res/values/strings_sap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Browser
-  -
-    source:      '/packages/apps/Browser/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Calculator
-  -
-    source:      '/packages/apps/Calculator/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Calendar
-  -
-    source:      '/packages/apps/Calendar/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Calendar/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Camera2
-  -
-    source:      '/packages/apps/Camera2/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CellBroadcastReceiver
-  -
-    source:      '/packages/apps/CellBroadcastReceiver/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CMBugReport
-  -
-    source:      '/packages/apps/CMBugReport/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CMFileManager
-  -
-    source:      '/packages/apps/CMFileManager/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/CMFileManager/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CMUpdater
-  -
-    source:      '/packages/apps/CMUpdater/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/CMUpdater/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CMWallpapers
-  -
-    source:      '/packages/apps/CMWallpapers/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Contacts
-  -
-    source:      '/packages/apps/Contacts/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Contacts/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ContactsCommon
-  -
-    source:      '/packages/apps/ContactsCommon/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/ContactsCommon/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DeskClock
-  -
-    source:      '/packages/apps/DeskClock/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Dialer
-  -
-    source:      '/packages/apps/Dialer/res/values/cm_arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Eleven
-  -
-    source:      '/packages/apps/Eleven/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Eleven/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Email
-  -
-    source:      '/packages/apps/Email/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gallery2
-  -
-    source:      '/packages/apps/Gallery2/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gallery2/res/values/codeaurora_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gello
-  -
-    source:      '/packages/apps/Gello/res/raw/incognito_mode_start_page.html'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gello/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # InCallUI
-  -
-    source:      '/packages/apps/InCallUI/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/InCallUI/res/values/qtistrings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LockClock
-  -
-    source:      '/packages/apps/LockClock/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Messaging
-  -
-    source:      '/packages/apps/Messaging/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhoneCommon
-  -
-    source:      '/packages/apps/PhoneCommon/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Profiles
-  -
-    source:      '/packages/apps/Profiles/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Screencast
-  -
-    source:      '/packages/apps/Screencast/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Settings
-  -
-    source:      '/packages/apps/Settings/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Settings/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SetupWizard
-  -
-    source:      '/packages/apps/SetupWizard/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Snap
-  -
-    source:      '/packages/apps/Snap/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/res/values/qcomstrings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SoundRecorder
-  -
-    source:      '/packages/apps/SoundRecorder/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Stk
-  -
-    source:      '/packages/apps/Stk/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Terminal
-  -
-    source:      '/packages/apps/Terminal/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Terminal/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ThemeChooser
-  -
-    source:      '/packages/apps/ThemeChooser/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Trebuchet
-  -
-    source:      '/packages/apps/Trebuchet/res/values/cm_arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Trebuchet/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TvSettings
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UnifiedEmail
-  -
-    source:      '/packages/apps/UnifiedEmail/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Input methods
-
-  # LatinIME
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Providers
-
-  # DataUsageProvider
-  -
-    source:      '/packages/providers/DataUsageProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DownloadProvider
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ThemesProvider
-  -
-    source:      '/packages/providers/ThemesProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WeatherProvider
-  -
-    source:      '/packages/providers/WeatherProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Screensavers
-
-  # PhotoTable
-  -
-    source:      '/packages/screensavers/PhotoTable/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Services
-
-  # CMAudioService
-  -
-    source:      '/packages/services/CMAudioService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LiveLockScreenService
-  -
-    source:      '/packages/services/LiveLockScreenService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Mms
-  -
-    source:      '/packages/services/Mms/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telecomm
-  -
-    source:      '/packages/services/Telecomm/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telephony
-  -
-    source:      '/packages/services/Telephony/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/services/Telephony/res/values/qtistrings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ThemeManagerService
-  -
-    source:      '/packages/services/ThemeManagerService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WeatherService
-  -
-    source:      '/packages/services/WeatherService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Wallpapers
-
-  # Galaxy4
-  -
-    source:      '/packages/wallpapers/Galaxy4/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhaseBeam
-  -
-    source:      '/packages/wallpapers/PhaseBeam/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhotoPhase
-  -
-    source:      '/packages/wallpapers/PhotoPhase/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/wallpapers/PhotoPhase/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Vendor
-
-  # CM SDK
-  -
-    source:      '/vendor/cmsdk/cm/res/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CMSettingsProvider
-  -
-    source:      '/vendor/cmsdk/packages/CMSettingsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # OpenWeatherMapProvider
-  -
-    source:      '/vendor/cmsdk/samples/weatherproviderservice/OpenWeatherMapProvider/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Device specific
-
-  # fmapp2
-  -
-    source:      '/hardware/qcom/fm/fmapp2/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/hardware/qcom/fm/fmapp2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FMRecord
-  -
-    source:      '/hardware/qcom/fm/FMRecord/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SamsungServiceMode
-  -
-    source:      '/packages/apps/SamsungServiceMode/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # samsung qcom-common doze
-  -
-    source:      '/device/samsung/qcom-common/doze/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # samsung AdvancedDisplay
-  -
-    source:      '/hardware/samsung/AdvancedDisplay/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/hardware/samsung/AdvancedDisplay/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
+"files": [
+    {
+        "source":      "/frameworks/base/core/res/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/core/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/Keyguard/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/Keyguard/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/cm_arrays.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/AudioFX/res/values/cm_strings.xml",
+        "translation": "/packages/apps/AudioFX/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/BluetoothExt/res/values/strings.xml",
+        "translation": "/packages/apps/BluetoothExt/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/BluetoothExt/res/values/strings_dun.xml",
+        "translation": "/packages/apps/BluetoothExt/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/BluetoothExt/res/values/strings_ftp.xml",
+        "translation": "/packages/apps/BluetoothExt/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/BluetoothExt/res/values/strings_map.xml",
+        "translation": "/packages/apps/BluetoothExt/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/BluetoothExt/res/values/strings_sap.xml",
+        "translation": "/packages/apps/BluetoothExt/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Browser/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Browser/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calculator/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Calculator/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calendar/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Calendar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calendar/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Calendar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Camera2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CellBroadcastReceiver/res/values/cm_strings.xml",
+        "translation": "/packages/apps/CellBroadcastReceiver/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CMBugReport/res/values/strings.xml",
+        "translation": "/packages/apps/CMBugReport/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CMFileManager/res/values/plurals.xml",
+        "translation": "/packages/apps/CMFileManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CMFileManager/res/values/strings.xml",
+        "translation": "/packages/apps/CMFileManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CMUpdater/res/values/plurals.xml",
+        "translation": "/packages/apps/CMUpdater/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CMUpdater/res/values/strings.xml",
+        "translation": "/packages/apps/CMUpdater/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CMWallpapers/res/values/strings.xml",
+        "translation": "/packages/apps/CMWallpapers/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ContactsCommon/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/ContactsCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ContactsCommon/res/values/cm_strings.xml",
+        "translation": "/packages/apps/ContactsCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/cm_strings.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/res/values/cm_arrays.xml",
+        "translation": "/packages/apps/Dialer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Dialer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Eleven/res/values/plurals.xml",
+        "translation": "/packages/apps/Eleven/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Eleven/res/values/strings.xml",
+        "translation": "/packages/apps/Eleven/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Email/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Email/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/codeaurora_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gello/res/raw/incognito_mode_start_page.html",
+        "translation": "/packages/apps/Gello/res/raw-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gello/res/values/strings.xml",
+        "translation": "/packages/apps/Gello/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/InCallUI/res/values/cm_strings.xml",
+        "translation": "/packages/apps/InCallUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/InCallUI/res/values/qtistrings.xml",
+        "translation": "/packages/apps/InCallUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/LockClock/res/values/strings.xml",
+        "translation": "/packages/apps/LockClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PhoneCommon/res/values/cm_strings.xml",
+        "translation": "/packages/apps/PhoneCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Profiles/res/values/strings.xml",
+        "translation": "/packages/apps/Profiles/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Screencast/res/values/strings.xml",
+        "translation": "/packages/apps/Screencast/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SetupWizard/res/values/strings.xml",
+        "translation": "/packages/apps/SetupWizard/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/qcomstrings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/strings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SoundRecorder/res/values/cm_strings.xml",
+        "translation": "/packages/apps/SoundRecorder/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Stk/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Stk/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Terminal/res/values/arrays.xml",
+        "translation": "/packages/apps/Terminal/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Terminal/res/values/strings.xml",
+        "translation": "/packages/apps/Terminal/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ThemeChooser/res/values/strings.xml",
+        "translation": "/packages/apps/ThemeChooser/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/cm_arrays.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/cm_strings.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/UnifiedEmail/res/values/cm_strings.xml",
+        "translation": "/packages/apps/UnifiedEmail/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/cm_strings.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DataUsageProvider/res/values/strings.xml",
+        "translation": "/packages/providers/DataUsageProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/cm_plurals.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/cm_strings.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/ThemesProvider/res/values/strings.xml",
+        "translation": "/packages/providers/ThemesProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/WeatherProvider/res/values/strings.xml",
+        "translation": "/packages/providers/WeatherProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/PhotoTable/res/values/cm_strings.xml",
+        "translation": "/packages/screensavers/PhotoTable/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/CMAudioService/res/values/strings.xml",
+        "translation": "/packages/services/CMAudioService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/LiveLockScreenService/res/values/strings.xml",
+        "translation": "/packages/services/LiveLockScreenService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Mms/res/values/cm_strings.xml",
+        "translation": "/packages/services/Mms/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telecomm/res/values/cm_strings.xml",
+        "translation": "/packages/services/Telecomm/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/res/values/cm_strings.xml",
+        "translation": "/packages/services/Telephony/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/res/values/qtistrings.xml",
+        "translation": "/packages/services/Telephony/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/ThemeManagerService/res/values/strings.xml",
+        "translation": "/packages/services/ThemeManagerService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/WeatherService/res/values/strings.xml",
+        "translation": "/packages/services/WeatherService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/Galaxy4/res/values/strings.xml",
+        "translation": "/packages/wallpapers/Galaxy4/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/PhaseBeam/res/values/cm_strings.xml",
+        "translation": "/packages/wallpapers/PhaseBeam/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/PhotoPhase/res/values/plurals.xml",
+        "translation": "/packages/wallpapers/PhotoPhase/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/PhotoPhase/res/values/strings.xml",
+        "translation": "/packages/wallpapers/PhotoPhase/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/vendor/cmsdk/cm/res/res/values/strings.xml",
+        "translation": "/vendor/cmsdk/cm/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/vendor/cmsdk/packages/CMSettingsProvider/res/values/strings.xml",
+        "translation": "/vendor/cmsdk/packages/CMSettingsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/vendor/cmsdk/samples/weatherproviderservice/OpenWeatherMapProvider/app/src/main/res/values/strings.xml",
+        "translation": "/vendor/cmsdk/samples/weatherproviderservice/OpenWeatherMapProvider/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/qcom/fm/fmapp2/res/values/arrays.xml",
+        "translation": "/hardware/qcom/fm/fmapp2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/qcom/fm/fmapp2/res/values/strings.xml",
+        "translation": "/hardware/qcom/fm/fmapp2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/qcom/fm/FMRecord/res/values/strings.xml",
+        "translation": "/hardware/qcom/fm/FMRecord/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SamsungServiceMode/res/values/strings.xml",
+        "translation": "/packages/apps/SamsungServiceMode/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/samsung/qcom-common/doze/res/values/strings.xml",
+        "translation": "/device/samsung/qcom-common/doze/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/samsung/AdvancedDisplay/res/values/arrays.xml",
+        "translation": "/hardware/samsung/AdvancedDisplay/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/samsung/AdvancedDisplay/res/values/strings.xml",
+        "translation": "/hardware/samsung/AdvancedDisplay/res/values-%android_code%/%original_file_name%"
+    }
+]
diff --git a/config/cm-13.0_aosp.yaml b/config/cm-13.0_aosp.yaml
index afd8fc4..28214d1 100644
--- a/config/cm-13.0_aosp.yaml
+++ b/config/cm-13.0_aosp.yaml
@@ -4,7 +4,7 @@
 # additional languages not supported by AOSP
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2018 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,523 +18,358 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-api_key_env: LINEAGE_AOSP_CROWDIN_API_KEY
-base_path_env: LINEAGE_CROWDIN_BASE_PATH_CM_13_0
-project_identifier: lineageos-aosp
-preserve_hierarchy: true
+"api_token_env": LINEAGE_CROWDIN_API_TOKEN
+"base_path_env": LINEAGE_CROWDIN_BASE_PATH_CM_13_0
+"project_id": 238011
+"preserve_hierarchy": true
 
-files:
-# Frameworks
-
-  # framework-res
-  -
-    source:      '/frameworks/base/core/res/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: &anchor
-      android_code:
-        as: as-rIN
-        ast: ast-rES
-        be: be
-        cy: cy
-        en-PT: en-rPT
-        es-MX: es-rMX
-        eo: eo
-        fy-NL: fy-rNL
-        kab: kab-rDZ
-        ku: ku
-        lb: lb
-        or: or-rIN
-        sc: sc-rIT
-        ug: ug
-
-  # BackupRestoreConfirmation
-  -
-    source:      '/frameworks/base/packages/BackupRestoreConfirmation/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CaptivePortalLogin
-  -
-    source:      '/frameworks/base/packages/CaptivePortalLogin/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DefaultContainerService
-  -
-    source:      '/frameworks/base/packages/DefaultContainerService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DocumentsUI
-  -
-    source:      '/frameworks/base/packages/DocumentsUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ExternalStorageProvider
-  -
-    source:      '/frameworks/base/packages/ExternalStorageProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FusedLocation
-  -
-    source:      '/frameworks/base/packages/FusedLocation/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # InputDevices
-  -
-    source:      '/frameworks/base/packages/InputDevices/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Keyguard
-  -
-    source:      '/frameworks/base/packages/Keyguard/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PrintSpooler
-  -
-    source:      '/frameworks/base/packages/PrintSpooler/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsLib
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsProvider
-  -
-    source:      '/frameworks/base/packages/SettingsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Shell
-  -
-    source:      '/frameworks/base/packages/Shell/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # StatementService
-  -
-    source:      '/frameworks/base/packages/StatementService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SystemUI
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # VpnDialogs
-  -
-    source:      '/frameworks/base/packages/VpnDialogs/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperCropper
-  -
-    source:      '/frameworks/base/packages/WallpaperCropper/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Packages
-
-  # AudioFX
-  -
-    source:      '/packages/apps/AudioFX/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # BasicSmsReceiver
-  -
-    source:      '/packages/apps/BasicSmsReceiver/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Bluetooth
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings_pbap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings_sap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Browser
-  -
-    source:      '/packages/apps/Browser/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Calendar
-  -
-    source:      '/packages/apps/Calendar/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Calendar/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Camera2
-  -
-    source:      '/packages/apps/Camera2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Camera2/res_p/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CellBroadcastReceiver
-  -
-    source:      '/packages/apps/CellBroadcastReceiver/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CertInstaller
-  -
-    source:      '/packages/apps/CertInstaller/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Contacts
-  -
-    source:      '/packages/apps/Contacts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ContactsCommon
-  -
-    source:      '/packages/apps/ContactsCommon/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DeskClock
-  -
-    source:      '/packages/apps/DeskClock/res/values/array.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/DeskClock/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Dialer
-  -
-    source:      '/packages/apps/Dialer/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Email
-  -
-    source:      '/packages/apps/Email/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ExactCalculator
-  -
-    source:      '/packages/apps/ExactCalculator/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Exchange
-  -
-    source:      '/packages/apps/Exchange/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FMRadio
-  -
-    source:      '/packages/apps/FMRadio/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gallery2
-  -
-    source:      '/packages/apps/Gallery2/res/values/filtershow_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gallery2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # HTMLViewer
-  -
-    source:      '/packages/apps/HTMLViewer/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # InCallUI
-  -
-    source:      '/packages/apps/InCallUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # KeyChain
-  -
-    source:      '/packages/apps/KeyChain/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ManagedProvisioning
-  -
-    source:      '/packages/apps/ManagedProvisioning/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Messaging
-  -
-    source:      '/packages/apps/Messaging/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Messaging/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Nfc
-  -
-    source:      '/packages/apps/Nfc/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PackageInstaller
-  -
-    source:      '/packages/apps/PackageInstaller/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhoneCommon
-  -
-    source:      '/packages/apps/PhoneCommon/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Settings
-  -
-    source:      '/packages/apps/Settings/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Settings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SoundRecorder
-  -
-    source:      '/packages/apps/SoundRecorder/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Stk
-  -
-    source:      '/packages/apps/Stk/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Tag
-  -
-    source:      '/packages/apps/Tag/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Trebuchet
-  -
-    source:      '/packages/apps/Trebuchet/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TvSettings
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UnifiedEmail
-  -
-    source:      '/packages/apps/UnifiedEmail/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperPicker
-  -
-    source:      '/packages/apps/WallpaperPicker/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Input methods
-
-  # LatinIME
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-action-keys.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-appname.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-config-important-notice.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-emoji-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-letter-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-talkback-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Providers
-
-  # BookmarkProvider
-  -
-    source:      '/packages/providers/BookmarkProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CalendarProvider
-  -
-    source:      '/packages/providers/CalendarProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CallLogProvider
-  -
-    source:      '/packages/providers/CallLogProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ContactsProvider
-  -
-    source:      '/packages/providers/ContactsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DownloadProvider
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/providers/DownloadProvider/ui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # MediaProvider
-  -
-    source:      '/packages/providers/MediaProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TelephonyProvider
-  -
-    source:      '/packages/providers/TelephonyProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UserDictionaryProvider
-  -
-    source:      '/packages/providers/UserDictionaryProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Screensavers
-
-  # Basic
-  -
-    source:      '/packages/screensavers/Basic/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhotoTable
-  -
-    source:      '/packages/screensavers/PhotoTable/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Services
-
-  # Telecomm
-  -
-    source:      '/packages/services/Telecomm/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telephony
-  -
-    source:      '/packages/services/Telephony/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/services/Telephony/sip/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Wallpapers
-
-  # Basic
-  -
-    source:      '/packages/wallpapers/Basic/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # HoloSpiral
-  -
-    source:      '/packages/wallpapers/HoloSpiral/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LivePicker
-  -
-    source:      '/packages/wallpapers/LivePicker/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # MagicSmoke
-  -
-    source:      '/packages/wallpapers/MagicSmoke/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # NoiseField
-  -
-    source:      '/packages/wallpapers/NoiseField/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhaseBeam
-  -
-    source:      '/packages/wallpapers/PhaseBeam/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
+"files": [
+    {
+        "source":      "/frameworks/base/core/res/res/values/strings.xml",
+        "translation": "/frameworks/base/core/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/BackupRestoreConfirmation/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/BackupRestoreConfirmation/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/CaptivePortalLogin/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/CaptivePortalLogin/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/DefaultContainerService/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/DefaultContainerService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/DocumentsUI/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/DocumentsUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/ExternalStorageProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/ExternalStorageProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/FusedLocation/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/FusedLocation/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/InputDevices/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/InputDevices/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/Keyguard/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/Keyguard/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/PrintSpooler/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/PrintSpooler/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/arrays.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SettingsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/Shell/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/Shell/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/StatementService/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/StatementService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/VpnDialogs/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/VpnDialogs/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/WallpaperCropper/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/WallpaperCropper/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/AudioFX/res/values/strings.xml",
+        "translation": "/packages/apps/AudioFX/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/BasicSmsReceiver/res/values/strings.xml",
+        "translation": "/packages/apps/BasicSmsReceiver/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings_pbap.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings_sap.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Browser/res/values/strings.xml",
+        "translation": "/packages/apps/Browser/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calendar/res/values/arrays.xml",
+        "translation": "/packages/apps/Calendar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calendar/res/values/strings.xml",
+        "translation": "/packages/apps/Calendar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res/values/strings.xml",
+        "translation": "/packages/apps/Camera2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res_p/values/strings.xml",
+        "translation": "/packages/apps/Camera2/res_p/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CellBroadcastReceiver/res/values/strings.xml",
+        "translation": "/packages/apps/CellBroadcastReceiver/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CertInstaller/res/values/strings.xml",
+        "translation": "/packages/apps/CertInstaller/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/strings.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ContactsCommon/res/values/strings.xml",
+        "translation": "/packages/apps/ContactsCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/array.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/strings.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Email/res/values/strings.xml",
+        "translation": "/packages/apps/Email/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ExactCalculator/res/values/strings.xml",
+        "translation": "/packages/apps/ExactCalculator/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Exchange/res/values/strings.xml",
+        "translation": "/packages/apps/Exchange/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FMRadio/res/values/strings.xml",
+        "translation": "/packages/apps/FMRadio/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/filtershow_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/HTMLViewer/res/values/strings.xml",
+        "translation": "/packages/apps/HTMLViewer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/InCallUI/res/values/strings.xml",
+        "translation": "/packages/apps/InCallUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/KeyChain/res/values/strings.xml",
+        "translation": "/packages/apps/KeyChain/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ManagedProvisioning/res/values/strings.xml",
+        "translation": "/packages/apps/ManagedProvisioning/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/arrays.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/strings.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Nfc/res/values/strings.xml",
+        "translation": "/packages/apps/Nfc/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PackageInstaller/res/values/strings.xml",
+        "translation": "/packages/apps/PackageInstaller/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PhoneCommon/res/values/strings.xml",
+        "translation": "/packages/apps/PhoneCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/arrays.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/strings.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SoundRecorder/res/values/strings.xml",
+        "translation": "/packages/apps/SoundRecorder/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Stk/res/values/strings.xml",
+        "translation": "/packages/apps/Stk/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Tag/res/values/strings.xml",
+        "translation": "/packages/apps/Tag/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/strings.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/arrays.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/strings.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/UnifiedEmail/res/values/strings.xml",
+        "translation": "/packages/apps/UnifiedEmail/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/WallpaperPicker/res/values/strings.xml",
+        "translation": "/packages/apps/WallpaperPicker/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-action-keys.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-appname.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-config-important-notice.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-emoji-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-letter-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-talkback-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/BookmarkProvider/res/values/strings.xml",
+        "translation": "/packages/providers/BookmarkProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/CalendarProvider/res/values/strings.xml",
+        "translation": "/packages/providers/CalendarProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/CallLogProvider/res/values/strings.xml",
+        "translation": "/packages/providers/CallLogProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/ContactsProvider/res/values/strings.xml",
+        "translation": "/packages/providers/ContactsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/strings.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/ui/res/values/strings.xml",
+        "translation": "/packages/providers/DownloadProvider/ui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/MediaProvider/res/values/strings.xml",
+        "translation": "/packages/providers/MediaProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/TelephonyProvider/res/values/strings.xml",
+        "translation": "/packages/providers/TelephonyProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/UserDictionaryProvider/res/values/strings.xml",
+        "translation": "/packages/providers/UserDictionaryProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/Basic/res/values/strings.xml",
+        "translation": "/packages/screensavers/Basic/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/PhotoTable/res/values/strings.xml",
+        "translation": "/packages/screensavers/PhotoTable/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telecomm/res/values/strings.xml",
+        "translation": "/packages/services/Telecomm/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/res/values/strings.xml",
+        "translation": "/packages/services/Telephony/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/sip/res/values/strings.xml",
+        "translation": "/packages/services/Telephony/sip/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/Basic/res/values/strings.xml",
+        "translation": "/packages/wallpapers/Basic/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/HoloSpiral/res/values/strings.xml",
+        "translation": "/packages/wallpapers/HoloSpiral/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/LivePicker/res/values/strings.xml",
+        "translation": "/packages/wallpapers/LivePicker/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/MagicSmoke/res/values/strings.xml",
+        "translation": "/packages/wallpapers/MagicSmoke/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/NoiseField/res/values/strings.xml",
+        "translation": "/packages/wallpapers/NoiseField/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/PhaseBeam/res/values/strings.xml",
+        "translation": "/packages/wallpapers/PhaseBeam/res/values-%android_code%/%original_file_name%"
+    }
+]
diff --git a/config/cm-14.1.yaml b/config/cm-14.1.yaml
index 6edade8..8aab13b 100644
--- a/config/cm-14.1.yaml
+++ b/config/cm-14.1.yaml
@@ -3,7 +3,7 @@
 # Crowdin configuration file for LineageOS
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2018 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,482 +17,278 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-api_key_env: LINEAGE_CROWDIN_API_KEY
-base_path_env: LINEAGE_CROWDIN_BASE_PATH_CM_14_1
-project_identifier: lineageos
-preserve_hierarchy: true
+"api_token_env": LINEAGE_CROWDIN_API_TOKEN
+"base_path_env": LINEAGE_CROWDIN_BASE_PATH_CM_14_1
+"project_id": 237414
+"preserve_hierarchy": true
 
-files:
-# Frameworks
-
-  # framework-res
-  -
-    source:      '/frameworks/base/core/res/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: &anchor
-      android_code:
-        af: af
-        am: am
-        ar: ar
-        as: as-rIN
-        ast: ast-rES
-        az: az-rAZ
-        be: be-rBY
-        bg: bg
-        bn: bn-rBD
-        bs: bs-rBA
-        ca: ca
-        cs: cs
-        cy: cy
-        da: da
-        de: de
-        el: el
-        en-AU: en-rAU
-        en-GB: en-rGB
-        en-IN: en-rIN
-        en-PT: en-rPT
-        eo: eo
-        es-ES: es
-        es-MX: es-rMX
-        es-US: es-rUS
-        et: et-rEE
-        eu: eu-rES
-        fa: fa
-        fi: fi
-        fr: fr
-        fr-CA: fr-rCA
-        fy-NL: fy-rNL
-        gl: gl-rES
-        gu-IN: gu-rIN
-        he: iw
-        hi: hi
-        hr: hr
-        hu: hu
-        hy-AM: hy-rAM
-        id: in
-        is: is-rIS
-        it: it
-        ja: ja
-        ka: ka-rGE
-        kab: kab-rDZ
-        kk: kk-rKZ
-        km: km-rKH
-        kn: kn-rIN
-        ko: ko
-        ku: ku
-        ky: ky-rKG
-        lb: lb
-        lo: lo-rLA
-        lt: lt
-        lv: lv
-        mk: mk-rMK
-        ml-IN: ml-rIN
-        mn: mn-rMN
-        mr: mr-rIN
-        ms: ms-rMY
-        my: my-rMM
-        nb: nb
-        ne-NP: ne-rNP
-        nl: nl
-        or: or-rIN
-        pa-IN: pa-rIN
-        pl: pl
-        pt-PT: pt-rPT
-        pt-BR: pt-rBR
-        rm-CH: rm
-        ro: ro
-        ru: ru
-        sc: sc-rIT
-        si-LK: si-rLK
-        sk: sk
-        sl: sl
-        sq: sq-rAL
-        sr: sr
-        sv-SE: sv
-        sw: sw
-        ta: ta-rIN
-        te: te-rIN
-        th: th
-        tl: tl
-        tr: tr
-        ug: ug
-        uk: uk
-        ur-PK: ur-rPK
-        uz: uz-rUZ
-        vi: vi
-        zh-CN: zh-rCN
-        zh-HK: zh-rHK
-        zh-TW: zh-rTW
-        zu: zu
-
-  # SettingsLib
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SystemUI
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Packages
-
-  # AudioFX
-  -
-    source:      '/packages/apps/AudioFX/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Bluetooth
-  -
-    source:      '/packages/apps/Bluetooth/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Calendar
-  -
-    source:      '/packages/apps/Calendar/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Calendar/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Camera2
-  -
-    source:      '/packages/apps/Camera2/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CellBroadcastReceiver
-  -
-    source:      '/packages/apps/CellBroadcastReceiver/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CMParts
-  -
-    source:      '/packages/apps/CMParts/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/CMParts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Contacts
-  -
-    source:      '/packages/apps/Contacts/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ContactsCommon
-  -
-    source:      '/packages/apps/ContactsCommon/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DeskClock
-  -
-    source:      '/packages/apps/DeskClock/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Dialer
-  -
-    source:      '/packages/apps/Dialer/res/values/cm_arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/InCallUI/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/InCallUI/res/values/qtistrings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Eleven
-  -
-    source:      '/packages/apps/Eleven/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Eleven/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Email
-  -
-    source:      '/packages/apps/Email/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FMRadio
-  -
-    source:      '/packages/apps/FMRadio/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gallery2
-  -
-    source:      '/packages/apps/Gallery2/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gallery2/res/values/codeaurora_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Jelly
-  -
-    source:      '/packages/apps/Jelly/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LockClock
-  -
-    source:      '/packages/apps/LockClock/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Messaging
-  -
-    source:      '/packages/apps/Messaging/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhoneCommon
-  -
-    source:      '/packages/apps/PhoneCommon/res/values/qtistrings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Profiles
-  -
-    source:      '/packages/apps/Profiles/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Recorder
-  -
-    source:      '/packages/apps/Recorder/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Settings
-  -
-    source:      '/packages/apps/Settings/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Settings/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SetupWizard
-  -
-    source:      '/packages/apps/SetupWizard/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Snap
-  -
-    source:      '/packages/apps/Snap/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/res/values/qcomstrings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/quickReader/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Terminal
-  -
-    source:      '/packages/apps/Terminal/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Terminal/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Trebuchet
-  -
-    source:      '/packages/apps/Trebuchet/res/values/cm_arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Trebuchet/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UnifiedEmail
-  -
-    source:      '/packages/apps/UnifiedEmail/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Updater
-  -
-    source:      '/packages/apps/Updater/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperPicker
-  -
-    source:      '/packages/apps/WallpaperPicker/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Input methods
-
-  # LatinIME
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Providers
-
-  # DataUsageProvider
-  -
-    source:      '/packages/providers/DataUsageProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DownloadProvider
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WeatherProvider
-  -
-    source:      '/packages/providers/WeatherProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Services
-
-  # CMAudioService
-  -
-    source:      '/packages/services/CMAudioService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telephony
-  -
-    source:      '/packages/services/Telephony/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/services/Telephony/res/values/qtistrings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WeatherService
-  -
-    source:      '/packages/services/WeatherService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Vendor
-
-  # CM SDK
-  -
-    source:      '/vendor/cmsdk/cm/res/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CMSettingsProvider
-  -
-    source:      '/vendor/cmsdk/packages/CMSettingsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # OpenWeatherMapProvider
-  -
-    source:      '/vendor/cmsdk/samples/weatherproviderservice/OpenWeatherMapProvider/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Device specific
-
-  # fmapp2
-  -
-    source:      '/hardware/qcom/fm/fmapp2/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/hardware/qcom/fm/fmapp2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FMRecord
-  -
-    source:      '/hardware/qcom/fm/FMRecord/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SamsungServiceMode
-  -
-    source:      '/packages/apps/SamsungServiceMode/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # oppo common configpanel
-  -
-    source:      '/device/oppo/common/configpanel/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # sony huashan devicesettings
-  -
-    source:      '/device/sony/huashan/devicesettings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # samsung AdvancedDisplay
-  -
-    source:      '/hardware/samsung/AdvancedDisplay/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/hardware/samsung/AdvancedDisplay/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # resources devicesettings
-  -
-    source:      '/packages/resources/devicesettings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FlipFlap
-  -
-    source:      '/packages/apps/FlipFlap/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
+"files": [
+    {
+        "source":      "/frameworks/base/core/res/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/core/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/AudioFX/res/values/cm_strings.xml",
+        "translation": "/packages/apps/AudioFX/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calendar/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Calendar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calendar/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Calendar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Camera2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CellBroadcastReceiver/res/values/cm_strings.xml",
+        "translation": "/packages/apps/CellBroadcastReceiver/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CMParts/res/values/plurals.xml",
+        "translation": "/packages/apps/CMParts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CMParts/res/values/strings.xml",
+        "translation": "/packages/apps/CMParts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ContactsCommon/res/values/cm_strings.xml",
+        "translation": "/packages/apps/ContactsCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/cm_strings.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/res/values/cm_arrays.xml",
+        "translation": "/packages/apps/Dialer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Dialer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/InCallUI/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/InCallUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/InCallUI/res/values/qtistrings.xml",
+        "translation": "/packages/apps/Dialer/InCallUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Eleven/res/values/plurals.xml",
+        "translation": "/packages/apps/Eleven/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Eleven/res/values/strings.xml",
+        "translation": "/packages/apps/Eleven/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Email/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Email/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FMRadio/res/values/cm_strings.xml",
+        "translation": "/packages/apps/FMRadio/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/codeaurora_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Jelly/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Jelly/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/LockClock/res/values/strings.xml",
+        "translation": "/packages/apps/LockClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PhoneCommon/res/values/qtistrings.xml",
+        "translation": "/packages/apps/PhoneCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Profiles/res/values/strings.xml",
+        "translation": "/packages/apps/Profiles/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Recorder/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Recorder/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SetupWizard/res/values/strings.xml",
+        "translation": "/packages/apps/SetupWizard/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/qcomstrings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/strings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/quickReader/res/values/strings.xml",
+        "translation": "/packages/apps/Snap/quickReader/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Terminal/res/values/arrays.xml",
+        "translation": "/packages/apps/Terminal/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Terminal/res/values/strings.xml",
+        "translation": "/packages/apps/Terminal/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/cm_arrays.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/UnifiedEmail/res/values/cm_strings.xml",
+        "translation": "/packages/apps/UnifiedEmail/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Updater/res/values/strings.xml",
+        "translation": "/packages/apps/Updater/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/WallpaperPicker/res/values/cm_strings.xml",
+        "translation": "/packages/apps/WallpaperPicker/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/cm_strings.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DataUsageProvider/res/values/strings.xml",
+        "translation": "/packages/providers/DataUsageProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/cm_plurals.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/cm_strings.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/WeatherProvider/res/values/strings.xml",
+        "translation": "/packages/providers/WeatherProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/CMAudioService/res/values/strings.xml",
+        "translation": "/packages/services/CMAudioService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/res/values/cm_strings.xml",
+        "translation": "/packages/services/Telephony/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/res/values/qtistrings.xml",
+        "translation": "/packages/services/Telephony/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/WeatherService/res/values/strings.xml",
+        "translation": "/packages/services/WeatherService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/vendor/cmsdk/cm/res/res/values/strings.xml",
+        "translation": "/vendor/cmsdk/cm/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/vendor/cmsdk/packages/CMSettingsProvider/res/values/strings.xml",
+        "translation": "/vendor/cmsdk/packages/CMSettingsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/vendor/cmsdk/samples/weatherproviderservice/OpenWeatherMapProvider/app/src/main/res/values/strings.xml",
+        "translation": "/vendor/cmsdk/samples/weatherproviderservice/OpenWeatherMapProvider/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/qcom/fm/fmapp2/res/values/arrays.xml",
+        "translation": "/hardware/qcom/fm/fmapp2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/qcom/fm/fmapp2/res/values/strings.xml",
+        "translation": "/hardware/qcom/fm/fmapp2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/qcom/fm/FMRecord/res/values/strings.xml",
+        "translation": "/hardware/qcom/fm/FMRecord/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SamsungServiceMode/res/values/strings.xml",
+        "translation": "/packages/apps/SamsungServiceMode/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/oppo/common/configpanel/res/values/strings.xml",
+        "translation": "/device/oppo/common/configpanel/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/sony/huashan/devicesettings/res/values/strings.xml",
+        "translation": "/device/sony/huashan/devicesettings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/samsung/AdvancedDisplay/res/values/arrays.xml",
+        "translation": "/hardware/samsung/AdvancedDisplay/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/samsung/AdvancedDisplay/res/values/strings.xml",
+        "translation": "/hardware/samsung/AdvancedDisplay/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/resources/devicesettings/res/values/strings.xml",
+        "translation": "/packages/resources/devicesettings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FlipFlap/res/values/strings.xml",
+        "translation": "/packages/apps/FlipFlap/res/values-%android_code%/%original_file_name%"
+    }
+]
diff --git a/config/cm-14.1_aosp.yaml b/config/cm-14.1_aosp.yaml
index 71558e6..5a2c856 100644
--- a/config/cm-14.1_aosp.yaml
+++ b/config/cm-14.1_aosp.yaml
@@ -4,7 +4,7 @@
 # additional languages not supported by AOSP
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2018 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,512 +18,355 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-api_key_env: LINEAGE_AOSP_CROWDIN_API_KEY
-base_path_env: LINEAGE_CROWDIN_BASE_PATH_CM_14_1
-project_identifier: lineageos-aosp
-preserve_hierarchy: true
 
-files:
-# Frameworks
+"api_token_env": LINEAGE_CROWDIN_API_TOKEN
+"base_path_env": LINEAGE_CROWDIN_BASE_PATH_CM_14_1
+"project_id": 238011
+"preserve_hierarchy": true
 
-  # framework-res
-  -
-    source:      '/frameworks/base/core/res/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: &anchor
-      android_code:
-        as: as-rIN
-        ast: ast-rES
-        cy: cy
-        en-PT: en-rPT
-        es-MX: es-rMX
-        eo: eo
-        fy-NL: fy-rNL
-        kab: kab-rDZ
-        ku: ku
-        lb: lb
-        or: or-rIN
-        sc: sc-rIT
-        ug: ug
-
-  # BackupRestoreConfirmation
-  -
-    source:      '/frameworks/base/packages/BackupRestoreConfirmation/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CaptivePortalLogin
-  -
-    source:      '/frameworks/base/packages/CaptivePortalLogin/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DefaultContainerService
-  -
-    source:      '/frameworks/base/packages/DefaultContainerService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DocumentsUI
-  -
-    source:      '/frameworks/base/packages/DocumentsUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ExternalStorageProvider
-  -
-    source:      '/frameworks/base/packages/ExternalStorageProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FusedLocation
-  -
-    source:      '/frameworks/base/packages/FusedLocation/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # InputDevices
-  -
-    source:      '/frameworks/base/packages/InputDevices/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Keyguard
-  -
-    source:      '/frameworks/base/packages/Keyguard/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # MtpDocumentsProvider
-  -
-    source:      '/frameworks/base/packages/MtpDocumentsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PrintSpooler
-  -
-    source:      '/frameworks/base/packages/PrintSpooler/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsLib
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsProvider
-  -
-    source:      '/frameworks/base/packages/SettingsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Shell
-  -
-    source:      '/frameworks/base/packages/Shell/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # StatementService
-  -
-    source:      '/frameworks/base/packages/StatementService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SystemUI
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # VpnDialogs
-  -
-    source:      '/frameworks/base/packages/VpnDialogs/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperCropper
-  -
-    source:      '/frameworks/base/packages/WallpaperCropper/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Packages
-
-  # AudioFX
-  -
-    source:      '/packages/apps/AudioFX/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Bluetooth
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings_pbap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings_sap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Calendar
-  -
-    source:      '/packages/apps/Calendar/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Calendar/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Camera2
-  -
-    source:      '/packages/apps/Camera2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Camera2/res_p/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CellBroadcastReceiver
-  -
-    source:      '/packages/apps/CellBroadcastReceiver/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CertInstaller
-  -
-    source:      '/packages/apps/CertInstaller/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Contacts
-  -
-    source:      '/packages/apps/Contacts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ContactsCommon
-  -
-    source:      '/packages/apps/ContactsCommon/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DeskClock
-  -
-    source:      '/packages/apps/DeskClock/res/values/array.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/DeskClock/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Dialer
-  -
-    source:      '/packages/apps/Dialer/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/InCallUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Email
-  -
-    source:      '/packages/apps/Email/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # EmergencyInfo
-  -
-    source:      '/packages/apps/EmergencyInfo/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ExactCalculator
-  -
-    source:      '/packages/apps/ExactCalculator/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Exchange
-  -
-    source:      '/packages/apps/Exchange/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FMRadio
-  -
-    source:      '/packages/apps/FMRadio/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gallery2
-  -
-    source:      '/packages/apps/Gallery2/res/values/filtershow_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gallery2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # HTMLViewer
-  -
-    source:      '/packages/apps/HTMLViewer/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # KeyChain
-  -
-    source:      '/packages/apps/KeyChain/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ManagedProvisioning
-  -
-    source:      '/packages/apps/ManagedProvisioning/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Messaging
-  -
-    source:      '/packages/apps/Messaging/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Messaging/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Nfc
-  -
-    source:      '/packages/apps/Nfc/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PackageInstaller
-  -
-    source:      '/packages/apps/PackageInstaller/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhoneCommon
-  -
-    source:      '/packages/apps/PhoneCommon/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SafetyRegulatoryInfo
-  -
-    source:      '/packages/apps/SafetyRegulatoryInfo/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Settings
-  -
-    source:      '/packages/apps/Settings/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Settings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Stk
-  -
-    source:      '/packages/apps/Stk/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # StorageManager
-  -
-    source:      '/packages/apps/StorageManager/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/StorageManager/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Tag
-  -
-    source:      '/packages/apps/Tag/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Trebuchet
-  -
-    source:      '/packages/apps/Trebuchet/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TvSettings
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UnifiedEmail
-  -
-    source:      '/packages/apps/UnifiedEmail/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperPicker
-  -
-    source:      '/packages/apps/WallpaperPicker/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Input methods
-
-  # LatinIME
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-action-keys.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-appname.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-config-important-notice.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-emoji-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-letter-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-talkback-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Providers
-
-  # BlockedNumberProvider
-  -
-    source:      '/packages/providers/BlockedNumberProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # BookmarkProvider
-  -
-    source:      '/packages/providers/BookmarkProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CalendarProvider
-  -
-    source:      '/packages/providers/CalendarProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CallLogProvider
-  -
-    source:      '/packages/providers/CallLogProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ContactsProvider
-  -
-    source:      '/packages/providers/ContactsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DownloadProvider
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/providers/DownloadProvider/ui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # MediaProvider
-  -
-    source:      '/packages/providers/MediaProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TelephonyProvider
-  -
-    source:      '/packages/providers/TelephonyProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TvProvider
-  -
-    source:      '/packages/providers/TvProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UserDictionaryProvider
-  -
-    source:      '/packages/providers/UserDictionaryProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Screensavers
-
-  # Basic
-  -
-    source:      '/packages/screensavers/Basic/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhotoTable
-  -
-    source:      '/packages/screensavers/PhotoTable/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Services
-
-  # Telecomm
-  -
-    source:      '/packages/services/Telecomm/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telephony
-  -
-    source:      '/packages/services/Telephony/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/services/Telephony/sip/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Wallpapers
-
-  # LivePicker
-  -
-    source:      '/packages/wallpapers/LivePicker/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
+"files": [
+    {
+        "source":      "/frameworks/base/core/res/res/values/strings.xml",
+        "translation": "/frameworks/base/core/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/BackupRestoreConfirmation/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/BackupRestoreConfirmation/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/CaptivePortalLogin/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/CaptivePortalLogin/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/DefaultContainerService/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/DefaultContainerService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/DocumentsUI/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/DocumentsUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/ExternalStorageProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/ExternalStorageProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/FusedLocation/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/FusedLocation/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/InputDevices/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/InputDevices/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/Keyguard/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/Keyguard/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/MtpDocumentsProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/MtpDocumentsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/PrintSpooler/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/PrintSpooler/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/arrays.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SettingsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/Shell/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/Shell/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/StatementService/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/StatementService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/VpnDialogs/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/VpnDialogs/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/WallpaperCropper/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/WallpaperCropper/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/AudioFX/res/values/strings.xml",
+        "translation": "/packages/apps/AudioFX/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings_pbap.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings_sap.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calendar/res/values/arrays.xml",
+        "translation": "/packages/apps/Calendar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calendar/res/values/strings.xml",
+        "translation": "/packages/apps/Calendar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res/values/strings.xml",
+        "translation": "/packages/apps/Camera2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res_p/values/strings.xml",
+        "translation": "/packages/apps/Camera2/res_p/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CellBroadcastReceiver/res/values/strings.xml",
+        "translation": "/packages/apps/CellBroadcastReceiver/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CertInstaller/res/values/strings.xml",
+        "translation": "/packages/apps/CertInstaller/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/strings.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ContactsCommon/res/values/strings.xml",
+        "translation": "/packages/apps/ContactsCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/array.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/strings.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/InCallUI/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/InCallUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Email/res/values/strings.xml",
+        "translation": "/packages/apps/Email/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/EmergencyInfo/res/values/strings.xml",
+        "translation": "/packages/apps/EmergencyInfo/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ExactCalculator/res/values/strings.xml",
+        "translation": "/packages/apps/ExactCalculator/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Exchange/res/values/strings.xml",
+        "translation": "/packages/apps/Exchange/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FMRadio/res/values/strings.xml",
+        "translation": "/packages/apps/FMRadio/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/filtershow_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/HTMLViewer/res/values/strings.xml",
+        "translation": "/packages/apps/HTMLViewer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/KeyChain/res/values/strings.xml",
+        "translation": "/packages/apps/KeyChain/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ManagedProvisioning/res/values/strings.xml",
+        "translation": "/packages/apps/ManagedProvisioning/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/arrays.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/strings.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Nfc/res/values/strings.xml",
+        "translation": "/packages/apps/Nfc/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PackageInstaller/res/values/strings.xml",
+        "translation": "/packages/apps/PackageInstaller/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PhoneCommon/res/values/strings.xml",
+        "translation": "/packages/apps/PhoneCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SafetyRegulatoryInfo/res/values/strings.xml",
+        "translation": "/packages/apps/SafetyRegulatoryInfo/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/arrays.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/strings.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Stk/res/values/strings.xml",
+        "translation": "/packages/apps/Stk/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/StorageManager/res/values/arrays.xml",
+        "translation": "/packages/apps/StorageManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/StorageManager/res/values/strings.xml",
+        "translation": "/packages/apps/StorageManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Tag/res/values/strings.xml",
+        "translation": "/packages/apps/Tag/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/strings.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/arrays.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/strings.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/UnifiedEmail/res/values/strings.xml",
+        "translation": "/packages/apps/UnifiedEmail/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/WallpaperPicker/res/values/strings.xml",
+        "translation": "/packages/apps/WallpaperPicker/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-action-keys.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-appname.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-config-important-notice.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-emoji-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-letter-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-talkback-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/BlockedNumberProvider/res/values/strings.xml",
+        "translation": "/packages/providers/BlockedNumberProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/BookmarkProvider/res/values/strings.xml",
+        "translation": "/packages/providers/BookmarkProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/CalendarProvider/res/values/strings.xml",
+        "translation": "/packages/providers/CalendarProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/CallLogProvider/res/values/strings.xml",
+        "translation": "/packages/providers/CallLogProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/ContactsProvider/res/values/strings.xml",
+        "translation": "/packages/providers/ContactsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/strings.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/ui/res/values/strings.xml",
+        "translation": "/packages/providers/DownloadProvider/ui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/MediaProvider/res/values/strings.xml",
+        "translation": "/packages/providers/MediaProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/TelephonyProvider/res/values/strings.xml",
+        "translation": "/packages/providers/TelephonyProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/TvProvider/res/values/strings.xml",
+        "translation": "/packages/providers/TvProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/UserDictionaryProvider/res/values/strings.xml",
+        "translation": "/packages/providers/UserDictionaryProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/Basic/res/values/strings.xml",
+        "translation": "/packages/screensavers/Basic/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/PhotoTable/res/values/strings.xml",
+        "translation": "/packages/screensavers/PhotoTable/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telecomm/res/values/strings.xml",
+        "translation": "/packages/services/Telecomm/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/res/values/strings.xml",
+        "translation": "/packages/services/Telephony/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/sip/res/values/strings.xml",
+        "translation": "/packages/services/Telephony/sip/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/LivePicker/res/values/strings.xml",
+        "translation": "/packages/wallpapers/LivePicker/res/values-%android_code%/%original_file_name%"
+    }
+]
diff --git a/config/lineage-15.1.yaml b/config/lineage-15.1.yaml
index e10e26e..16167bf 100644
--- a/config/lineage-15.1.yaml
+++ b/config/lineage-15.1.yaml
@@ -3,7 +3,7 @@
 # Crowdin configuration file for LineageOS
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2018 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,557 +17,255 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-api_key_env: LINEAGE_CROWDIN_API_KEY
-base_path_env: LINEAGE_CROWDIN_BASE_PATH_LINEAGE_15_1
-project_identifier: lineageos
-preserve_hierarchy: true
 
-files:
-# Frameworks
+"api_token_env": LINEAGE_CROWDIN_API_TOKEN
+"base_path_env": LINEAGE_CROWDIN_BASE_PATH_LINEAGE_15_1
+"project_id": 237414
+"preserve_hierarchy": true
 
-  # framework-res
-  -
-    source:      '/frameworks/base/core/res/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: &anchor
-      android_code:
-        # Afrikaans
-        af: af
-        # Albanian
-        sq: sq
-        # Amharic
-        am: am
-        # Arabic
-        ar: ar
-        # Armenian
-        hy-AM: hy
-        # Arpitan - LineageOS
-        frp: frp
-        # Assamese - LineageOS
-        as: as-rIN
-        # Asturian - LineageOS
-        ast: ast-rES
-        # Azerbaijani
-        az: az
-        # Basque
-        eu: eu
-        # Belarusian
-        be: be
-        # Bengali
-        bn: bn
-        # Bosnian
-        bs: bs
-        # Breton - LineageOS
-        br-FR: br-rFR
-        # Bulgarian
-        bg: bg
-        # Burmese
-        my: my
-        # Catalan
-        ca: ca
-        # Chinese Simplified
-        zh-CN: zh-rCN
-        # Chinese Traditional
-        zh-TW: zh-rTW
-        # Chinese Traditional, Hong Kong
-        zh-HK: zh-rHK
-        # Croatian
-        hr: hr
-        # Czech
-        cs: cs
-        # Danish
-        da: da
-        # Dutch
-        nl: nl
-        # English, Australia
-        en-AU: en-rAU
-        # English, Canada
-        en-CA: en-rCA
-        # English, India
-        en-IN: en-rIN
-        # English, United Kingdom
-        en-GB: en-rGB
-        # Esperanto - LineageOS
-        eo: eo
-        # Estonian
-        et: et
-        # Filipino - LineageOS
-        fil: fil
-        # Finnish
-        fi: fi
-        # French
-        fr: fr
-        # French, Canada
-        fr-CA: fr-rCA
-        # Frisian - LineageOS
-        fy-NL: fy-rNL
-        # Galician
-        gl: gl
-        # Georgian
-        ka: ka
-        # German
-        de: de
-        # Greek
-        el: el
-        # Gujarati
-        gu-IN: gu
-        # Hebrew
-        he: iw
-        # Hindi
-        hi: hi
-        # Hungarian
-        hu: hu
-        # Icelandic
-        is: is
-        # Indonesian
-        id: in
-        # Irish - LineageOS
-        ga-IE: ga-rIE
-        # Italian
-        it: it
-        # Japanese
-        ja: ja
-        # Kabyle - LineageOS
-        kab: kab-rDZ
-        # Kannada
-        kn: kn
-        # Kashubian - LineageOS
-        csb: csb
-        # Kazakh
-        kk: kk
-        # Khmer
-        km: km
-        # Korean
-        ko: ko
-        # Kurdish - LineageOS
-        ku: ku
-        # Kyrgyz
-        ky: ky
-        # Lao
-        lo: lo
-        # Latvian
-        lv: lv
-        # Lithuanian
-        lt: lt
-        # Luxembourgish - LineageOS
-        lb: lb
-        # Macedonian (FYROM)
-        mk: mk
-        # Malay
-        ms: ms
-        # Malayalam
-        ml-IN: ml
-        # Marathi
-        mr: mr
-        # Mongolian
-        mn: mn
-        # Nepali
-        ne-NP: ne
-        # Norwegian Bokmal
-        nb: nb
-        # Occitan - LineageOS
-        oc: oc
-        # Oriya - LineageOS
-        or: or-rIN
-        # Persian
-        fa: fa
-        # Pirate English - LineageOS
-        en-PT: en-rPT
-        # Polish
-        pl: pl
-        # Portuguese
-        pt-PT: pt-rPT
-        # Portuguese, Brazilian
-        pt-BR: pt-rBR
-        # Punjabi
-        pa-IN: pa
-        # Romanian
-        ro: ro
-        # Romansh - LineageOS
-        rm-CH: rm
-        # Russian
-        ru: ru
-        # Sardinian - LineageOS
-        sc: sc-rIT
-        # Scottish Gaelic - LineageOS
-        gd: gd
-        # Serbian (Cyrillic)
-        sr: sr
-        # Serbian (Latin)
-        sr-CS: b+sr+Latn
-        # Sinhala
-        si-LK: si
-        # Slovak
-        sk: sk
-        # Slovenian
-        sl: sl
-        # Spanish
-        es-ES: es
-        # Spanish, Colombia - LineageOS
-        es-CO: es-rCO
-        # Spanish, Mexico - LineageOS
-        es-MX: es-rMX
-        # Spanish, United States
-        es-US: es-rUS
-        # Swahili
-        sw: sw
-        # Swedish
-        sv-SE: sv
-        # Tagalog
-        tl: tl
-        # Tamil
-        ta: ta
-        # Telugu
-        te: te
-        # Thai
-        th: th
-        # Turkish
-        tr: tr
-        # Ukrainian
-        uk: uk
-        # Urdu (Pakistan)
-        ur-PK: ur
-        # Uyghur - LineageOS
-        ug: ug
-        # Uzbek
-        uz: uz
-        # Venetian - LineageOS
-        vec: vec
-        # Vietnamese
-        vi: vi
-        # Welsh - LineageOS
-        cy: cy
-        # Zulu
-        zu: zu
-
-  # SettingsLib
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SystemUI
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Packages
-
-  # AudioFX
-  -
-    source:      '/packages/apps/AudioFX/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Camera2
-  -
-    source:      '/packages/apps/Camera2/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Contacts
-  -
-    source:      '/packages/apps/Contacts/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DeskClock
-  -
-    source:      '/packages/apps/DeskClock/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Dialer
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/app/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/lookup/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Eleven
-  -
-    source:      '/packages/apps/Eleven/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Eleven/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Email
-  -
-    source:      '/packages/apps/Email/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Exchange
-  -
-    source:      '/packages/apps/Exchange/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FMRadio
-  -
-    source:      '/packages/apps/FMRadio/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/FMRadio/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gallery2
-  -
-    source:      '/packages/apps/Gallery2/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gallery2/res/values/codeaurora_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Jelly
-  -
-    source:      '/packages/apps/Jelly/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LineageParts
-  -
-    source:      '/packages/apps/LineageParts/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/LineageParts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LockClock
-  -
-    source:      '/packages/apps/LockClock/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Messaging
-  -
-    source:      '/packages/apps/Messaging/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Profiles
-  -
-    source:      '/packages/apps/Profiles/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Recorder
-  -
-    source:      '/packages/apps/Recorder/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Settings
-  -
-    source:      '/packages/apps/Settings/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Settings/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SetupWizard
-  -
-    source:      '/packages/apps/SetupWizard/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Snap
-  -
-    source:      '/packages/apps/Snap/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/res/values/qcomstrings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/quickReader/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Terminal
-  -
-    source:      '/packages/apps/Terminal/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Terminal/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Trebuchet
-  -
-    source:      '/packages/apps/Trebuchet/res/values/lineage_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Updater
-  -
-    source:      '/packages/apps/Updater/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperPicker
-  -
-    source:      '/packages/apps/WallpaperPicker/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Input methods
-
-  # LatinIME
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Providers
-
-  # DownloadProvider
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WeatherProvider
-  -
-    source:      '/packages/providers/WeatherProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Services
-
-  # Mms
-  -
-    source:      '/packages/services/Mms/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telephony
-  -
-    source:      '/packages/services/Telephony/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Lineage SDK
-
-  # Lineage SDK
-  -
-    source:      '/lineage-sdk/lineage/res/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LineageSettingsProvider
-  -
-    source:      '/lineage-sdk/packages/LineageSettingsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # OpenWeatherMapProvider
-  -
-    source:      '/lineage-sdk/samples/weatherproviderservice/OpenWeatherMapProvider/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Device specific
-
-  # fmapp2
-  -
-    source:      '/hardware/qcom/fm/fmapp2/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/hardware/qcom/fm/fmapp2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FMRecord
-  -
-    source:      '/hardware/qcom/fm/FMRecord/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # oppo common configpanel
-  -
-    source:      '/device/oppo/common/configpanel/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # oppo r5 otgtoggle
-  -
-    source:      '/device/oppo/r5/otgtoggle/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # samsung AdvancedDisplay
-  -
-    source:      '/hardware/samsung/AdvancedDisplay/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/hardware/samsung/AdvancedDisplay/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # resources devicesettings
-  -
-    source:      '/packages/resources/devicesettings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FlipFlap
-  -
-    source:      '/packages/apps/FlipFlap/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
+"files": [
+    {
+        "source":      "/frameworks/base/core/res/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/core/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/AudioFX/res/values/cm_strings.xml",
+        "translation": "/packages/apps/AudioFX/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Camera2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/cm_strings.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/app/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/app/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_arrays.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/lookup/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/lookup/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Eleven/res/values/plurals.xml",
+        "translation": "/packages/apps/Eleven/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Eleven/res/values/strings.xml",
+        "translation": "/packages/apps/Eleven/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Email/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Email/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Exchange/res/values/strings.xml",
+        "translation": "/packages/apps/Exchange/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FMRadio/res/values/cm_strings.xml",
+        "translation": "/packages/apps/FMRadio/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FMRadio/res/values/strings.xml",
+        "translation": "/packages/apps/FMRadio/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/codeaurora_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Jelly/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Jelly/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/LineageParts/res/values/plurals.xml",
+        "translation": "/packages/apps/LineageParts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/LineageParts/res/values/strings.xml",
+        "translation": "/packages/apps/LineageParts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/LockClock/res/values/strings.xml",
+        "translation": "/packages/apps/LockClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Profiles/res/values/strings.xml",
+        "translation": "/packages/apps/Profiles/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Recorder/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Recorder/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SetupWizard/res/values/strings.xml",
+        "translation": "/packages/apps/SetupWizard/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/qcomstrings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/strings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/quickReader/res/values/strings.xml",
+        "translation": "/packages/apps/Snap/quickReader/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Terminal/res/values/arrays.xml",
+        "translation": "/packages/apps/Terminal/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Terminal/res/values/strings.xml",
+        "translation": "/packages/apps/Terminal/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/lineage_strings.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Updater/res/values/strings.xml",
+        "translation": "/packages/apps/Updater/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/WallpaperPicker/res/values/cm_strings.xml",
+        "translation": "/packages/apps/WallpaperPicker/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/cm_strings.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/cm_plurals.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/cm_strings.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/WeatherProvider/res/values/strings.xml",
+        "translation": "/packages/providers/WeatherProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Mms/res/values/cm_strings.xml",
+        "translation": "/packages/services/Mms/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/res/values/cm_strings.xml",
+        "translation": "/packages/services/Telephony/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/lineage-sdk/lineage/res/res/values/strings.xml",
+        "translation": "/lineage-sdk/lineage/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/lineage-sdk/packages/LineageSettingsProvider/res/values/strings.xml",
+        "translation": "/lineage-sdk/packages/LineageSettingsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/lineage-sdk/samples/weatherproviderservice/OpenWeatherMapProvider/app/src/main/res/values/strings.xml",
+        "translation": "/lineage-sdk/samples/weatherproviderservice/OpenWeatherMapProvider/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/qcom/fm/fmapp2/res/values/arrays.xml",
+        "translation": "/hardware/qcom/fm/fmapp2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/qcom/fm/fmapp2/res/values/strings.xml",
+        "translation": "/hardware/qcom/fm/fmapp2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/qcom/fm/FMRecord/res/values/strings.xml",
+        "translation": "/hardware/qcom/fm/FMRecord/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/oppo/common/configpanel/res/values/strings.xml",
+        "translation": "/device/oppo/common/configpanel/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/oppo/r5/otgtoggle/res/values/strings.xml",
+        "translation": "/device/oppo/r5/otgtoggle/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/samsung/AdvancedDisplay/res/values/arrays.xml",
+        "translation": "/hardware/samsung/AdvancedDisplay/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/samsung/AdvancedDisplay/res/values/strings.xml",
+        "translation": "/hardware/samsung/AdvancedDisplay/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/resources/devicesettings/res/values/strings.xml",
+        "translation": "/packages/resources/devicesettings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FlipFlap/res/values/strings.xml",
+        "translation": "/packages/apps/FlipFlap/res/values-%android_code%/%original_file_name%"
+    }
+]
diff --git a/config/lineage-15.1_aosp.yaml b/config/lineage-15.1_aosp.yaml
index 455a1c1..e1b899e 100644
--- a/config/lineage-15.1_aosp.yaml
+++ b/config/lineage-15.1_aosp.yaml
@@ -4,7 +4,7 @@
 # additional languages not supported by AOSP
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2018 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,679 +18,494 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-api_key_env: LINEAGE_AOSP_CROWDIN_API_KEY
-base_path_env: LINEAGE_CROWDIN_BASE_PATH_LINEAGE_15_1
-project_identifier: lineageos-aosp
-preserve_hierarchy: true
+"api_token_env": LINEAGE_CROWDIN_API_TOKEN
+"base_path_env": LINEAGE_CROWDIN_BASE_PATH_LINEAGE_15_1
+"project_id": 238011
+"preserve_hierarchy": true
 
-files:
-# Frameworks
-
-  # framework-res
-  -
-    source:      '/frameworks/base/core/res/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: &anchor
-      android_code:
-        # Arpitan - LineageOS
-        frp: frp
-        # Assamese - LineageOS
-        as: as-rIN
-        # Asturian - LineageOS
-        ast: ast-rES
-        # Breton - LineageOS
-        br-FR: br-rFR
-        # Esperanto - LineageOS
-        eo: eo
-        # Filipino - LineageOS
-        fil: fil
-        # Frisian - LineageOS
-        fy-NL: fy-rNL
-        # Irish - LineageOS
-        ga-IE: ga-rIE
-        # Kabyle - LineageOS
-        kab: kab-rDZ
-        # Kashubian - LineageOS
-        csb: csb
-        # Kurdish - LineageOS
-        ku: ku
-        # Luxembourgish - LineageOS
-        lb: lb
-        # Occitan - LineageOS
-        oc: oc
-        # Oriya - LineageOS
-        or: or-rIN
-        # Pirate English - LineageOS
-        en-PT: en-rPT
-        # Romansh - LineageOS
-        rm-CH: rm
-        # Sardinian - LineageOS
-        sc: sc-rIT
-        # Scottish Gaelic - LineageOS
-        gd: gd
-        # Spanish, Colombia - LineageOS
-        es-CO: es-rCO
-        # Spanish, Mexico - LineageOS
-        es-MX: es-rMX
-        # Uyghur - LineageOS
-        ug: ug
-        # Venetian - LineageOS
-        vec: vec
-        # Welsh - LineageOS
-        cy: cy
-
-  # BackupRestoreConfirmation
-  -
-    source:      '/frameworks/base/packages/BackupRestoreConfirmation/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CaptivePortalLogin
-  -
-    source:      '/frameworks/base/packages/CaptivePortalLogin/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DefaultContainerService
-  -
-    source:      '/frameworks/base/packages/DefaultContainerService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ExternalStorageProvider
-  -
-    source:      '/frameworks/base/packages/ExternalStorageProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FusedLocation
-  -
-    source:      '/frameworks/base/packages/FusedLocation/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # InputDevices
-  -
-    source:      '/frameworks/base/packages/InputDevices/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # MtpDocumentsProvider
-  -
-    source:      '/frameworks/base/packages/MtpDocumentsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PrintSpooler
-  -
-    source:      '/frameworks/base/packages/PrintSpooler/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsLib
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsProvider
-  -
-    source:      '/frameworks/base/packages/SettingsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Shell
-  -
-    source:      '/frameworks/base/packages/Shell/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # StatementService
-  -
-    source:      '/frameworks/base/packages/StatementService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SystemUI
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/frameworks/base/packages/SystemUI/res-keyguard/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # VpnDialogs
-  -
-    source:      '/frameworks/base/packages/VpnDialogs/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperCropper
-  -
-    source:      '/frameworks/base/packages/WallpaperCropper/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Packages
-
-  # AudioFX
-  -
-    source:      '/packages/apps/AudioFX/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Bluetooth
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings_pbap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings_sap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Calendar
-  -
-    source:      '/packages/apps/Calendar/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Calendar/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Camera2
-  -
-    source:      '/packages/apps/Camera2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Camera2/res_p/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CellBroadcastReceiver
-  -
-    source:      '/packages/apps/CellBroadcastReceiver/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CertInstaller
-  -
-    source:      '/packages/apps/CertInstaller/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Contacts
-  -
-    source:      '/packages/apps/Contacts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DeskClock
-  -
-    source:      '/packages/apps/DeskClock/res/values/array.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/DeskClock/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Dialer
-  -
-    source:      '/packages/apps/Dialer/java/com/android/contacts/common/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/about/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/app/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/app/voicemail/error/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/blocking/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callcomposer/cameraui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callcomposer/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/common/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/dialpadview/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/interactions/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/main/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/notification/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/phonenumberutil/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/postcall/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/shortcuts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/speeddial/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/theme/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/util/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/voicemailstatus/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/widget/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/answer/impl/hint/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/answer/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/audioroute/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/commontheme/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/disconnectdialog/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/hold/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/incall/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/sessiondata/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/telecomeventui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/video/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/voicemail/impl/configui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/voicemail/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DocumentsUI
-  -
-    source:      '/packages/apps/DocumentsUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Email
-  -
-    source:      '/packages/apps/Email/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # EmergencyInfo
-  -
-    source:      '/packages/apps/EmergencyInfo/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ExactCalculator
-  -
-    source:      '/packages/apps/ExactCalculator/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gallery2
-  -
-    source:      '/packages/apps/Gallery2/res/values/filtershow_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gallery2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # HTMLViewer
-  -
-    source:      '/packages/apps/HTMLViewer/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # KeyChain
-  -
-    source:      '/packages/apps/KeyChain/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ManagedProvisioning
-  -
-    source:      '/packages/apps/ManagedProvisioning/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Messaging
-  -
-    source:      '/packages/apps/Messaging/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Messaging/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Nfc
-  -
-    source:      '/packages/apps/Nfc/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PackageInstaller
-  -
-    source:      '/packages/apps/PackageInstaller/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhoneCommon
-  -
-    source:      '/packages/apps/PhoneCommon/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SafetyRegulatoryInfo
-  -
-    source:      '/packages/apps/SafetyRegulatoryInfo/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Settings
-  -
-    source:      '/packages/apps/Settings/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Settings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Stk
-  -
-    source:      '/packages/apps/Stk/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # StorageManager
-  -
-    source:      '/packages/apps/StorageManager/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/StorageManager/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Tag
-  -
-    source:      '/packages/apps/Tag/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Trebuchet
-  -
-    source:      '/packages/apps/Trebuchet/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TvSettings
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UnifiedEmail
-  -
-    source:      '/packages/apps/UnifiedEmail/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperPicker
-  -
-    source:      '/packages/apps/WallpaperPicker/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Input methods
-
-  # LatinIME
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-action-keys.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-appname.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-config-important-notice.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-emoji-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-letter-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-talkback-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Providers
-
-  # BlockedNumberProvider
-  -
-    source:      '/packages/providers/BlockedNumberProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # BookmarkProvider
-  -
-    source:      '/packages/providers/BookmarkProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CalendarProvider
-  -
-    source:      '/packages/providers/CalendarProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CallLogProvider
-  -
-    source:      '/packages/providers/CallLogProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ContactsProvider
-  -
-    source:      '/packages/providers/ContactsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DownloadProvider
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/providers/DownloadProvider/ui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # MediaProvider
-  -
-    source:      '/packages/providers/MediaProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TelephonyProvider
-  -
-    source:      '/packages/providers/TelephonyProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TvProvider
-  -
-    source:      '/packages/providers/TvProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UserDictionaryProvider
-  -
-    source:      '/packages/providers/UserDictionaryProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Screensavers
-
-  # Basic
-  -
-    source:      '/packages/screensavers/Basic/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhotoTable
-  -
-    source:      '/packages/screensavers/PhotoTable/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Services
-
-  # BuiltInPrintService
-  -
-    source:      '/packages/services/BuiltInPrintService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telecomm
-  -
-    source:      '/packages/services/Telecomm/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telephony
-  -
-    source:      '/packages/services/Telephony/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/services/Telephony/sip/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Wallpapers
-
-  # LivePicker
-  -
-    source:      '/packages/wallpapers/LivePicker/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
+"files": [
+    {
+        "source":      "/frameworks/base/core/res/res/values/strings.xml",
+        "translation": "/frameworks/base/core/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/BackupRestoreConfirmation/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/BackupRestoreConfirmation/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/CaptivePortalLogin/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/CaptivePortalLogin/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/DefaultContainerService/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/DefaultContainerService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/ExternalStorageProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/ExternalStorageProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/FusedLocation/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/FusedLocation/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/InputDevices/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/InputDevices/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/MtpDocumentsProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/MtpDocumentsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/PrintSpooler/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/PrintSpooler/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/arrays.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SettingsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/Shell/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/Shell/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/StatementService/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/StatementService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res-keyguard/values/strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res-keyguard/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/VpnDialogs/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/VpnDialogs/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/WallpaperCropper/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/WallpaperCropper/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/AudioFX/res/values/strings.xml",
+        "translation": "/packages/apps/AudioFX/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings_pbap.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings_sap.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calendar/res/values/arrays.xml",
+        "translation": "/packages/apps/Calendar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calendar/res/values/strings.xml",
+        "translation": "/packages/apps/Calendar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res/values/strings.xml",
+        "translation": "/packages/apps/Camera2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res_p/values/strings.xml",
+        "translation": "/packages/apps/Camera2/res_p/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CellBroadcastReceiver/res/values/strings.xml",
+        "translation": "/packages/apps/CellBroadcastReceiver/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CertInstaller/res/values/strings.xml",
+        "translation": "/packages/apps/CertInstaller/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/strings.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/array.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/strings.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/contacts/common/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/contacts/common/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/about/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/about/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/app/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/app/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/app/voicemail/error/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/app/voicemail/error/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/blocking/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/blocking/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callcomposer/cameraui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callcomposer/cameraui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callcomposer/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callcomposer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/common/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/common/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/dialpadview/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/dialpadview/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/enrichedcall/simulator/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/interactions/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/interactions/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/main/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/main/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/notification/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/notification/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/phonenumberutil/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/phonenumberutil/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/postcall/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/postcall/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/searchfragment/nearbyplaces/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/shortcuts/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/shortcuts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/speeddial/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/speeddial/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/theme/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/theme/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/util/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/util/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/voicemailstatus/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/voicemailstatus/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/widget/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/widget/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/answer/impl/hint/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/answer/impl/hint/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/answer/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/answer/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/audioroute/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/audioroute/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/commontheme/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/commontheme/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/disconnectdialog/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/disconnectdialog/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/hold/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/hold/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/incall/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/incall/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/sessiondata/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/sessiondata/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/telecomeventui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/telecomeventui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/video/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/video/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/voicemail/impl/configui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/voicemail/impl/configui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/voicemail/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/voicemail/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DocumentsUI/res/values/strings.xml",
+        "translation": "/packages/apps/DocumentsUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Email/res/values/strings.xml",
+        "translation": "/packages/apps/Email/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/EmergencyInfo/res/values/strings.xml",
+        "translation": "/packages/apps/EmergencyInfo/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ExactCalculator/res/values/strings.xml",
+        "translation": "/packages/apps/ExactCalculator/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/filtershow_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/HTMLViewer/res/values/strings.xml",
+        "translation": "/packages/apps/HTMLViewer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/KeyChain/res/values/strings.xml",
+        "translation": "/packages/apps/KeyChain/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ManagedProvisioning/res/values/strings.xml",
+        "translation": "/packages/apps/ManagedProvisioning/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/arrays.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/strings.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Nfc/res/values/strings.xml",
+        "translation": "/packages/apps/Nfc/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PackageInstaller/res/values/strings.xml",
+        "translation": "/packages/apps/PackageInstaller/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PhoneCommon/res/values/strings.xml",
+        "translation": "/packages/apps/PhoneCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SafetyRegulatoryInfo/res/values/strings.xml",
+        "translation": "/packages/apps/SafetyRegulatoryInfo/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/arrays.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/strings.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Stk/res/values/strings.xml",
+        "translation": "/packages/apps/Stk/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/StorageManager/res/values/arrays.xml",
+        "translation": "/packages/apps/StorageManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/StorageManager/res/values/strings.xml",
+        "translation": "/packages/apps/StorageManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Tag/res/values/strings.xml",
+        "translation": "/packages/apps/Tag/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/strings.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/arrays.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/strings.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/UnifiedEmail/res/values/strings.xml",
+        "translation": "/packages/apps/UnifiedEmail/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/WallpaperPicker/res/values/strings.xml",
+        "translation": "/packages/apps/WallpaperPicker/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-action-keys.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-appname.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-config-important-notice.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-emoji-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-letter-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-talkback-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/BlockedNumberProvider/res/values/strings.xml",
+        "translation": "/packages/providers/BlockedNumberProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/BookmarkProvider/res/values/strings.xml",
+        "translation": "/packages/providers/BookmarkProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/CalendarProvider/res/values/strings.xml",
+        "translation": "/packages/providers/CalendarProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/CallLogProvider/res/values/strings.xml",
+        "translation": "/packages/providers/CallLogProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/ContactsProvider/res/values/strings.xml",
+        "translation": "/packages/providers/ContactsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/strings.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/ui/res/values/strings.xml",
+        "translation": "/packages/providers/DownloadProvider/ui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/MediaProvider/res/values/strings.xml",
+        "translation": "/packages/providers/MediaProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/TelephonyProvider/res/values/strings.xml",
+        "translation": "/packages/providers/TelephonyProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/TvProvider/res/values/strings.xml",
+        "translation": "/packages/providers/TvProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/UserDictionaryProvider/res/values/strings.xml",
+        "translation": "/packages/providers/UserDictionaryProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/Basic/res/values/strings.xml",
+        "translation": "/packages/screensavers/Basic/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/PhotoTable/res/values/strings.xml",
+        "translation": "/packages/screensavers/PhotoTable/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/BuiltInPrintService/res/values/strings.xml",
+        "translation": "/packages/services/BuiltInPrintService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telecomm/res/values/strings.xml",
+        "translation": "/packages/services/Telecomm/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/res/values/strings.xml",
+        "translation": "/packages/services/Telephony/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/sip/res/values/strings.xml",
+        "translation": "/packages/services/Telephony/sip/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/LivePicker/res/values/strings.xml",
+        "translation": "/packages/wallpapers/LivePicker/res/values-%android_code%/%original_file_name%"
+    }
+]
diff --git a/config/lineage-16.0.yaml b/config/lineage-16.0.yaml
index becf685..bdb1c18 100644
--- a/config/lineage-16.0.yaml
+++ b/config/lineage-16.0.yaml
@@ -3,7 +3,7 @@
 # Crowdin configuration file for LineageOS
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2019 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,567 +17,258 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-api_key_env: LINEAGE_CROWDIN_API_KEY
-base_path_env: LINEAGE_CROWDIN_BASE_PATH_LINEAGE_16_0
-project_identifier: lineageos
-preserve_hierarchy: true
+"api_token_env": LINEAGE_CROWDIN_API_TOKEN
+"base_path_env": LINEAGE_CROWDIN_BASE_PATH_LINEAGE_16_0
+"project_id": 237414
+"preserve_hierarchy": true
 
-files:
-# Frameworks
-
-  # framework-res
-  -
-    source:      '/frameworks/base/core/res/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: &anchor
-      android_code:
-        # Afrikaans
-        af: af
-        # Albanian
-        sq: sq
-        # Amharic
-        am: am
-        # Arabic
-        ar: ar
-        # Armenian
-        hy-AM: hy
-        # Arpitan - LineageOS
-        frp: frp
-        # Assamese
-        as: as
-        # Asturian - LineageOS
-        ast: ast-rES
-        # Azerbaijani
-        az: az
-        # Basque
-        eu: eu
-        # Belarusian
-        be: be
-        # Bengali
-        bn: bn
-        # Bosnian
-        bs: bs
-        # Breton - LineageOS
-        br-FR: br-rFR
-        # Bulgarian
-        bg: bg
-        # Burmese
-        my: my
-        # Catalan
-        ca: ca
-        # Chinese Simplified
-        zh-CN: zh-rCN
-        # Chinese Traditional
-        zh-TW: zh-rTW
-        # Chinese Traditional, Hong Kong
-        zh-HK: zh-rHK
-        # Croatian
-        hr: hr
-        # Czech
-        cs: cs
-        # Danish
-        da: da
-        # Dutch
-        nl: nl
-        # English, Australia
-        en-AU: en-rAU
-        # English, Canada
-        en-CA: en-rCA
-        # English, India
-        en-IN: en-rIN
-        # English, United Kingdom
-        en-GB: en-rGB
-        # Esperanto - LineageOS
-        eo: eo
-        # Estonian
-        et: et
-        # Filipino - LineageOS
-        fil: fil
-        # Finnish
-        fi: fi
-        # French
-        fr: fr
-        # French, Canada
-        fr-CA: fr-rCA
-        # Frisian - LineageOS
-        fy-NL: fy-rNL
-        # Galician
-        gl: gl
-        # Georgian
-        ka: ka
-        # German
-        de: de
-        # Greek
-        el: el
-        # Gujarati
-        gu-IN: gu
-        # Hebrew
-        he: iw
-        # Hindi
-        hi: hi
-        # Hungarian
-        hu: hu
-        # Icelandic
-        is: is
-        # Indonesian
-        id: in
-        # Irish - LineageOS
-        ga-IE: ga-rIE
-        # Italian
-        it: it
-        # Japanese
-        ja: ja
-        # Kabyle - LineageOS
-        kab: kab-rDZ
-        # Kannada
-        kn: kn
-        # Kashubian - LineageOS
-        csb: csb
-        # Kazakh
-        kk: kk
-        # Khmer
-        km: km
-        # Korean
-        ko: ko
-        # Kurdish - LineageOS
-        ku: ku
-        # Kyrgyz
-        ky: ky
-        # Lao
-        lo: lo
-        # Latvian
-        lv: lv
-        # Lithuanian
-        lt: lt
-        # Luxembourgish - LineageOS
-        lb: lb
-        # Macedonian (FYROM)
-        mk: mk
-        # Malay
-        ms: ms
-        # Malayalam
-        ml-IN: ml
-        # Marathi
-        mr: mr
-        # Mongolian
-        mn: mn
-        # Nepali
-        ne-NP: ne
-        # Norwegian Bokmal
-        nb: nb
-        # Occitan - LineageOS
-        oc: oc
-        # Oriya
-        or: or
-        # Persian
-        fa: fa
-        # Pirate English - LineageOS
-        en-PT: en-rPT
-        # Polish
-        pl: pl
-        # Portuguese
-        pt-PT: pt-rPT
-        # Portuguese, Brazilian
-        pt-BR: pt-rBR
-        # Punjabi
-        pa-IN: pa
-        # Romanian
-        ro: ro
-        # Romansh - LineageOS
-        rm-CH: rm
-        # Russian
-        ru: ru
-        # Sardinian - LineageOS
-        sc: sc-rIT
-        # Scottish Gaelic - LineageOS
-        gd: gd
-        # Serbian (Cyrillic)
-        sr: sr
-        # Serbian (Latin)
-        sr-CS: b+sr+Latn
-        # Sinhala
-        si-LK: si
-        # Slovak
-        sk: sk
-        # Slovenian
-        sl: sl
-        # Spanish
-        es-ES: es
-        # Spanish, Colombia - LineageOS
-        es-CO: es-rCO
-        # Spanish, Mexico - LineageOS
-        es-MX: es-rMX
-        # Spanish, United States
-        es-US: es-rUS
-        # Sundanese - LineageOS
-        su: su
-        # Swahili
-        sw: sw
-        # Swedish
-        sv-SE: sv
-        # Tagalog
-        tl: tl
-        # Tamil
-        ta: ta
-        # Telugu
-        te: te
-        # Thai
-        th: th
-        # Turkish
-        tr: tr
-        # Ukrainian
-        uk: uk
-        # Urdu (Pakistan)
-        ur-PK: ur
-        # Uyghur - LineageOS
-        ug: ug
-        # Uzbek
-        uz: uz
-        # Venetian - LineageOS
-        vec: vec
-        # Vietnamese
-        vi: vi
-        # Welsh - LineageOS
-        cy: cy
-        # Zulu
-        zu: zu
-
-  # SettingsLib
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SystemUI
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Packages
-
-  # AudioFX
-  -
-    source:      '/packages/apps/AudioFX/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Backgrounds
-  -
-    source:      '/packages/apps/Backgrounds/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Camera2
-  -
-    source:      '/packages/apps/Camera2/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Contacts
-  -
-    source:      '/packages/apps/Contacts/res/values/lineage_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DeskClock
-  -
-    source:      '/packages/apps/DeskClock/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Dialer
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/app/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/lookup/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Eleven
-  -
-    source:      '/packages/apps/Eleven/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Eleven/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Email
-  -
-    source:      '/packages/apps/Email/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Exchange
-  -
-    source:      '/packages/apps/Exchange/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FMRadio
-  -
-    source:      '/packages/apps/FMRadio/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/FMRadio/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gallery2
-  -
-    source:      '/packages/apps/Gallery2/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gallery2/res/values/codeaurora_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Jelly
-  -
-    source:      '/packages/apps/Jelly/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LineageParts
-  -
-    source:      '/packages/apps/LineageParts/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/LineageParts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LockClock
-  -
-    source:      '/packages/apps/LockClock/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Messaging
-  -
-    source:      '/packages/apps/Messaging/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Profiles
-  -
-    source:      '/packages/apps/Profiles/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Recorder
-  -
-    source:      '/packages/apps/Recorder/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Settings
-  -
-    source:      '/packages/apps/Settings/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Settings/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SetupWizard
-  -
-    source:      '/packages/apps/SetupWizard/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Snap
-  -
-    source:      '/packages/apps/Snap/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/res/values/qcomstrings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/quickReader/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Terminal
-  -
-    source:      '/packages/apps/Terminal/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Terminal/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Trebuchet
-  -
-    source:      '/packages/apps/Trebuchet/res/values/lineage_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Updater
-  -
-    source:      '/packages/apps/Updater/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Input methods
-
-  # LatinIME
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Providers
-
-  # DownloadProvider
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WeatherProvider
-  -
-    source:      '/packages/providers/WeatherProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Services
-
-  # BuiltInPrintService
-  -
-    source:      '/packages/services/BuiltInPrintService/res/values/lineage_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Mms
-  -
-    source:      '/packages/services/Mms/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Lineage SDK
-
-  # Lineage SDK
-  -
-    source:      '/lineage-sdk/lineage/res/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LineageSettingsProvider
-  -
-    source:      '/lineage-sdk/packages/LineageSettingsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # OpenWeatherMapProvider
-  -
-    source:      '/lineage-sdk/samples/weatherproviderservice/OpenWeatherMapProvider/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Device specific
-
-  # fmapp2
-  -
-    source:      '/hardware/qcom/fm/fmapp2/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/hardware/qcom/fm/fmapp2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # I01WD CameraTile
-  -
-    source:      '/device/asus/I01WD/CameraTile/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # kuntao devicesettings
-  -
-    source:      '/device/lenovo/kuntao/devicesettings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # oneplus guacamole camera helper
-  -
-    source:      '/device/oneplus/guacamole/camera_helper/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # oppo common configpanel
-  -
-    source:      '/device/oppo/common/configpanel/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # oppo r5 otgtoggle
-  -
-    source:      '/device/oppo/r5/otgtoggle/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # samsung AdvancedDisplay
-  -
-    source:      '/hardware/samsung/AdvancedDisplay/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/hardware/samsung/AdvancedDisplay/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # resources devicesettings
-  -
-    source:      '/packages/resources/devicesettings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FlipFlap
-  -
-    source:      '/packages/apps/FlipFlap/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
+"files": [
+    {
+        "source":      "/frameworks/base/core/res/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/core/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/AudioFX/res/values/cm_strings.xml",
+        "translation": "/packages/apps/AudioFX/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Backgrounds/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Backgrounds/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Camera2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/lineage_strings.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/cm_strings.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/app/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/app/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_arrays.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/lookup/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/lookup/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Eleven/res/values/plurals.xml",
+        "translation": "/packages/apps/Eleven/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Eleven/res/values/strings.xml",
+        "translation": "/packages/apps/Eleven/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Email/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Email/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Exchange/res/values/strings.xml",
+        "translation": "/packages/apps/Exchange/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FMRadio/res/values/cm_strings.xml",
+        "translation": "/packages/apps/FMRadio/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FMRadio/res/values/strings.xml",
+        "translation": "/packages/apps/FMRadio/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/codeaurora_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Jelly/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Jelly/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/LineageParts/res/values/plurals.xml",
+        "translation": "/packages/apps/LineageParts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/LineageParts/res/values/strings.xml",
+        "translation": "/packages/apps/LineageParts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/LockClock/res/values/strings.xml",
+        "translation": "/packages/apps/LockClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Profiles/res/values/strings.xml",
+        "translation": "/packages/apps/Profiles/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Recorder/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Recorder/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SetupWizard/res/values/strings.xml",
+        "translation": "/packages/apps/SetupWizard/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/qcomstrings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/strings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/quickReader/res/values/strings.xml",
+        "translation": "/packages/apps/Snap/quickReader/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Terminal/res/values/arrays.xml",
+        "translation": "/packages/apps/Terminal/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Terminal/res/values/strings.xml",
+        "translation": "/packages/apps/Terminal/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/lineage_strings.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Updater/res/values/strings.xml",
+        "translation": "/packages/apps/Updater/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/cm_strings.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/cm_plurals.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/cm_strings.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/WeatherProvider/res/values/strings.xml",
+        "translation": "/packages/providers/WeatherProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/BuiltInPrintService/res/values/lineage_strings.xml",
+        "translation": "/packages/services/BuiltInPrintService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Mms/res/values/cm_strings.xml",
+        "translation": "/packages/services/Mms/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/lineage-sdk/lineage/res/res/values/strings.xml",
+        "translation": "/lineage-sdk/lineage/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/lineage-sdk/packages/LineageSettingsProvider/res/values/strings.xml",
+        "translation": "/lineage-sdk/packages/LineageSettingsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/lineage-sdk/samples/weatherproviderservice/OpenWeatherMapProvider/app/src/main/res/values/strings.xml",
+        "translation": "/lineage-sdk/samples/weatherproviderservice/OpenWeatherMapProvider/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/qcom/fm/fmapp2/res/values/arrays.xml",
+        "translation": "/hardware/qcom/fm/fmapp2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/qcom/fm/fmapp2/res/values/strings.xml",
+        "translation": "/hardware/qcom/fm/fmapp2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/asus/I01WD/CameraTile/res/values/strings.xml",
+        "translation": "/device/asus/I01WD/CameraTile/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/lenovo/kuntao/devicesettings/res/values/strings.xml",
+        "translation": "/device/lenovo/kuntao/devicesettings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/oneplus/guacamole/camera_helper/res/values/strings.xml",
+        "translation": "/device/oneplus/guacamole/camera_helper/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/oppo/common/configpanel/res/values/strings.xml",
+        "translation": "/device/oppo/common/configpanel/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/oppo/r5/otgtoggle/res/values/strings.xml",
+        "translation": "/device/oppo/r5/otgtoggle/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/samsung/AdvancedDisplay/res/values/arrays.xml",
+        "translation": "/hardware/samsung/AdvancedDisplay/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/samsung/AdvancedDisplay/res/values/strings.xml",
+        "translation": "/hardware/samsung/AdvancedDisplay/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/resources/devicesettings/res/values/strings.xml",
+        "translation": "/packages/resources/devicesettings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FlipFlap/res/values/strings.xml",
+        "translation": "/packages/apps/FlipFlap/res/values-%android_code%/%original_file_name%"
+    }
+]
diff --git a/config/lineage-16.0_aosp.yaml b/config/lineage-16.0_aosp.yaml
index 31b2946..59f69fb 100644
--- a/config/lineage-16.0_aosp.yaml
+++ b/config/lineage-16.0_aosp.yaml
@@ -4,7 +4,7 @@
 # additional languages not supported by AOSP
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2019 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,677 +18,494 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-api_key_env: LINEAGE_AOSP_CROWDIN_API_KEY
-base_path_env: LINEAGE_CROWDIN_BASE_PATH_LINEAGE_16_0
-project_identifier: lineageos-aosp
-preserve_hierarchy: true
+"api_token_env": LINEAGE_CROWDIN_API_TOKEN
+"base_path_env": LINEAGE_CROWDIN_BASE_PATH_LINEAGE_16_0
+"project_id": 238011
+"preserve_hierarchy": true
 
-files:
-# Frameworks
-
-  # framework-res
-  -
-    source:      '/frameworks/base/core/res/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: &anchor
-      android_code:
-        # Arpitan - LineageOS
-        frp: frp
-        # Asturian - LineageOS
-        ast: ast-rES
-        # Breton - LineageOS
-        br-FR: br-rFR
-        # Esperanto - LineageOS
-        eo: eo
-        # Filipino - LineageOS
-        fil: fil
-        # Frisian - LineageOS
-        fy-NL: fy-rNL
-        # Irish - LineageOS
-        ga-IE: ga-rIE
-        # Kabyle - LineageOS
-        kab: kab-rDZ
-        # Kashubian - LineageOS
-        csb: csb
-        # Kurdish - LineageOS
-        ku: ku
-        # Luxembourgish - LineageOS
-        lb: lb
-        # Occitan - LineageOS
-        oc: oc
-        # Pirate English - LineageOS
-        en-PT: en-rPT
-        # Romansh - LineageOS
-        rm-CH: rm
-        # Sardinian - LineageOS
-        sc: sc-rIT
-        # Scottish Gaelic - LineageOS
-        gd: gd
-        # Spanish, Colombia - LineageOS
-        es-CO: es-rCO
-        # Spanish, Mexico - LineageOS
-        es-MX: es-rMX
-        # Sundanese - LineageOS
-        su: su
-        # Uyghur - LineageOS
-        ug: ug
-        # Venetian - LineageOS
-        vec: vec
-        # Welsh - LineageOS
-        cy: cy
-
-  # BackupRestoreConfirmation
-  -
-    source:      '/frameworks/base/packages/BackupRestoreConfirmation/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CaptivePortalLogin
-  -
-    source:      '/frameworks/base/packages/CaptivePortalLogin/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DefaultContainerService
-  -
-    source:      '/frameworks/base/packages/DefaultContainerService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ExternalStorageProvider
-  -
-    source:      '/frameworks/base/packages/ExternalStorageProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FusedLocation
-  -
-    source:      '/frameworks/base/packages/FusedLocation/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # InputDevices
-  -
-    source:      '/frameworks/base/packages/InputDevices/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # MtpDocumentsProvider
-  -
-    source:      '/frameworks/base/packages/MtpDocumentsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PrintSpooler
-  -
-    source:      '/frameworks/base/packages/PrintSpooler/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsLib
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsProvider
-  -
-    source:      '/frameworks/base/packages/SettingsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Shell
-  -
-    source:      '/frameworks/base/packages/Shell/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # StatementService
-  -
-    source:      '/frameworks/base/packages/StatementService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SystemUI
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/frameworks/base/packages/SystemUI/res-keyguard/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # VpnDialogs
-  -
-    source:      '/frameworks/base/packages/VpnDialogs/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperCropper
-  -
-    source:      '/frameworks/base/packages/WallpaperCropper/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Packages
-
-  # AudioFX
-  -
-    source:      '/packages/apps/AudioFX/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Bluetooth
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings_pbap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings_sap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Calendar
-  -
-    source:      '/packages/apps/Calendar/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Calendar/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Camera2
-  -
-    source:      '/packages/apps/Camera2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Camera2/res_p/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CellBroadcastReceiver
-  -
-    source:      '/packages/apps/CellBroadcastReceiver/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CertInstaller
-  -
-    source:      '/packages/apps/CertInstaller/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Contacts
-  -
-    source:      '/packages/apps/Contacts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DeskClock
-  -
-    source:      '/packages/apps/DeskClock/res/values/cities.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/DeskClock/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Dialer
-  -
-    source:      '/packages/apps/Dialer/java/com/android/contacts/common/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/about/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/app/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/app/voicemail/error/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/blocking/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callcomposer/cameraui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callcomposer/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/common/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/dialpadview/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/interactions/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/main/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/notification/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/phonenumberutil/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/postcall/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/shortcuts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/speeddial/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/theme/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/util/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/voicemailstatus/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/widget/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/answer/impl/hint/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/answer/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/audioroute/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/commontheme/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/disconnectdialog/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/hold/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/incall/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/sessiondata/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/telecomeventui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/video/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/voicemail/impl/configui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/voicemail/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DocumentsUI
-  -
-    source:      '/packages/apps/DocumentsUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Email
-  -
-    source:      '/packages/apps/Email/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # EmergencyInfo
-  -
-    source:      '/packages/apps/EmergencyInfo/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ExactCalculator
-  -
-    source:      '/packages/apps/ExactCalculator/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gallery2
-  -
-    source:      '/packages/apps/Gallery2/res/values/filtershow_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gallery2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # HTMLViewer
-  -
-    source:      '/packages/apps/HTMLViewer/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # KeyChain
-  -
-    source:      '/packages/apps/KeyChain/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ManagedProvisioning
-  -
-    source:      '/packages/apps/ManagedProvisioning/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Messaging
-  -
-    source:      '/packages/apps/Messaging/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Messaging/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Nfc
-  -
-    source:      '/packages/apps/Nfc/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PackageInstaller
-  -
-    source:      '/packages/apps/PackageInstaller/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhoneCommon
-  -
-    source:      '/packages/apps/PhoneCommon/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SafetyRegulatoryInfo
-  -
-    source:      '/packages/apps/SafetyRegulatoryInfo/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Settings
-  -
-    source:      '/packages/apps/Settings/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Settings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Stk
-  -
-    source:      '/packages/apps/Stk/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # StorageManager
-  -
-    source:      '/packages/apps/StorageManager/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/StorageManager/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Tag
-  -
-    source:      '/packages/apps/Tag/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Trebuchet
-  -
-    source:      '/packages/apps/Trebuchet/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TvSettings
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UnifiedEmail
-  -
-    source:      '/packages/apps/UnifiedEmail/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperPicker
-  -
-    source:      '/packages/apps/WallpaperPicker/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Input methods
-
-  # LatinIME
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-action-keys.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-appname.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-config-important-notice.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-emoji-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-letter-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-talkback-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Providers
-
-  # BlockedNumberProvider
-  -
-    source:      '/packages/providers/BlockedNumberProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # BookmarkProvider
-  -
-    source:      '/packages/providers/BookmarkProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CalendarProvider
-  -
-    source:      '/packages/providers/CalendarProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CallLogProvider
-  -
-    source:      '/packages/providers/CallLogProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ContactsProvider
-  -
-    source:      '/packages/providers/ContactsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DownloadProvider
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/providers/DownloadProvider/ui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # MediaProvider
-  -
-    source:      '/packages/providers/MediaProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TelephonyProvider
-  -
-    source:      '/packages/providers/TelephonyProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TvProvider
-  -
-    source:      '/packages/providers/TvProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UserDictionaryProvider
-  -
-    source:      '/packages/providers/UserDictionaryProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Screensavers
-
-  # Basic
-  -
-    source:      '/packages/screensavers/Basic/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhotoTable
-  -
-    source:      '/packages/screensavers/PhotoTable/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Services
-
-  # BuiltInPrintService
-  -
-    source:      '/packages/services/BuiltInPrintService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telecomm
-  -
-    source:      '/packages/services/Telecomm/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telephony
-  -
-    source:      '/packages/services/Telephony/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/services/Telephony/sip/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Wallpapers
-
-  # LivePicker
-  -
-    source:      '/packages/wallpapers/LivePicker/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
+"files": [
+    {
+        "source":      "/frameworks/base/core/res/res/values/strings.xml",
+        "translation": "/frameworks/base/core/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/BackupRestoreConfirmation/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/BackupRestoreConfirmation/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/CaptivePortalLogin/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/CaptivePortalLogin/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/DefaultContainerService/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/DefaultContainerService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/ExternalStorageProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/ExternalStorageProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/FusedLocation/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/FusedLocation/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/InputDevices/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/InputDevices/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/MtpDocumentsProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/MtpDocumentsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/PrintSpooler/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/PrintSpooler/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/arrays.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SettingsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/Shell/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/Shell/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/StatementService/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/StatementService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res-keyguard/values/strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res-keyguard/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/VpnDialogs/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/VpnDialogs/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/WallpaperCropper/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/WallpaperCropper/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/AudioFX/res/values/strings.xml",
+        "translation": "/packages/apps/AudioFX/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings_pbap.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings_sap.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calendar/res/values/arrays.xml",
+        "translation": "/packages/apps/Calendar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Calendar/res/values/strings.xml",
+        "translation": "/packages/apps/Calendar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res/values/strings.xml",
+        "translation": "/packages/apps/Camera2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res_p/values/strings.xml",
+        "translation": "/packages/apps/Camera2/res_p/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CellBroadcastReceiver/res/values/strings.xml",
+        "translation": "/packages/apps/CellBroadcastReceiver/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CertInstaller/res/values/strings.xml",
+        "translation": "/packages/apps/CertInstaller/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/strings.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/cities.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/strings.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/contacts/common/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/contacts/common/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/about/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/about/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/app/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/app/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/app/voicemail/error/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/app/voicemail/error/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/blocking/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/blocking/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callcomposer/cameraui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callcomposer/cameraui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callcomposer/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callcomposer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/common/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/common/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/dialpadview/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/dialpadview/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/enrichedcall/simulator/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/interactions/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/interactions/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/main/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/main/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/notification/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/notification/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/phonenumberutil/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/phonenumberutil/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/postcall/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/postcall/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/searchfragment/nearbyplaces/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/shortcuts/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/shortcuts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/speeddial/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/speeddial/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/theme/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/theme/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/util/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/util/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/voicemailstatus/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/voicemailstatus/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/widget/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/widget/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/answer/impl/hint/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/answer/impl/hint/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/answer/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/answer/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/audioroute/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/audioroute/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/commontheme/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/commontheme/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/disconnectdialog/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/disconnectdialog/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/hold/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/hold/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/incall/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/incall/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/sessiondata/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/sessiondata/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/telecomeventui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/telecomeventui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/video/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/video/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/voicemail/impl/configui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/voicemail/impl/configui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/voicemail/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/voicemail/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DocumentsUI/res/values/strings.xml",
+        "translation": "/packages/apps/DocumentsUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Email/res/values/strings.xml",
+        "translation": "/packages/apps/Email/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/EmergencyInfo/res/values/strings.xml",
+        "translation": "/packages/apps/EmergencyInfo/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ExactCalculator/res/values/strings.xml",
+        "translation": "/packages/apps/ExactCalculator/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/filtershow_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/HTMLViewer/res/values/strings.xml",
+        "translation": "/packages/apps/HTMLViewer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/KeyChain/res/values/strings.xml",
+        "translation": "/packages/apps/KeyChain/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ManagedProvisioning/res/values/strings.xml",
+        "translation": "/packages/apps/ManagedProvisioning/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/arrays.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/strings.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Nfc/res/values/strings.xml",
+        "translation": "/packages/apps/Nfc/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PackageInstaller/res/values/strings.xml",
+        "translation": "/packages/apps/PackageInstaller/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PhoneCommon/res/values/strings.xml",
+        "translation": "/packages/apps/PhoneCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SafetyRegulatoryInfo/res/values/strings.xml",
+        "translation": "/packages/apps/SafetyRegulatoryInfo/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/arrays.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/strings.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Stk/res/values/strings.xml",
+        "translation": "/packages/apps/Stk/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/StorageManager/res/values/arrays.xml",
+        "translation": "/packages/apps/StorageManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/StorageManager/res/values/strings.xml",
+        "translation": "/packages/apps/StorageManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Tag/res/values/strings.xml",
+        "translation": "/packages/apps/Tag/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/strings.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/arrays.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/strings.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/UnifiedEmail/res/values/strings.xml",
+        "translation": "/packages/apps/UnifiedEmail/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/WallpaperPicker/res/values/strings.xml",
+        "translation": "/packages/apps/WallpaperPicker/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-action-keys.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-appname.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-config-important-notice.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-emoji-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-letter-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-talkback-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/BlockedNumberProvider/res/values/strings.xml",
+        "translation": "/packages/providers/BlockedNumberProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/BookmarkProvider/res/values/strings.xml",
+        "translation": "/packages/providers/BookmarkProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/CalendarProvider/res/values/strings.xml",
+        "translation": "/packages/providers/CalendarProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/CallLogProvider/res/values/strings.xml",
+        "translation": "/packages/providers/CallLogProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/ContactsProvider/res/values/strings.xml",
+        "translation": "/packages/providers/ContactsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/strings.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/ui/res/values/strings.xml",
+        "translation": "/packages/providers/DownloadProvider/ui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/MediaProvider/res/values/strings.xml",
+        "translation": "/packages/providers/MediaProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/TelephonyProvider/res/values/strings.xml",
+        "translation": "/packages/providers/TelephonyProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/TvProvider/res/values/strings.xml",
+        "translation": "/packages/providers/TvProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/UserDictionaryProvider/res/values/strings.xml",
+        "translation": "/packages/providers/UserDictionaryProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/Basic/res/values/strings.xml",
+        "translation": "/packages/screensavers/Basic/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/PhotoTable/res/values/strings.xml",
+        "translation": "/packages/screensavers/PhotoTable/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/BuiltInPrintService/res/values/strings.xml",
+        "translation": "/packages/services/BuiltInPrintService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telecomm/res/values/strings.xml",
+        "translation": "/packages/services/Telecomm/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/res/values/strings.xml",
+        "translation": "/packages/services/Telephony/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/sip/res/values/strings.xml",
+        "translation": "/packages/services/Telephony/sip/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/LivePicker/res/values/strings.xml",
+        "translation": "/packages/wallpapers/LivePicker/res/values-%android_code%/%original_file_name%"
+    }
+]
diff --git a/config/lineage-17.1.yaml b/config/lineage-17.1.yaml
index a7f599c..caaff74 100644
--- a/config/lineage-17.1.yaml
+++ b/config/lineage-17.1.yaml
@@ -3,7 +3,7 @@
 # Crowdin configuration file for LineageOS
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2020 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,559 +17,254 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-api_key_env: LINEAGE_CROWDIN_API_KEY
-base_path_env: LINEAGE_CROWDIN_BASE_PATH_LINEAGE_17_1
-project_identifier: lineageos
-preserve_hierarchy: true
+"api_token_env": LINEAGE_CROWDIN_API_TOKEN
+"base_path_env": LINEAGE_CROWDIN_BASE_PATH_LINEAGE_17_1
+"project_id": 237414
+"preserve_hierarchy": true
 
-files:
-# Frameworks
-
-  # framework-res
-  -
-    source:      '/frameworks/base/core/res/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: &anchor
-      android_code:
-        # Afrikaans
-        af: af
-        # Albanian
-        sq: sq
-        # Amharic
-        am: am
-        # Arabic
-        ar: ar
-        # Armenian
-        hy-AM: hy
-        # Arpitan - LineageOS
-        frp: frp
-        # Assamese
-        as: as
-        # Asturian - LineageOS
-        ast: ast-rES
-        # Azerbaijani
-        az: az
-        # Basque
-        eu: eu
-        # Belarusian
-        be: be
-        # Bengali
-        bn: bn
-        # Bosnian
-        bs: bs
-        # Breton - LineageOS
-        br-FR: br-rFR
-        # Bulgarian
-        bg: bg
-        # Burmese
-        my: my
-        # Catalan
-        ca: ca
-        # Chinese Simplified
-        zh-CN: zh-rCN
-        # Chinese Traditional
-        zh-TW: zh-rTW
-        # Chinese Traditional, Hong Kong
-        zh-HK: zh-rHK
-        # Croatian
-        hr: hr
-        # Czech
-        cs: cs
-        # Danish
-        da: da
-        # Dutch
-        nl: nl
-        # English, Australia
-        en-AU: en-rAU
-        # English, Canada
-        en-CA: en-rCA
-        # English, India
-        en-IN: en-rIN
-        # English, United Kingdom
-        en-GB: en-rGB
-        # Esperanto - LineageOS
-        eo: eo
-        # Estonian
-        et: et
-        # Filipino - LineageOS
-        fil: fil
-        # Finnish
-        fi: fi
-        # French
-        fr: fr
-        # French, Canada
-        fr-CA: fr-rCA
-        # Frisian - LineageOS
-        fy-NL: fy-rNL
-        # Galician
-        gl: gl
-        # Georgian
-        ka: ka
-        # German
-        de: de
-        # Greek
-        el: el
-        # Gujarati
-        gu-IN: gu
-        # Hebrew
-        he: iw
-        # Hindi
-        hi: hi
-        # Hungarian
-        hu: hu
-        # Icelandic
-        is: is
-        # Indonesian
-        id: in
-        # Irish - LineageOS
-        ga-IE: ga-rIE
-        # Italian
-        it: it
-        # Japanese
-        ja: ja
-        # Kabyle - LineageOS
-        kab: kab-rDZ
-        # Kannada
-        kn: kn
-        # Kashubian - LineageOS
-        csb: csb
-        # Kazakh
-        kk: kk
-        # Khmer
-        km: km
-        # Korean
-        ko: ko
-        # Kurdish - LineageOS
-        ku: ku
-        # Kyrgyz
-        ky: ky
-        # Lao
-        lo: lo
-        # Latvian
-        lv: lv
-        # Lithuanian
-        lt: lt
-        # Luxembourgish - LineageOS
-        lb: lb
-        # Macedonian (FYROM)
-        mk: mk
-        # Malay
-        ms: ms
-        # Malayalam
-        ml-IN: ml
-        # Marathi
-        mr: mr
-        # Mongolian
-        mn: mn
-        # Nepali
-        ne-NP: ne
-        # Norwegian Bokmal
-        nb: nb
-        # Occitan - LineageOS
-        oc: oc
-        # Oriya
-        or: or
-        # Persian
-        fa: fa
-        # Pirate English - LineageOS
-        en-PT: en-rPT
-        # Polish
-        pl: pl
-        # Portuguese
-        pt-PT: pt-rPT
-        # Portuguese, Brazilian
-        pt-BR: pt-rBR
-        # Punjabi
-        pa-IN: pa
-        # Romanian
-        ro: ro
-        # Romansh - LineageOS
-        rm-CH: rm
-        # Russian
-        ru: ru
-        # Sardinian - LineageOS
-        sc: sc-rIT
-        # Scottish Gaelic - LineageOS
-        gd: gd
-        # Serbian (Cyrillic)
-        sr: sr
-        # Serbian (Latin)
-        sr-CS: b+sr+Latn
-        # Sinhala
-        si-LK: si
-        # Slovak
-        sk: sk
-        # Slovenian
-        sl: sl
-        # Spanish
-        es-ES: es
-        # Spanish, Colombia - LineageOS
-        es-CO: es-rCO
-        # Spanish, Mexico - LineageOS
-        es-MX: es-rMX
-        # Spanish, United States
-        es-US: es-rUS
-        # Sundanese - LineageOS
-        su: su
-        # Swahili
-        sw: sw
-        # Swedish
-        sv-SE: sv
-        # Tagalog
-        tl: tl
-        # Tamil
-        ta: ta
-        # Telugu
-        te: te
-        # Thai
-        th: th
-        # Turkish
-        tr: tr
-        # Ukrainian
-        uk: uk
-        # Urdu (Pakistan)
-        ur-PK: ur
-        # Uyghur - LineageOS
-        ug: ug
-        # Uzbek
-        uz: uz
-        # Venetian - LineageOS
-        vec: vec
-        # Vietnamese
-        vi: vi
-        # Welsh - LineageOS
-        cy: cy
-        # Zulu
-        zu: zu
-
-  # SettingsLib
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SystemUI
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Packages
-
-  # AudioFX
-  -
-    source:      '/packages/apps/AudioFX/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Backgrounds
-  -
-    source:      '/packages/apps/Backgrounds/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Camera2
-  -
-    source:      '/packages/apps/Camera2/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Contacts
-  -
-    source:      '/packages/apps/Contacts/res/values/lineage_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DeskClock
-  -
-    source:      '/packages/apps/DeskClock/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Dialer
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/app/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/lookup/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Eleven
-  -
-    source:      '/packages/apps/Eleven/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Eleven/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Email
-  -
-    source:      '/packages/apps/Email/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Etar
-  -
-    source:      '/packages/apps/Etar/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Etar/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Exchange
-  -
-    source:      '/packages/apps/Exchange/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FMRadio
-  -
-    source:      '/packages/apps/FMRadio/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/FMRadio/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gallery2
-  -
-    source:      '/packages/apps/Gallery2/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gallery2/res/values/codeaurora_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Jelly
-  -
-    source:      '/packages/apps/Jelly/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LineageParts
-  -
-    source:      '/packages/apps/LineageParts/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/LineageParts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Messaging
-  -
-    source:      '/packages/apps/Messaging/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Profiles
-  -
-    source:      '/packages/apps/Profiles/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Recorder
-  -
-    source:      '/packages/apps/Recorder/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Settings
-  -
-    source:      '/packages/apps/Settings/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Settings/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SetupWizard
-  -
-    source:      '/packages/apps/SetupWizard/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Snap
-  -
-    source:      '/packages/apps/Snap/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/res/values/qcomstrings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/quickReader/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Terminal
-  -
-    source:      '/packages/apps/Terminal/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Terminal/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Trebuchet
-  -
-    source:      '/packages/apps/Trebuchet/res/values/lineage_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Updater
-  -
-    source:      '/packages/apps/Updater/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Input methods
-
-  # LatinIME
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Providers
-
-  # DownloadProvider
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Services
-
-  # BuiltInPrintService
-  -
-    source:      '/packages/services/BuiltInPrintService/res/values/lineage_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Mms
-  -
-    source:      '/packages/services/Mms/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Lineage SDK
-
-  # Lineage SDK
-  -
-    source:      '/lineage-sdk/lineage/res/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LineageSettingsProvider
-  -
-    source:      '/lineage-sdk/packages/LineageSettingsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Device specific
-
-  # I01WD CameraTile
-  -
-    source:      '/device/asus/I01WD/CameraTile/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # kuntao devicesettings
-  -
-    source:      '/device/lenovo/kuntao/devicesettings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # oneplus sm8150-common camera helper
-  -
-    source:      '/device/oneplus/sm8150-common/camera_helper/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # oppo common configpanel
-  -
-    source:      '/device/oppo/common/configpanel/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # samsung AdvancedDisplay
-  -
-    source:      '/hardware/samsung/AdvancedDisplay/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/hardware/samsung/AdvancedDisplay/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # sony ModemConfig
-  -
-    source:      '/hardware/sony/SonyOpenTelephony/ModemConfig/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # resources devicesettings
-  -
-    source:      '/packages/resources/devicesettings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FlipFlap
-  -
-    source:      '/packages/apps/FlipFlap/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # fmapp2
-  -
-    source:      '/vendor/qcom/opensource/fm-commonsys/fmapp2/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/vendor/qcom/opensource/fm-commonsys/fmapp2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
\ No newline at end of file
+"files": [
+    {
+        "source":      "/frameworks/base/core/res/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/core/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/AudioFX/res/values/cm_strings.xml",
+        "translation": "/packages/apps/AudioFX/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Backgrounds/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Backgrounds/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Camera2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/lineage_strings.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/cm_strings.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/app/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/app/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_arrays.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/lookup/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/lookup/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Eleven/res/values/plurals.xml",
+        "translation": "/packages/apps/Eleven/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Eleven/res/values/strings.xml",
+        "translation": "/packages/apps/Eleven/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Email/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Email/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Etar/res/values/arrays.xml",
+        "translation": "/packages/apps/Etar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Etar/res/values/strings.xml",
+        "translation": "/packages/apps/Etar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Exchange/res/values/strings.xml",
+        "translation": "/packages/apps/Exchange/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FMRadio/res/values/cm_strings.xml",
+        "translation": "/packages/apps/FMRadio/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FMRadio/res/values/strings.xml",
+        "translation": "/packages/apps/FMRadio/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/codeaurora_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Jelly/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Jelly/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/LineageParts/res/values/plurals.xml",
+        "translation": "/packages/apps/LineageParts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/LineageParts/res/values/strings.xml",
+        "translation": "/packages/apps/LineageParts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Profiles/res/values/strings.xml",
+        "translation": "/packages/apps/Profiles/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Recorder/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Recorder/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SetupWizard/res/values/strings.xml",
+        "translation": "/packages/apps/SetupWizard/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/qcomstrings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/strings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/quickReader/res/values/strings.xml",
+        "translation": "/packages/apps/Snap/quickReader/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Terminal/res/values/arrays.xml",
+        "translation": "/packages/apps/Terminal/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Terminal/res/values/strings.xml",
+        "translation": "/packages/apps/Terminal/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/lineage_strings.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Updater/res/values/strings.xml",
+        "translation": "/packages/apps/Updater/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/cm_strings.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/cm_plurals.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/cm_strings.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/BuiltInPrintService/res/values/lineage_strings.xml",
+        "translation": "/packages/services/BuiltInPrintService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Mms/res/values/cm_strings.xml",
+        "translation": "/packages/services/Mms/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/lineage-sdk/lineage/res/res/values/strings.xml",
+        "translation": "/lineage-sdk/lineage/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/lineage-sdk/packages/LineageSettingsProvider/res/values/strings.xml",
+        "translation": "/lineage-sdk/packages/LineageSettingsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/asus/I01WD/CameraTile/res/values/strings.xml",
+        "translation": "/device/asus/I01WD/CameraTile/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/lenovo/kuntao/devicesettings/res/values/strings.xml",
+        "translation": "/device/lenovo/kuntao/devicesettings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/oneplus/sm8150-common/camera_helper/res/values/strings.xml",
+        "translation": "/device/oneplus/sm8150-common/camera_helper/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/oppo/common/configpanel/res/values/strings.xml",
+        "translation": "/device/oppo/common/configpanel/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/samsung/AdvancedDisplay/res/values/arrays.xml",
+        "translation": "/hardware/samsung/AdvancedDisplay/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/samsung/AdvancedDisplay/res/values/strings.xml",
+        "translation": "/hardware/samsung/AdvancedDisplay/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/sony/SonyOpenTelephony/ModemConfig/res/values/strings.xml",
+        "translation": "/hardware/sony/SonyOpenTelephony/ModemConfig/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/resources/devicesettings/res/values/strings.xml",
+        "translation": "/packages/resources/devicesettings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FlipFlap/res/values/strings.xml",
+        "translation": "/packages/apps/FlipFlap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/vendor/qcom/opensource/fm-commonsys/fmapp2/res/values/arrays.xml",
+        "translation": "/vendor/qcom/opensource/fm-commonsys/fmapp2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/vendor/qcom/opensource/fm-commonsys/fmapp2/res/values/strings.xml",
+        "translation": "/vendor/qcom/opensource/fm-commonsys/fmapp2/res/values-%android_code%/%original_file_name%"
+    }
+]
diff --git a/config/lineage-17.1_aosp.yaml b/config/lineage-17.1_aosp.yaml
index b0c183e..924f5b1 100644
--- a/config/lineage-17.1_aosp.yaml
+++ b/config/lineage-17.1_aosp.yaml
@@ -4,7 +4,7 @@
 # additional languages not supported by AOSP
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2020 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,681 +18,494 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-api_key_env: LINEAGE_AOSP_CROWDIN_API_KEY
-base_path_env: LINEAGE_CROWDIN_BASE_PATH_LINEAGE_17_1
-project_identifier: lineageos-aosp
-preserve_hierarchy: true
+"api_token_env": LINEAGE_CROWDIN_API_TOKEN
+"base_path_env": LINEAGE_CROWDIN_BASE_PATH_LINEAGE_17_1
+"project_id": 238011
+"preserve_hierarchy": true
 
-files:
-# Frameworks
-
-  # framework-res
-  -
-    source:      '/frameworks/base/core/res/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: &anchor
-      android_code:
-        # Arpitan - LineageOS
-        frp: frp
-        # Asturian - LineageOS
-        ast: ast-rES
-        # Breton - LineageOS
-        br-FR: br-rFR
-        # Esperanto - LineageOS
-        eo: eo
-        # Filipino - LineageOS
-        fil: fil
-        # Frisian - LineageOS
-        fy-NL: fy-rNL
-        # Irish - LineageOS
-        ga-IE: ga-rIE
-        # Kabyle - LineageOS
-        kab: kab-rDZ
-        # Kashubian - LineageOS
-        csb: csb
-        # Kurdish - LineageOS
-        ku: ku
-        # Luxembourgish - LineageOS
-        lb: lb
-        # Occitan - LineageOS
-        oc: oc
-        # Pirate English - LineageOS
-        en-PT: en-rPT
-        # Romansh - LineageOS
-        rm-CH: rm
-        # Sardinian - LineageOS
-        sc: sc-rIT
-        # Scottish Gaelic - LineageOS
-        gd: gd
-        # Spanish, Colombia - LineageOS
-        es-CO: es-rCO
-        # Spanish, Mexico - LineageOS
-        es-MX: es-rMX
-        # Sundanese - LineageOS
-        su: su
-        # Uyghur - LineageOS
-        ug: ug
-        # Venetian - LineageOS
-        vec: vec
-        # Welsh - LineageOS
-        cy: cy
-
-  # BackupRestoreConfirmation
-  -
-    source:      '/frameworks/base/packages/BackupRestoreConfirmation/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CompanionDeviceManager
-  -
-    source:      '/frameworks/base/packages/CompanionDeviceManager/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DefaultContainerService
-  -
-    source:      '/frameworks/base/packages/DefaultContainerService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ExternalStorageProvider
-  -
-    source:      '/frameworks/base/packages/ExternalStorageProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FusedLocation
-  -
-    source:      '/frameworks/base/packages/FusedLocation/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # InputDevices
-  -
-    source:      '/frameworks/base/packages/InputDevices/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # MtpDocumentsProvider
-  -
-    source:      '/frameworks/base/packages/MtpDocumentsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PrintSpooler
-  -
-    source:      '/frameworks/base/packages/PrintSpooler/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsLib
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsProvider
-  -
-    source:      '/frameworks/base/packages/SettingsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Shell
-  -
-    source:      '/frameworks/base/packages/Shell/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # StatementService
-  -
-    source:      '/frameworks/base/packages/StatementService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SystemUI
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/frameworks/base/packages/SystemUI/res-keyguard/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # VpnDialogs
-  -
-    source:      '/frameworks/base/packages/VpnDialogs/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperCropper
-  -
-    source:      '/frameworks/base/packages/WallpaperCropper/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Packages
-
-  # AudioFX
-  -
-    source:      '/packages/apps/AudioFX/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Bluetooth
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings_pbap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings_sap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Camera2
-  -
-    source:      '/packages/apps/Camera2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Camera2/res_p/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CellBroadcastReceiver
-  -
-    source:      '/packages/apps/CellBroadcastReceiver/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CertInstaller
-  -
-    source:      '/packages/apps/CertInstaller/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Contacts
-  -
-    source:      '/packages/apps/Contacts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DeskClock
-  -
-    source:      '/packages/apps/DeskClock/res/values/cities.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/DeskClock/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Dialer
-  -
-    source:      '/packages/apps/Dialer/java/com/android/contacts/common/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/about/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/app/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/app/voicemail/error/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/blocking/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callcomposer/cameraui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callcomposer/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/common/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/dialpadview/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/interactions/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/main/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/notification/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/phonenumberutil/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/postcall/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/shortcuts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/speeddial/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/theme/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/util/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/voicemailstatus/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/widget/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/answer/impl/hint/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/answer/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/audioroute/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/commontheme/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/disconnectdialog/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/hold/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/incall/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/sessiondata/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/telecomeventui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/video/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/voicemail/impl/configui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/voicemail/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DocumentsUI
-  -
-    source:      '/packages/apps/DocumentsUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Email
-  -
-    source:      '/packages/apps/Email/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # EmergencyInfo
-  -
-    source:      '/packages/apps/EmergencyInfo/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ExactCalculator
-  -
-    source:      '/packages/apps/ExactCalculator/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gallery2
-  -
-    source:      '/packages/apps/Gallery2/res/values/filtershow_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gallery2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # HTMLViewer
-  -
-    source:      '/packages/apps/HTMLViewer/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # KeyChain
-  -
-    source:      '/packages/apps/KeyChain/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ManagedProvisioning
-  -
-    source:      '/packages/apps/ManagedProvisioning/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Messaging
-  -
-    source:      '/packages/apps/Messaging/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Messaging/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Nfc
-  -
-    source:      '/packages/apps/Nfc/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PermissionController
-  -
-    source:      '/packages/apps/PermissionController/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhoneCommon
-  -
-    source:      '/packages/apps/PhoneCommon/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SafetyRegulatoryInfo
-  -
-    source:      '/packages/apps/SafetyRegulatoryInfo/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Settings
-  -
-    source:      '/packages/apps/Settings/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Settings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Stk
-  -
-    source:      '/packages/apps/Stk/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # StorageManager
-  -
-    source:      '/packages/apps/StorageManager/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/StorageManager/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Tag
-  -
-    source:      '/packages/apps/Tag/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ThemePicker
-  -
-    source:      '/packages/apps/ThemePicker/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Trebuchet
-  -
-    source:      '/packages/apps/Trebuchet/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TvSettings
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UnifiedEmail
-  -
-    source:      '/packages/apps/UnifiedEmail/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperPicker2
-  -
-    source:      '/packages/apps/WallpaperPicker2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Input methods
-
-  # LatinIME
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-action-keys.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-appname.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-config-important-notice.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-emoji-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-letter-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-talkback-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Modules
-
-  # CaptivePortalLogin
-  -
-    source:      '/packages/modules/CaptivePortalLogin/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Providers
-
-  # BlockedNumberProvider
-  -
-    source:      '/packages/providers/BlockedNumberProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # BookmarkProvider
-  -
-    source:      '/packages/providers/BookmarkProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CalendarProvider
-  -
-    source:      '/packages/providers/CalendarProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CallLogProvider
-  -
-    source:      '/packages/providers/CallLogProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ContactsProvider
-  -
-    source:      '/packages/providers/ContactsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DownloadProvider
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/providers/DownloadProvider/ui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # MediaProvider
-  -
-    source:      '/packages/providers/MediaProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TelephonyProvider
-  -
-    source:      '/packages/providers/TelephonyProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TvProvider
-  -
-    source:      '/packages/providers/TvProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UserDictionaryProvider
-  -
-    source:      '/packages/providers/UserDictionaryProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Screensavers
-
-  # Basic
-  -
-    source:      '/packages/screensavers/Basic/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhotoTable
-  -
-    source:      '/packages/screensavers/PhotoTable/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Services
-
-  # BuiltInPrintService
-  -
-    source:      '/packages/services/BuiltInPrintService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telecomm
-  -
-    source:      '/packages/services/Telecomm/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telephony
-  -
-    source:      '/packages/services/Telephony/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/services/Telephony/sip/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Wallpapers
-
-  # LivePicker
-  -
-    source:      '/packages/wallpapers/LivePicker/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
+"files": [
+    {
+        "source":      "/frameworks/base/core/res/res/values/strings.xml",
+        "translation": "/frameworks/base/core/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/BackupRestoreConfirmation/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/BackupRestoreConfirmation/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/CompanionDeviceManager/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/CompanionDeviceManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/DefaultContainerService/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/DefaultContainerService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/ExternalStorageProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/ExternalStorageProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/FusedLocation/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/FusedLocation/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/InputDevices/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/InputDevices/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/MtpDocumentsProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/MtpDocumentsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/PrintSpooler/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/PrintSpooler/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/arrays.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SettingsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/Shell/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/Shell/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/StatementService/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/StatementService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res-keyguard/values/strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res-keyguard/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/VpnDialogs/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/VpnDialogs/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/WallpaperCropper/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/WallpaperCropper/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/AudioFX/res/values/strings.xml",
+        "translation": "/packages/apps/AudioFX/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings_pbap.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings_sap.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res/values/strings.xml",
+        "translation": "/packages/apps/Camera2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res_p/values/strings.xml",
+        "translation": "/packages/apps/Camera2/res_p/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CellBroadcastReceiver/res/values/strings.xml",
+        "translation": "/packages/apps/CellBroadcastReceiver/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CertInstaller/res/values/strings.xml",
+        "translation": "/packages/apps/CertInstaller/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/strings.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/cities.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/strings.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/contacts/common/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/contacts/common/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/about/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/about/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/app/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/app/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/app/voicemail/error/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/app/voicemail/error/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/blocking/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/blocking/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callcomposer/cameraui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callcomposer/cameraui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callcomposer/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callcomposer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/common/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/common/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/dialpadview/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/dialpadview/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/enrichedcall/simulator/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/interactions/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/interactions/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/main/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/main/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/notification/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/notification/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/phonenumberutil/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/phonenumberutil/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/postcall/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/postcall/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/searchfragment/nearbyplaces/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/shortcuts/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/shortcuts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/speeddial/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/speeddial/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/theme/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/theme/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/util/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/util/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/voicemailstatus/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/voicemailstatus/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/widget/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/widget/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/answer/impl/hint/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/answer/impl/hint/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/answer/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/answer/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/audioroute/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/audioroute/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/commontheme/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/commontheme/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/disconnectdialog/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/disconnectdialog/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/hold/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/hold/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/incall/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/incall/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/sessiondata/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/sessiondata/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/telecomeventui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/telecomeventui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/video/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/video/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/voicemail/impl/configui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/voicemail/impl/configui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/voicemail/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/voicemail/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DocumentsUI/res/values/strings.xml",
+        "translation": "/packages/apps/DocumentsUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Email/res/values/strings.xml",
+        "translation": "/packages/apps/Email/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/EmergencyInfo/res/values/strings.xml",
+        "translation": "/packages/apps/EmergencyInfo/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ExactCalculator/res/values/strings.xml",
+        "translation": "/packages/apps/ExactCalculator/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/filtershow_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/HTMLViewer/res/values/strings.xml",
+        "translation": "/packages/apps/HTMLViewer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/KeyChain/res/values/strings.xml",
+        "translation": "/packages/apps/KeyChain/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ManagedProvisioning/res/values/strings.xml",
+        "translation": "/packages/apps/ManagedProvisioning/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/arrays.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/strings.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Nfc/res/values/strings.xml",
+        "translation": "/packages/apps/Nfc/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PermissionController/res/values/strings.xml",
+        "translation": "/packages/apps/PermissionController/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PhoneCommon/res/values/strings.xml",
+        "translation": "/packages/apps/PhoneCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SafetyRegulatoryInfo/res/values/strings.xml",
+        "translation": "/packages/apps/SafetyRegulatoryInfo/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/arrays.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/strings.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Stk/res/values/strings.xml",
+        "translation": "/packages/apps/Stk/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/StorageManager/res/values/arrays.xml",
+        "translation": "/packages/apps/StorageManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/StorageManager/res/values/strings.xml",
+        "translation": "/packages/apps/StorageManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Tag/res/values/strings.xml",
+        "translation": "/packages/apps/Tag/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ThemePicker/res/values/strings.xml",
+        "translation": "/packages/apps/ThemePicker/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/strings.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/arrays.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/strings.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/UnifiedEmail/res/values/strings.xml",
+        "translation": "/packages/apps/UnifiedEmail/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/WallpaperPicker2/res/values/strings.xml",
+        "translation": "/packages/apps/WallpaperPicker2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-action-keys.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-appname.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-config-important-notice.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-emoji-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-letter-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-talkback-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/modules/CaptivePortalLogin/res/values/strings.xml",
+        "translation": "/packages/modules/CaptivePortalLogin/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/BlockedNumberProvider/res/values/strings.xml",
+        "translation": "/packages/providers/BlockedNumberProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/BookmarkProvider/res/values/strings.xml",
+        "translation": "/packages/providers/BookmarkProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/CalendarProvider/res/values/strings.xml",
+        "translation": "/packages/providers/CalendarProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/CallLogProvider/res/values/strings.xml",
+        "translation": "/packages/providers/CallLogProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/ContactsProvider/res/values/strings.xml",
+        "translation": "/packages/providers/ContactsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/strings.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/ui/res/values/strings.xml",
+        "translation": "/packages/providers/DownloadProvider/ui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/MediaProvider/res/values/strings.xml",
+        "translation": "/packages/providers/MediaProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/TelephonyProvider/res/values/strings.xml",
+        "translation": "/packages/providers/TelephonyProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/TvProvider/res/values/strings.xml",
+        "translation": "/packages/providers/TvProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/UserDictionaryProvider/res/values/strings.xml",
+        "translation": "/packages/providers/UserDictionaryProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/Basic/res/values/strings.xml",
+        "translation": "/packages/screensavers/Basic/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/PhotoTable/res/values/strings.xml",
+        "translation": "/packages/screensavers/PhotoTable/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/BuiltInPrintService/res/values/strings.xml",
+        "translation": "/packages/services/BuiltInPrintService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telecomm/res/values/strings.xml",
+        "translation": "/packages/services/Telecomm/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/res/values/strings.xml",
+        "translation": "/packages/services/Telephony/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/sip/res/values/strings.xml",
+        "translation": "/packages/services/Telephony/sip/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/LivePicker/res/values/strings.xml",
+        "translation": "/packages/wallpapers/LivePicker/res/values-%android_code%/%original_file_name%"
+    }
+]
diff --git a/config/lineage-18.1.yaml b/config/lineage-18.1.yaml
index 0520786..df004f4 100644
--- a/config/lineage-18.1.yaml
+++ b/config/lineage-18.1.yaml
@@ -3,7 +3,7 @@
 # Crowdin configuration file for LineageOS
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2021 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,549 +17,250 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-api_key_env: LINEAGE_CROWDIN_API_KEY
-base_path_env: LINEAGE_CROWDIN_BASE_PATH_LINEAGE_18_1
-project_identifier: lineageos
-preserve_hierarchy: true
+"api_token_env": LINEAGE_CROWDIN_API_TOKEN
+"base_path_env": LINEAGE_CROWDIN_BASE_PATH_LINEAGE_18_1
+"project_id": 237414
+"preserve_hierarchy": true
 
-files:
-# Frameworks
-
-  # framework-res
-  -
-    source:      '/frameworks/base/core/res/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: &anchor
-      android_code:
-        # Afrikaans
-        af: af
-        # Albanian
-        sq: sq
-        # Amharic
-        am: am
-        # Arabic
-        ar: ar
-        # Armenian
-        hy-AM: hy
-        # Arpitan - LineageOS
-        frp: frp
-        # Assamese
-        as: as
-        # Asturian - LineageOS
-        ast: ast-rES
-        # Azerbaijani
-        az: az
-        # Basque
-        eu: eu
-        # Belarusian
-        be: be
-        # Bengali
-        bn: bn
-        # Bosnian
-        bs: bs
-        # Breton - LineageOS
-        br-FR: br-rFR
-        # Bulgarian
-        bg: bg
-        # Burmese
-        my: my
-        # Catalan
-        ca: ca
-        # Chinese Simplified
-        zh-CN: zh-rCN
-        # Chinese Traditional
-        zh-TW: zh-rTW
-        # Chinese Traditional, Hong Kong
-        zh-HK: zh-rHK
-        # Croatian
-        hr: hr
-        # Czech
-        cs: cs
-        # Danish
-        da: da
-        # Dutch
-        nl: nl
-        # English, Australia
-        en-AU: en-rAU
-        # English, Canada
-        en-CA: en-rCA
-        # English, India
-        en-IN: en-rIN
-        # English, United Kingdom
-        en-GB: en-rGB
-        # Esperanto - LineageOS
-        eo: eo
-        # Estonian
-        et: et
-        # Filipino - LineageOS
-        fil: fil
-        # Finnish
-        fi: fi
-        # French
-        fr: fr
-        # French, Canada
-        fr-CA: fr-rCA
-        # Frisian - LineageOS
-        fy-NL: fy-rNL
-        # Galician
-        gl: gl
-        # Georgian
-        ka: ka
-        # German
-        de: de
-        # Greek
-        el: el
-        # Gujarati
-        gu-IN: gu
-        # Hebrew
-        he: iw
-        # Hindi
-        hi: hi
-        # Hungarian
-        hu: hu
-        # Icelandic
-        is: is
-        # Indonesian
-        id: in
-        # Irish - LineageOS
-        ga-IE: ga-rIE
-        # Italian
-        it: it
-        # Japanese
-        ja: ja
-        # Kabyle - LineageOS
-        kab: kab-rDZ
-        # Kannada
-        kn: kn
-        # Kashubian - LineageOS
-        csb: csb
-        # Kazakh
-        kk: kk
-        # Khmer
-        km: km
-        # Korean
-        ko: ko
-        # Kurdish - LineageOS
-        ku: ku
-        # Kyrgyz
-        ky: ky
-        # Lao
-        lo: lo
-        # Latvian
-        lv: lv
-        # Lithuanian
-        lt: lt
-        # Luxembourgish - LineageOS
-        lb: lb
-        # Macedonian (FYROM)
-        mk: mk
-        # Malay
-        ms: ms
-        # Malayalam
-        ml-IN: ml
-        # Marathi
-        mr: mr
-        # Mongolian
-        mn: mn
-        # Nepali
-        ne-NP: ne
-        # Norwegian Bokmal
-        nb: nb
-        # Occitan - LineageOS
-        oc: oc
-        # Oriya
-        or: or
-        # Persian
-        fa: fa
-        # Pirate English - LineageOS
-        en-PT: en-rPT
-        # Polish
-        pl: pl
-        # Portuguese
-        pt-PT: pt-rPT
-        # Portuguese, Brazilian
-        pt-BR: pt-rBR
-        # Punjabi
-        pa-IN: pa
-        # Romanian
-        ro: ro
-        # Romansh - LineageOS
-        rm-CH: rm
-        # Russian
-        ru: ru
-        # Sardinian - LineageOS
-        sc: sc-rIT
-        # Scottish Gaelic - LineageOS
-        gd: gd
-        # Serbian (Cyrillic)
-        sr: sr
-        # Serbian (Latin)
-        sr-CS: b+sr+Latn
-        # Sinhala
-        si-LK: si
-        # Slovak
-        sk: sk
-        # Slovenian
-        sl: sl
-        # Spanish
-        es-ES: es
-        # Spanish, Colombia - LineageOS
-        es-CO: es-rCO
-        # Spanish, Mexico - LineageOS
-        es-MX: es-rMX
-        # Spanish, United States
-        es-US: es-rUS
-        # Sundanese - LineageOS
-        su: su
-        # Swahili
-        sw: sw
-        # Swedish
-        sv-SE: sv
-        # Tagalog
-        tl: tl
-        # Tamil
-        ta: ta
-        # Telugu
-        te: te
-        # Thai
-        th: th
-        # Turkish
-        tr: tr
-        # Ukrainian
-        uk: uk
-        # Urdu (Pakistan)
-        ur-PK: ur
-        # Uyghur - LineageOS
-        ug: ug
-        # Uzbek
-        uz: uz
-        # Venetian - LineageOS
-        vec: vec
-        # Vietnamese
-        vi: vi
-        # Welsh - LineageOS
-        cy: cy
-        # Zulu
-        zu: zu
-
-  # SettingsLib
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SystemUI
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Packages
-
-  # AudioFX
-  -
-    source:      '/packages/apps/AudioFX/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Backgrounds
-  -
-    source:      '/packages/apps/Backgrounds/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Camera2
-  -
-    source:      '/packages/apps/Camera2/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Contacts
-  -
-    source:      '/packages/apps/Contacts/res/values/lineage_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DeskClock
-  -
-    source:      '/packages/apps/DeskClock/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Dialer
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/app/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/helplines/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/helplines/res/values/helpline_categories.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/lookup/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Eleven
-  -
-    source:      '/packages/apps/Eleven/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Eleven/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Etar
-  -
-    source:      '/packages/apps/Etar/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Etar/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FMRadio
-  -
-    source:      '/packages/apps/FMRadio/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/FMRadio/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gallery2
-  -
-    source:      '/packages/apps/Gallery2/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gallery2/res/values/codeaurora_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Jelly
-  -
-    source:      '/packages/apps/Jelly/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LineageParts
-  -
-    source:      '/packages/apps/LineageParts/res/values/plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/LineageParts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Messaging
-  -
-    source:      '/packages/apps/Messaging/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Profiles
-  -
-    source:      '/packages/apps/Profiles/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Recorder
-  -
-    source:      '/packages/apps/Recorder/app/src/main/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Settings
-  -
-    source:      '/packages/apps/Settings/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Settings/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SetupWizard
-  -
-    source:      '/packages/apps/SetupWizard/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Snap
-  -
-    source:      '/packages/apps/Snap/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/res/values/qcomstrings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Snap/quickReader/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Terminal
-  -
-    source:      '/packages/apps/Terminal/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Terminal/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Trebuchet
-  -
-    source:      '/packages/apps/Trebuchet/res/values/lineage_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Updater
-  -
-    source:      '/packages/apps/Updater/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Input methods
-
-  # LatinIME
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Providers
-
-  # DownloadProvider
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/cm_plurals.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Services
-
-  # Mms
-  -
-    source:      '/packages/services/Mms/res/values/cm_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Lineage SDK
-
-  # Lineage SDK
-  -
-    source:      '/lineage-sdk/lineage/res/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # LineageSettingsProvider
-  -
-    source:      '/lineage-sdk/packages/LineageSettingsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Device specific
-
-  # kuntao devicesettings
-  -
-    source:      '/device/lenovo/kuntao/devicesettings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # oneplus sm8150-common camera helper
-  -
-    source:      '/device/oneplus/sm8150-common/camera_helper/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # oppo common configpanel
-  -
-    source:      '/device/oppo/common/configpanel/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # samsung AdvancedDisplay
-  -
-    source:      '/hardware/samsung/AdvancedDisplay/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/hardware/samsung/AdvancedDisplay/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # sony ModemConfig
-  -
-    source:      '/hardware/sony/SonyOpenTelephony/ModemConfig/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ElmyraService
-  -
-    source:      '/packages/apps/ElmyraService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # resources devicesettings
-  -
-    source:      '/packages/resources/devicesettings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FlipFlap
-  -
-    source:      '/packages/apps/FlipFlap/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # fmapp2
-  -
-    source:      '/vendor/qcom/opensource/fm-commonsys/fmapp2/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/vendor/qcom/opensource/fm-commonsys/fmapp2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
\ No newline at end of file
+"files": [
+    {
+        "source":      "/frameworks/base/core/res/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/core/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/cm_strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/AudioFX/res/values/cm_strings.xml",
+        "translation": "/packages/apps/AudioFX/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Backgrounds/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Backgrounds/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Camera2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/lineage_strings.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/cm_strings.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/app/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/app/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_arrays.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callstats/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/helplines/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/helplines/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/helplines/res/values/helpline_categories.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/helplines/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/lookup/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/lookup/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Eleven/res/values/plurals.xml",
+        "translation": "/packages/apps/Eleven/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Eleven/res/values/strings.xml",
+        "translation": "/packages/apps/Eleven/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Etar/res/values/arrays.xml",
+        "translation": "/packages/apps/Etar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Etar/res/values/strings.xml",
+        "translation": "/packages/apps/Etar/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FMRadio/res/values/cm_strings.xml",
+        "translation": "/packages/apps/FMRadio/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FMRadio/res/values/strings.xml",
+        "translation": "/packages/apps/FMRadio/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/codeaurora_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Jelly/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Jelly/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/LineageParts/res/values/plurals.xml",
+        "translation": "/packages/apps/LineageParts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/LineageParts/res/values/strings.xml",
+        "translation": "/packages/apps/LineageParts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Profiles/res/values/strings.xml",
+        "translation": "/packages/apps/Profiles/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Recorder/app/src/main/res/values/strings.xml",
+        "translation": "/packages/apps/Recorder/app/src/main/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/cm_plurals.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SetupWizard/res/values/strings.xml",
+        "translation": "/packages/apps/SetupWizard/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/cm_strings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/qcomstrings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/res/values/strings.xml",
+        "translation": "/packages/apps/Snap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Snap/quickReader/res/values/strings.xml",
+        "translation": "/packages/apps/Snap/quickReader/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Terminal/res/values/arrays.xml",
+        "translation": "/packages/apps/Terminal/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Terminal/res/values/strings.xml",
+        "translation": "/packages/apps/Terminal/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/lineage_strings.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Updater/res/values/strings.xml",
+        "translation": "/packages/apps/Updater/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/cm_strings.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/cm_plurals.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/cm_strings.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Mms/res/values/cm_strings.xml",
+        "translation": "/packages/services/Mms/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/lineage-sdk/lineage/res/res/values/strings.xml",
+        "translation": "/lineage-sdk/lineage/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/lineage-sdk/packages/LineageSettingsProvider/res/values/strings.xml",
+        "translation": "/lineage-sdk/packages/LineageSettingsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/lenovo/kuntao/devicesettings/res/values/strings.xml",
+        "translation": "/device/lenovo/kuntao/devicesettings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/oneplus/sm8150-common/camera_helper/res/values/strings.xml",
+        "translation": "/device/oneplus/sm8150-common/camera_helper/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/device/oppo/common/configpanel/res/values/strings.xml",
+        "translation": "/device/oppo/common/configpanel/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/samsung/AdvancedDisplay/res/values/arrays.xml",
+        "translation": "/hardware/samsung/AdvancedDisplay/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/samsung/AdvancedDisplay/res/values/strings.xml",
+        "translation": "/hardware/samsung/AdvancedDisplay/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/hardware/sony/SonyOpenTelephony/ModemConfig/res/values/strings.xml",
+        "translation": "/hardware/sony/SonyOpenTelephony/ModemConfig/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ElmyraService/res/values/strings.xml",
+        "translation": "/packages/apps/ElmyraService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/resources/devicesettings/res/values/strings.xml",
+        "translation": "/packages/resources/devicesettings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/FlipFlap/res/values/strings.xml",
+        "translation": "/packages/apps/FlipFlap/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/vendor/qcom/opensource/fm-commonsys/fmapp2/res/values/arrays.xml",
+        "translation": "/vendor/qcom/opensource/fm-commonsys/fmapp2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/vendor/qcom/opensource/fm-commonsys/fmapp2/res/values/strings.xml",
+        "translation": "/vendor/qcom/opensource/fm-commonsys/fmapp2/res/values-%android_code%/%original_file_name%"
+    }
+]
diff --git a/config/lineage-18.1_aosp.yaml b/config/lineage-18.1_aosp.yaml
index 6b40b02..25d359e 100644
--- a/config/lineage-18.1_aosp.yaml
+++ b/config/lineage-18.1_aosp.yaml
@@ -4,7 +4,7 @@
 # additional languages not supported by AOSP
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2021 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,669 +18,486 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-api_key_env: LINEAGE_AOSP_CROWDIN_API_KEY
-base_path_env: LINEAGE_CROWDIN_BASE_PATH_LINEAGE_18_1
-project_identifier: lineageos-aosp
-preserve_hierarchy: true
+"api_token_env": LINEAGE_CROWDIN_API_TOKEN
+"base_path_env": LINEAGE_CROWDIN_BASE_PATH_LINEAGE_18_1
+"project_id": 238011
+"preserve_hierarchy": true
 
-files:
-# Frameworks
-
-  # framework-res
-  -
-    source:      '/frameworks/base/core/res/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: &anchor
-      android_code:
-        # Arpitan - LineageOS
-        frp: frp
-        # Asturian - LineageOS
-        ast: ast-rES
-        # Breton - LineageOS
-        br-FR: br-rFR
-        # Esperanto - LineageOS
-        eo: eo
-        # Filipino - LineageOS
-        fil: fil
-        # Frisian - LineageOS
-        fy-NL: fy-rNL
-        # Irish - LineageOS
-        ga-IE: ga-rIE
-        # Kabyle - LineageOS
-        kab: kab-rDZ
-        # Kashubian - LineageOS
-        csb: csb
-        # Kurdish - LineageOS
-        ku: ku
-        # Luxembourgish - LineageOS
-        lb: lb
-        # Occitan - LineageOS
-        oc: oc
-        # Pirate English - LineageOS
-        en-PT: en-rPT
-        # Romansh - LineageOS
-        rm-CH: rm
-        # Sardinian - LineageOS
-        sc: sc-rIT
-        # Scottish Gaelic - LineageOS
-        gd: gd
-        # Spanish, Colombia - LineageOS
-        es-CO: es-rCO
-        # Spanish, Mexico - LineageOS
-        es-MX: es-rMX
-        # Sundanese - LineageOS
-        su: su
-        # Uyghur - LineageOS
-        ug: ug
-        # Venetian - LineageOS
-        vec: vec
-        # Welsh - LineageOS
-        cy: cy
-
-  # BackupRestoreConfirmation
-  -
-    source:      '/frameworks/base/packages/BackupRestoreConfirmation/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CompanionDeviceManager
-  -
-    source:      '/frameworks/base/packages/CompanionDeviceManager/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DefaultContainerService
-  -
-    source:      '/frameworks/base/packages/DefaultContainerService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ExternalStorageProvider
-  -
-    source:      '/frameworks/base/packages/ExternalStorageProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # FusedLocation
-  -
-    source:      '/frameworks/base/packages/FusedLocation/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # InputDevices
-  -
-    source:      '/frameworks/base/packages/InputDevices/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # MtpDocumentsProvider
-  -
-    source:      '/frameworks/base/packages/MtpDocumentsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PrintSpooler
-  -
-    source:      '/frameworks/base/packages/PrintSpooler/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsLib
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/frameworks/base/packages/SettingsLib/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SettingsProvider
-  -
-    source:      '/frameworks/base/packages/SettingsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Shell
-  -
-    source:      '/frameworks/base/packages/Shell/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # StatementService
-  -
-    source:      '/frameworks/base/packages/StatementService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SystemUI
-  -
-    source:      '/frameworks/base/packages/SystemUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/frameworks/base/packages/SystemUI/res-keyguard/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # VpnDialogs
-  -
-    source:      '/frameworks/base/packages/VpnDialogs/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperCropper
-  -
-    source:      '/frameworks/base/packages/WallpaperCropper/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Packages
-
-  # AudioFX
-  -
-    source:      '/packages/apps/AudioFX/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Bluetooth
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings_pbap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Bluetooth/res/values/strings_sap.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Camera2
-  -
-    source:      '/packages/apps/Camera2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Camera2/res_p/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CellBroadcastReceiver
-  -
-    source:      '/packages/apps/CellBroadcastReceiver/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CertInstaller
-  -
-    source:      '/packages/apps/CertInstaller/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Contacts
-  -
-    source:      '/packages/apps/Contacts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DeskClock
-  -
-    source:      '/packages/apps/DeskClock/res/values/cities.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/DeskClock/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Dialer
-  -
-    source:      '/packages/apps/Dialer/java/com/android/contacts/common/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/about/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/app/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/app/voicemail/error/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/blocking/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callcomposer/cameraui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/callcomposer/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/common/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/dialpadview/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/interactions/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/main/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/notification/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/phonenumberutil/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/postcall/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/shortcuts/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/speeddial/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/theme/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/util/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/voicemailstatus/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/dialer/widget/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/answer/impl/hint/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/answer/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/audioroute/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/commontheme/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/disconnectdialog/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/hold/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/incall/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/sessiondata/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/telecomeventui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/incallui/video/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/voicemail/impl/configui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Dialer/java/com/android/voicemail/impl/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DocumentsUI
-  -
-    source:      '/packages/apps/DocumentsUI/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # EmergencyInfo
-  -
-    source:      '/packages/apps/EmergencyInfo/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ExactCalculator
-  -
-    source:      '/packages/apps/ExactCalculator/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Gallery2
-  -
-    source:      '/packages/apps/Gallery2/res/values/filtershow_strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Gallery2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # HTMLViewer
-  -
-    source:      '/packages/apps/HTMLViewer/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # KeyChain
-  -
-    source:      '/packages/apps/KeyChain/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ManagedProvisioning
-  -
-    source:      '/packages/apps/ManagedProvisioning/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Messaging
-  -
-    source:      '/packages/apps/Messaging/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Messaging/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Nfc
-  -
-    source:      '/packages/apps/Nfc/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PermissionController
-  -
-    source:      '/packages/apps/PermissionController/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhoneCommon
-  -
-    source:      '/packages/apps/PhoneCommon/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # SafetyRegulatoryInfo
-  -
-    source:      '/packages/apps/SafetyRegulatoryInfo/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Settings
-  -
-    source:      '/packages/apps/Settings/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/Settings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Stk
-  -
-    source:      '/packages/apps/Stk/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # StorageManager
-  -
-    source:      '/packages/apps/StorageManager/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/StorageManager/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Tag
-  -
-    source:      '/packages/apps/Tag/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ThemePicker
-  -
-    source:      '/packages/apps/ThemePicker/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Trebuchet
-  -
-    source:      '/packages/apps/Trebuchet/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TvSettings
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/arrays.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/apps/TvSettings/Settings/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # WallpaperPicker2
-  -
-    source:      '/packages/apps/WallpaperPicker2/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Input methods
-
-  # LatinIME
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-action-keys.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-appname.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-config-important-notice.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-emoji-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-letter-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings-talkback-descriptions.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/inputmethods/LatinIME/java/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Modules
-
-  # CaptivePortalLogin
-  -
-    source:      '/packages/modules/CaptivePortalLogin/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Providers
-
-  # BlockedNumberProvider
-  -
-    source:      '/packages/providers/BlockedNumberProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # BookmarkProvider
-  -
-    source:      '/packages/providers/BookmarkProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CalendarProvider
-  -
-    source:      '/packages/providers/CalendarProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # CallLogProvider
-  -
-    source:      '/packages/providers/CallLogProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # ContactsProvider
-  -
-    source:      '/packages/providers/ContactsProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # DownloadProvider
-  -
-    source:      '/packages/providers/DownloadProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/providers/DownloadProvider/ui/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # MediaProvider
-  -
-    source:      '/packages/providers/MediaProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TelephonyProvider
-  -
-    source:      '/packages/providers/TelephonyProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # TvProvider
-  -
-    source:      '/packages/providers/TvProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # UserDictionaryProvider
-  -
-    source:      '/packages/providers/UserDictionaryProvider/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Screensavers
-
-  # Basic
-  -
-    source:      '/packages/screensavers/Basic/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # PhotoTable
-  -
-    source:      '/packages/screensavers/PhotoTable/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Services
-
-  # BuiltInPrintService
-  -
-    source:      '/packages/services/BuiltInPrintService/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telecomm
-  -
-    source:      '/packages/services/Telecomm/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-  # Telephony
-  -
-    source:      '/packages/services/Telephony/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-  -
-    source:      '/packages/services/Telephony/sip/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
-
-# Wallpapers
-
-  # LivePicker
-  -
-    source:      '/packages/wallpapers/LivePicker/res/values/strings.xml'
-    translation: '/%original_path%-%android_code%/%original_file_name%'
-    languages_mapping: *anchor
+"files": [
+    {
+        "source":      "/frameworks/base/core/res/res/values/strings.xml",
+        "translation": "/frameworks/base/core/res/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/BackupRestoreConfirmation/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/BackupRestoreConfirmation/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/CompanionDeviceManager/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/CompanionDeviceManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/DefaultContainerService/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/DefaultContainerService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/ExternalStorageProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/ExternalStorageProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/FusedLocation/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/FusedLocation/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/InputDevices/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/InputDevices/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/MtpDocumentsProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/MtpDocumentsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/PrintSpooler/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/PrintSpooler/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/arrays.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsLib/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SettingsLib/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SettingsProvider/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SettingsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/Shell/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/Shell/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/StatementService/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/StatementService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/SystemUI/res-keyguard/values/strings.xml",
+        "translation": "/frameworks/base/packages/SystemUI/res-keyguard/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/VpnDialogs/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/VpnDialogs/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/frameworks/base/packages/WallpaperCropper/res/values/strings.xml",
+        "translation": "/frameworks/base/packages/WallpaperCropper/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/AudioFX/res/values/strings.xml",
+        "translation": "/packages/apps/AudioFX/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings_pbap.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Bluetooth/res/values/strings_sap.xml",
+        "translation": "/packages/apps/Bluetooth/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res/values/strings.xml",
+        "translation": "/packages/apps/Camera2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Camera2/res_p/values/strings.xml",
+        "translation": "/packages/apps/Camera2/res_p/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CellBroadcastReceiver/res/values/strings.xml",
+        "translation": "/packages/apps/CellBroadcastReceiver/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/CertInstaller/res/values/strings.xml",
+        "translation": "/packages/apps/CertInstaller/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Contacts/res/values/strings.xml",
+        "translation": "/packages/apps/Contacts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/cities.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DeskClock/res/values/strings.xml",
+        "translation": "/packages/apps/DeskClock/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/contacts/common/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/contacts/common/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/about/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/about/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/app/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/app/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/app/voicemail/error/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/app/voicemail/error/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/blocking/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/blocking/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callcomposer/cameraui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callcomposer/cameraui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/callcomposer/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/callcomposer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calldetails/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/calllogutils/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/common/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/common/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/dialpadview/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/dialpadview/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/enrichedcall/simulator/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/interactions/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/interactions/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/main/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/main/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/notification/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/notification/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/phonenumberutil/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/phonenumberutil/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/postcall/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/postcall/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/searchfragment/nearbyplaces/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/shortcuts/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/shortcuts/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/speeddial/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/speeddial/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/theme/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/theme/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/util/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/util/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/voicemailstatus/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/voicemailstatus/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/dialer/widget/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/dialer/widget/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/answer/impl/hint/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/answer/impl/hint/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/answer/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/answer/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/audioroute/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/audioroute/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/commontheme/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/commontheme/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/contactgrid/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/disconnectdialog/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/disconnectdialog/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/hold/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/hold/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/incall/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/incall/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/sessiondata/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/sessiondata/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/telecomeventui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/telecomeventui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/incallui/video/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/incallui/video/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/voicemail/impl/configui/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/voicemail/impl/configui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Dialer/java/com/android/voicemail/impl/res/values/strings.xml",
+        "translation": "/packages/apps/Dialer/java/com/android/voicemail/impl/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/DocumentsUI/res/values/strings.xml",
+        "translation": "/packages/apps/DocumentsUI/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/EmergencyInfo/res/values/strings.xml",
+        "translation": "/packages/apps/EmergencyInfo/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ExactCalculator/res/values/strings.xml",
+        "translation": "/packages/apps/ExactCalculator/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/filtershow_strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Gallery2/res/values/strings.xml",
+        "translation": "/packages/apps/Gallery2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/HTMLViewer/res/values/strings.xml",
+        "translation": "/packages/apps/HTMLViewer/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/KeyChain/res/values/strings.xml",
+        "translation": "/packages/apps/KeyChain/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ManagedProvisioning/res/values/strings.xml",
+        "translation": "/packages/apps/ManagedProvisioning/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/arrays.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Messaging/res/values/strings.xml",
+        "translation": "/packages/apps/Messaging/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Nfc/res/values/strings.xml",
+        "translation": "/packages/apps/Nfc/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PermissionController/res/values/strings.xml",
+        "translation": "/packages/apps/PermissionController/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/PhoneCommon/res/values/strings.xml",
+        "translation": "/packages/apps/PhoneCommon/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/SafetyRegulatoryInfo/res/values/strings.xml",
+        "translation": "/packages/apps/SafetyRegulatoryInfo/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/arrays.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Settings/res/values/strings.xml",
+        "translation": "/packages/apps/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Stk/res/values/strings.xml",
+        "translation": "/packages/apps/Stk/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/StorageManager/res/values/arrays.xml",
+        "translation": "/packages/apps/StorageManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/StorageManager/res/values/strings.xml",
+        "translation": "/packages/apps/StorageManager/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Tag/res/values/strings.xml",
+        "translation": "/packages/apps/Tag/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/ThemePicker/res/values/strings.xml",
+        "translation": "/packages/apps/ThemePicker/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/Trebuchet/res/values/strings.xml",
+        "translation": "/packages/apps/Trebuchet/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/arrays.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/TvSettings/Settings/res/values/strings.xml",
+        "translation": "/packages/apps/TvSettings/Settings/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/apps/WallpaperPicker2/res/values/strings.xml",
+        "translation": "/packages/apps/WallpaperPicker2/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-action-keys.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-appname.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-config-important-notice.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-emoji-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-letter-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings-talkback-descriptions.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/inputmethods/LatinIME/java/res/values/strings.xml",
+        "translation": "/packages/inputmethods/LatinIME/java/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/modules/CaptivePortalLogin/res/values/strings.xml",
+        "translation": "/packages/modules/CaptivePortalLogin/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/BlockedNumberProvider/res/values/strings.xml",
+        "translation": "/packages/providers/BlockedNumberProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/BookmarkProvider/res/values/strings.xml",
+        "translation": "/packages/providers/BookmarkProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/CalendarProvider/res/values/strings.xml",
+        "translation": "/packages/providers/CalendarProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/CallLogProvider/res/values/strings.xml",
+        "translation": "/packages/providers/CallLogProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/ContactsProvider/res/values/strings.xml",
+        "translation": "/packages/providers/ContactsProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/res/values/strings.xml",
+        "translation": "/packages/providers/DownloadProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/DownloadProvider/ui/res/values/strings.xml",
+        "translation": "/packages/providers/DownloadProvider/ui/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/MediaProvider/res/values/strings.xml",
+        "translation": "/packages/providers/MediaProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/TelephonyProvider/res/values/strings.xml",
+        "translation": "/packages/providers/TelephonyProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/TvProvider/res/values/strings.xml",
+        "translation": "/packages/providers/TvProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/providers/UserDictionaryProvider/res/values/strings.xml",
+        "translation": "/packages/providers/UserDictionaryProvider/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/Basic/res/values/strings.xml",
+        "translation": "/packages/screensavers/Basic/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/screensavers/PhotoTable/res/values/strings.xml",
+        "translation": "/packages/screensavers/PhotoTable/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/BuiltInPrintService/res/values/strings.xml",
+        "translation": "/packages/services/BuiltInPrintService/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telecomm/res/values/strings.xml",
+        "translation": "/packages/services/Telecomm/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/res/values/strings.xml",
+        "translation": "/packages/services/Telephony/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/services/Telephony/sip/res/values/strings.xml",
+        "translation": "/packages/services/Telephony/sip/res/values-%android_code%/%original_file_name%"
+    },
+    {
+        "source":      "/packages/wallpapers/LivePicker/res/values/strings.xml",
+        "translation": "/packages/wallpapers/LivePicker/res/values-%android_code%/%original_file_name%"
+    }
+]
diff --git a/crowdin_sync.py b/crowdin_sync.py
index b72dd02..3cb4ec1 100755
--- a/crowdin_sync.py
+++ b/crowdin_sync.py
@@ -6,7 +6,7 @@
 # directly to LineageOS' Gerrit.
 #
 # Copyright (C) 2014-2016 The CyanogenMod Project
-# Copyright (C) 2017-2020 The LineageOS Project
+# Copyright (C) 2017-2022 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@
 # ################################# IMPORTS ################################## #
 
 import argparse
+import itertools
 import json
 import git
 import os
@@ -30,7 +31,8 @@
 import shutil
 import subprocess
 import sys
-import yaml
+import time
+import threading
 
 from lxml import etree
 from signal import signal, SIGINT
@@ -39,11 +41,13 @@
 
 _DIR = os.path.dirname(os.path.realpath(__file__))
 _COMMITS_CREATED = False
+_DONE = False
 
 # ################################ FUNCTIONS ################################# #
 
 
-def run_subprocess(cmd, silent=False):
+def run_subprocess(cmd, silent=False, show_spinner=False):
+    t = start_spinner(show_spinner)
     p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                          universal_newlines=True)
     comm = p.communicate()
@@ -55,81 +59,66 @@
               "stdout: %s\n"
               "stderr: %s" % (cmd, exit_code, comm[0], comm[1]),
               file=sys.stderr)
+    stop_spinner(t)
     return comm, exit_code
 
 
-def add_target_paths(config_files, repo, base_path, project_path):
-    # Add or remove the files given in the config files to the commit
-    count = 0
-    file_paths = []
-    for f in config_files:
-        fh = open(f, "r")
-        try:
-            config = yaml.safe_load(fh)
-            for tf in config['files']:
-                if project_path in tf['source']:
-                    target_path = tf['translation']
-                    lang_codes = tf['languages_mapping']['android_code']
-                    for l in lang_codes:
-                        lpath = get_target_path(tf['translation'], tf['source'],
-                            lang_codes[l], project_path)
-                        file_paths.append(lpath)
-        except yaml.YAMLError as e:
-            print(e, '\n Could not parse YAML.')
-            exit()
-        fh.close()
+def start_spinner(show_spinner):
+    global _DONE
+    _DONE = False
+    if not show_spinner:
+        return None
+    t = threading.Thread(target=spin_cursor)
+    t.start()
+    return t
 
-    # Strip all comments
-    for f in file_paths:
-        clean_xml_file(base_path, project_path, f, repo)
+
+def stop_spinner(t):
+    global _DONE
+    if t is None:
+        return
+    _DONE = True
+    t.join(1)
+
+
+def spin_cursor():
+    global _DONE
+    spinner = itertools.cycle([".", "..", "...", "....", "....."])
+    while not _DONE:
+        sys.stdout.write("\x1b[1K\r")
+        output = next(spinner)
+        sys.stdout.write(output)
+        sys.stdout.flush()
+        time.sleep(0.5)
+    sys.stdout.write("\x1b[1K\r     ")
+
+
+def add_to_commit(extracted_files, repo, project_path):
+    # Add or remove the files extracted by the download command to the commit
+    count = 0
 
     # Modified and untracked files
     modified = repo.git.ls_files(m=True, o=True)
-    for m in modified.split('\n'):
-        if m in file_paths:
+    for m in modified.split("\n"):
+        path = os.path.join(project_path, m)
+        if path in extracted_files:
             repo.git.add(m)
             count += 1
 
     deleted = repo.git.ls_files(d=True)
-    for d in deleted.split('\n'):
-        if d in file_paths:
+    for d in deleted.split("\n"):
+        path = os.path.join(project_path, d)
+        if path in extracted_files:
             repo.git.rm(d)
             count += 1
 
     return count
 
 
-def split_path(path):
-    # Split the given string to path and filename
-    if '/' in path:
-        original_file_name = path[1:][path.rfind("/"):]
-        original_path = path[:path.rfind("/")]
-    else:
-        original_file_name = path
-        original_path = ''
-
-    return original_path, original_file_name
-
-
-def get_target_path(pattern, source, lang, project_path):
-    # Make strings like '/%original_path%-%android_code%/%original_file_name%' valid file paths
-    # based on the source string's path
-    original_path, original_file_name = split_path(source)
-
-    target_path = pattern #.lstrip('/')
-    target_path = target_path.replace('%original_path%', original_path)
-    target_path = target_path.replace('%android_code%', lang)
-    target_path = target_path.replace('%original_file_name%', original_file_name)
-    target_path = target_path.replace(project_path, '')
-    target_path = target_path.lstrip('/')
-    return target_path
-
-
-def clean_xml_file(base_path, project_path, filename, repo):
-    path = base_path + '/' + project_path + '/' + filename
-
+def clean_xml_file(path, repo):
     # We don't want to create every file, just work with those already existing
     if not os.path.isfile(path):
+        print(f"Called clean_xml_file, but not a file: {path}")
         return
 
     try:
@@ -150,7 +139,7 @@
     try:
         tree = etree.fromstring(XML)
     except etree.XMLSyntaxError as err:
-        print(f'{filename}: XML Error: {err.error_log}')
+        print(f'{path}: XML Error: {err.error_log}')
         filename, ext = os.path.splitext(path)
         if ext == '.xml':
             reset_file(path, repo)
@@ -219,6 +208,12 @@
     if len(contentList) == 0:
         print(f'\nRemoving {path}')
         os.remove(path)
+        # If that was the last file in the folder, we need to remove the folder as well
+        dir_name = os.path.dirname(path)
+        if os.path.isdir(dir_name):
+            if not os.listdir(dir_name):
+                print(f"Removing {dir_name}")
+                os.rmdir(dir_name)
 
 
 # For files we can't process due to errors, create a backup
@@ -249,22 +244,25 @@
     repo.git.checkout(filepath)
 
 
-def push_as_commit(config_files, base_path, path, name, branch, username):
+def push_as_commit(extracted_files, base_path, project_path, project_name, branch, username):
     global _COMMITS_CREATED
-    print(f'\nCommitting {name} on branch {branch}: ', end='')
+    print(f'\nCommitting {project_name} on branch {branch}: ')
 
     # Get path
-    project_path = path
-    path = os.path.join(base_path, path)
+    path = os.path.join(base_path, project_path)
     if not path.endswith('.git'):
         path = os.path.join(path, '.git')
 
     # Create repo object
     repo = git.Repo(path)
 
-    # Add all files to commit
-    count = add_target_paths(config_files, repo, base_path, project_path)
+    # Strip all comments, find incomplete product strings and remove empty files
+    for f in extracted_files:
+        if f.startswith(project_path):
+            clean_xml_file(os.path.join(base_path, f), repo)
 
+    # Add all files to commit
+    count = add_to_commit(extracted_files, repo, project_path)
     if count == 0:
         print('Nothing to commit')
         return
@@ -278,9 +276,9 @@
 
     # Push commit
     try:
-        repo.git.push(f'ssh://{username}@review.lineageos.org:29418/{name}',
+        repo.git.push(f'ssh://{username}@review.lineageos.org:29418/{project_name}',
                       f'HEAD:refs/for/{branch}%topic=translation')
-        print('Success')
+        print('Successfully pushed!')
     except Exception as e:
         print(e, '\nFailed to push!', file=sys.stderr)
         return
@@ -411,92 +409,58 @@
 
 # ################################### MAIN ################################### #
 
-
-def upload_sources_crowdin(branch, config, crowdin_path):
-    if config:
-        print('\nUploading sources to Crowdin (custom config)')
-        check_run([crowdin_path,
-                   f'--config={_DIR}/config/{config}',
-                   'upload', 'sources', f'--branch={branch}'])
-    else:
-        print('\nUploading sources to Crowdin (AOSP supported languages)')
-        check_run([crowdin_path,
-                   f'--config={_DIR}/config/{branch}.yaml',
-                   'upload', 'sources', f'--branch={branch}'])
-
-        print('\nUploading sources to Crowdin (non-AOSP supported languages)')
-        check_run([crowdin_path,
-                   f'--config={_DIR}/config/{branch}_aosp.yaml',
-                   'upload', 'sources', f'--branch={branch}'])
-
-
-def upload_translations_crowdin(branch, config, crowdin_path):
-    if config:
-        print('\nUploading translations to Crowdin (custom config)')
-        check_run([crowdin_path,
-                   f'--config={_DIR}/config/{config}',
-                   'upload', 'translations', f'--branch={branch}',
-                   '--no-import-duplicates', '--import-eq-suggestions',
-                   '--auto-approve-imported'])
-    else:
-        print('\nUploading translations to Crowdin '
-              '(AOSP supported languages)')
-        check_run([crowdin_path,
-                   f'--config={_DIR}/config/{branch}.yaml',
-                   'upload', 'translations', f'--branch={branch}',
-                   '--no-import-duplicates', '--import-eq-suggestions',
-                   '--auto-approve-imported'])
-
-        print('\nUploading translations to Crowdin '
-              '(non-AOSP supported languages)')
-        check_run([crowdin_path,
-                   f'--config={_DIR}/config/{branch}_aosp.yaml',
-                   'upload', 'translations', f'--branch={branch}',
-                   '--no-import-duplicates', '--import-eq-suggestions',
-                   '--auto-approve-imported'])
-
-
-def download_crowdin(base_path, branch, xml, username, config, crowdin_path):
-    if config:
-        print('\nDownloading translations from Crowdin (custom config)')
-        check_run([crowdin_path,
-                   f'--config={_DIR}/config/{config}',
-                   'download', '--branch=%s' % branch])
-    else:
-        print('\nDownloading translations from Crowdin '
-              '(AOSP supported languages)')
-        check_run([crowdin_path,
-                   f'--config={_DIR}/config/{branch}.yaml',
-                   'download', f'--branch={branch}'])
-
-        print('\nDownloading translations from Crowdin '
-              '(non-AOSP supported languages)')
-        check_run([crowdin_path,
-                   f'--config={_DIR}/config/{branch}_aosp.yaml',
-                   'download', f'--branch={branch}'])
-
-    print('\nCreating a list of pushable translations')
-    # Get all files that Crowdin pushed
-    paths = []
-    if config:
-        files = [f'{_DIR}/config/{config}']
-    else:
-        files = [f'{_DIR}/config/{branch}.yaml',
-                 f'{_DIR}/config/{branch}_aosp.yaml']
-    for c in files:
-        cmd = [crowdin_path, f'--config={c}', 'list', 'project',
-               f'--branch={branch}']
-        comm, ret = run_subprocess(cmd)
+def upload_sources_crowdin(branch, config_dict, crowdin_path):
+    global _COMMITS_CREATED
+    for i, cfg in enumerate(config_dict["files"]):
+        print(f"\nUploading sources to Crowdin ({config_dict['headers'][i]})")
+        cmd = [
+            crowdin_path,
+            'upload', 'sources', f'--branch={branch}',
+            f'--config={cfg}',
+        ]
+        comm, ret = run_subprocess(cmd, show_spinner=True)
         if ret != 0:
-            sys.exit(ret)
-        for p in str(comm[0]).split("\n"):
-            paths.append(p.replace(f'/{branch}', ''))
+            print(f"Failed to upload:\n{comm[1]}", file=sys.stderr)
+            sys.exit(1)
+    _COMMITS_CREATED = True
 
-    print('\nUploading translations to Gerrit')
+
+def upload_translations_crowdin(branch, config_dict, crowdin_path):
+    for i, cfg in enumerate(config_dict["files"]):
+        print(f"\nUploading translations to Crowdin ({config_dict['headers'][i]})")
+        cmd = [
+            crowdin_path,
+            'upload', 'translations', f'--branch={branch}',
+            '--no-import-duplicates', '--import-eq-suggestions',
+            '--auto-approve-imported',
+            f'--config={cfg}',
+        ]
+        comm, ret = run_subprocess(cmd, show_spinner=True)
+        if ret != 0:
+            print(f"Failed to upload:\n{comm[1]}", file=sys.stderr)
+            sys.exit(1)
+
+
+def download_crowdin(base_path, branch, xml, username, config_dict, crowdin_path):
+    extracted = []
+    for i, cfg in enumerate(config_dict["files"]):
+        print(f"\nDownloading translations from Crowdin ({config_dict['headers'][i]})")
+        cmd = [crowdin_path, "download", f"--branch={branch}", f"--config={cfg}"]
+        comm, ret = run_subprocess(cmd, show_spinner=True)
+        if ret != 0:
+            print(f"Failed to download:\n{comm[1]}", file=sys.stderr)
+            sys.exit(1)
+        extracted += get_extracted_files(comm[0], branch)
+
+    upload_translations_gerrit(extracted, xml, base_path, branch, username)
+
+
+def upload_translations_gerrit(extracted, xml, base_path, branch, username):
+    print("\nUploading translations to Gerrit")
     items = [x for xmlfile in xml for x in xmlfile.findall("//project")]
     all_projects = []
 
-    for path in paths:
+    for path in extracted:
         path = path.strip()
         if not path:
             continue
@@ -509,60 +473,75 @@
         # but there are special cases where /res is part of the repo name as well
         parts = path.split("/res")
         if len(parts) == 2:
-            result = parts[0]
+            project_path = parts[0]
         elif len(parts) == 3:
-            result = parts[0] + '/res' + parts[1]
+            project_path = parts[0] + "/res" + parts[1]
         else:
             print(f'WARNING: Splitting the path not successful for [{path}], skipping')
             continue
 
-        result = result.strip('/')
-        if result == path.strip('/'):
-            print(f'WARNING: Cannot determine project root dir of [{path}], skipping.')
+        project_path = project_path.strip("/")
+        if project_path == path.strip("/"):
+            print(f"WARNING: Cannot determine project root dir of [{path}], skipping.")
             continue
 
-        if result in all_projects:
+        if project_path in all_projects:
             continue
 
         # When a project has multiple translatable files, Crowdin will
         # give duplicates.
         # We don't want that (useless empty commits), so we save each
         # project in all_projects and check if it's already in there.
-        all_projects.append(result)
+        all_projects.append(project_path)
 
         # Search android/default.xml or config/%(branch)_extra_packages.xml
         # for the project's name
-        resultPath = None
-        resultProject = None
+        result_path = None
+        result_project = None
         for project in items:
-            path = project.get('path')
-            if not (result + '/').startswith(path +'/'):
+            path = project.get("path")
+            if not (project_path + "/").startswith(path + "/"):
                 continue
             # We want the longest match, so projects in subfolders of other projects are also
             # taken into account
-            if resultPath is None or len(path) > len(resultPath):
-                resultPath = path
-                resultProject = project
+            if result_path is None or len(path) > len(result_path):
+                result_path = path
+                result_project = project
 
         # Just in case no project was found
-        if resultPath is None:
+        if result_path is None:
             continue
 
-        if result != resultPath:
-            if resultPath in all_projects:
+        if project_path != result_path:
+            if result_path in all_projects:
                 continue
-            result = resultPath
-            all_projects.append(result)
+            project_path = result_path
+            all_projects.append(project_path)
 
-        br = resultProject.get('revision') or branch
+        branch = result_project.get("revision") or branch
+        project_name = result_project.get("name")
 
-        push_as_commit(files, base_path, result,
-                       resultProject.get('name'), br, username)
+        push_as_commit(extracted, base_path, project_path,
+                       project_name, branch, username)
+
+
+def get_extracted_files(comm, branch):
+    # Get all files that Crowdin pushed
+    # We need to manually parse the shell output
+    extracted = []
+    for p in comm.split("\n"):
+        if "Extracted" in p:
+            path = re.sub(r".*Extracted:\s*", "", p)
+            path = path.replace("'", "").replace(f"/{branch}", "")
+            extracted.append(path)
+    return extracted
 
 
 def sig_handler(signal_received, frame):
+    global _DONE
     print('')
     print('SIGINT or CTRL-C detected. Exiting gracefully')
+    _DONE = True
     exit(0)
 
 
@@ -611,12 +590,20 @@
     else:
         xml_files = (xml_android, xml_extra)
 
+    config_dict = {}
     if args.config:
-        files = [f'{_DIR}/config/{args.config}']
+        config_dict["headers"] = ["custom config"]
+        config_dict["files"] = [f"{_DIR}/config/{args.config}"]
     else:
-        files = [f'{_DIR}/config/{default_branch}.yaml',
-                 f'{_DIR}/config/{default_branch}_aosp.yaml']
-    if not check_files(files):
+        config_dict["headers"] = [
+            "AOSP supported languages",
+            "non-AOSP supported languages"
+        ]
+        config_dict["files"] = [
+            f"{_DIR}/config/{default_branch}.yaml",
+            f"{_DIR}/config/{default_branch}_aosp.yaml"
+        ]
+    if not check_files(config_dict["files"]):
         sys.exit(1)
 
     if args.download and args.username is None:
@@ -624,12 +611,12 @@
         sys.exit(1)
 
     if args.upload_sources:
-        upload_sources_crowdin(default_branch, args.config, args.path_to_crowdin)
+        upload_sources_crowdin(default_branch, config_dict, args.path_to_crowdin)
     if args.upload_translations:
-        upload_translations_crowdin(default_branch, args.config, args.path_to_crowdin)
+        upload_translations_crowdin(default_branch, config_dict, args.path_to_crowdin)
     if args.download:
         download_crowdin(base_path, default_branch, xml_files,
-                         args.username, args.config, args.path_to_crowdin)
+                         args.username, config_dict, args.path_to_crowdin)
 
     if _COMMITS_CREATED:
         print('\nDone!')
diff --git a/requirements.txt b/requirements.txt
index e4ff11e..1778100 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,2 @@
-gitdb==4.0.5
-GitPython==3.1.8
-lxml==4.5.2
-PyYAML==5.3.1
-smmap==3.0.4
+GitPython==3.1.24
+lxml==4.5.0