crowdin: Initial changes for 15.1

Change-Id: I7cf2272b0a2e903353af7d4de9480c1e0eb9b0da
diff --git a/config/lineage-15.1.yaml b/config/lineage-15.1.yaml
new file mode 100644
index 0000000..f4cb3c2
--- /dev/null
+++ b/config/lineage-15.1.yaml
@@ -0,0 +1,504 @@
+# lineage-15.1.yaml
+#
+# Crowdin configuration file for LineageOS
+#
+# Copyright (C) 2014-2016 The CyanogenMod Project
+# Copyright (C) 2017-2018 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.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+api_key_env: CM_CROWDIN_API_KEY
+base_path_env: CM_CROWDIN_BASE_PATH
+base_path_contains_branch_subfolders: true
+project_identifier: lineageos
+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 - 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
+
+  # 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/lookup/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
+
+  # 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_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
+
+  # WundergroundWeatherProvider
+  -
+    source:      '/lineage-sdk/samples/weatherproviderservice/WundergroundWeatherProvider/app/src/main/res/values/strings.xml'
+    translation: '/%original_path%-%android_code%/%original_file_name%'
+    languages_mapping: *anchor
+
+  # YahooWeatherProvider
+  -
+    source:      '/lineage-sdk/samples/weatherproviderservice/YahooWeatherProvider/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
+
+  # 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
diff --git a/config/lineage-15.1_aosp.yaml b/config/lineage-15.1_aosp.yaml
new file mode 100644
index 0000000..98895ad
--- /dev/null
+++ b/config/lineage-15.1_aosp.yaml
@@ -0,0 +1,709 @@
+# lineage-15.1_aosp.yaml
+#
+# Crowdin configuration file for LineageOS'
+# additional languages not supported by AOSP
+#
+# Copyright (C) 2014-2016 The CyanogenMod Project
+# Copyright (C) 2017-2018 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.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+api_key_env: CM_AOSP_CROWDIN_API_KEY
+base_path_env: CM_CROWDIN_BASE_PATH
+base_path_contains_branch_subfolders: true
+project_identifier: lineageos-aosp
+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
+
+  # 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
+  -
+    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
+
+  # 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
+
+  # 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
diff --git a/config/lineage-15.1_extra_packages.xml b/config/lineage-15.1_extra_packages.xml
new file mode 100644
index 0000000..f120a8a
--- /dev/null
+++ b/config/lineage-15.1_extra_packages.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest>
+  <!-- Extra packages not included in the main manifest -->
+  <project path="packages/resources/devicesettings" name="LineageOS/android_packages_resources_devicesettings" />
+  <project path="packages/apps/FlipFlap" name="LineageOS/android_packages_apps_FlipFlap" />
+
+  <!-- Device repositories that can be translated -->
+  <project path="device/oppo/common" name="LineageOS/android_device_oppo_common" />
+</manifest>