crowdin_sync: Add stable branch sync support

* Add cm-12.1-YOG7D and cm-13.0-ZNH0E configs for initial support

Change-Id: I7a397378cb47b29c53a93ae7ff054d736ffe5e92
diff --git a/README.mkdn b/README.mkdn
index fc99201..ba99e1c 100644
--- a/README.mkdn
+++ b/README.mkdn
@@ -24,11 +24,20 @@
 Executing
 ---------
 Export the following environment variables to set the API keys and the base path.
-Base path should contain all CM trees in subfolders, named after CM branches:
+Base path should contain all CM trees in subfolders, named after CM branches.
+Syncing stable trees requires an additional environment variable plus a 'stable'
+subfolder under the base path, due to crowdin API limitations:
 
     export CM_CROWDIN_API_KEY=your_api_key
     export CM_AOSP_CROWDIN_API_KEY=your_aosp_api_key
     export CM_CROWDIN_BASE_PATH=your_base_path
+    export CM_CROWDIN_STABLE_BASE_PATH=your_stable_base_path
+
+Example:
+    export CM_CROWDIN_API_KEY=1234567890
+    export CM_AOSP_CROWDIN_API_KEY=0987654321
+    export CM_CROWDIN_BASE_PATH=/mnt/android/cm
+    export CM_CROWDIN_STABLE_BASE_PATH=/mnt/android/cm/stable
 
 Execute:
 
diff --git a/config/cm-12.1-YOG7D.yaml b/config/cm-12.1-YOG7D.yaml
new file mode 100644
index 0000000..b3a6134
--- /dev/null
+++ b/config/cm-12.1-YOG7D.yaml
@@ -0,0 +1,517 @@
+# cm-12.1-YOG7D.yaml
+#
+# Crowdin configuration file for CyanogenMod
+#
+# Copyright (C) 2014-2015 The CyanogenMod 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_STABLE_BASE_PATH
+base_path_contains_branch_subfolders: true
+project_identifier: cyanogenmod
+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
+        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
+        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
+        pa-IN: pa-rIN
+        pl: pl
+        pt-PT: pt-rPT
+        pt-BR: pt-rBR
+        rm-CH: rm
+        ro: ro
+        ru: ru
+        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
+
+  # DocumentsUI
+  -
+    source:      '/frameworks/base/packages/DocumentsUI/res/values/cm_strings.xml'
+    translation: '/%original_path%-%android_code%/%original_file_name%'
+    languages_mapping: *anchor
+
+  # Keyguard
+  -
+    source:      '/frameworks/base/packages/Keyguard/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_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
+
+  # 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_cm/values/cm_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
+
+  # Mms
+  -
+    source:      '/packages/apps/Mms/res/values/cm_arrays.xml'
+    translation: '/%original_path%-%android_code%/%original_file_name%'
+    languages_mapping: *anchor
+  -
+    source:      '/packages/apps/Mms/res/values/cm_plurals.xml'
+    translation: '/%original_path%-%android_code%/%original_file_name%'
+    languages_mapping: *anchor
+  -
+    source:      '/packages/apps/Mms/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
+
+  # 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
+
+  # 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
+
+  # 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
+
+# Services
+
+  # 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
+
+# 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
+
+# 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
diff --git a/config/cm-12.1-YOG7D_aosp.yaml b/config/cm-12.1-YOG7D_aosp.yaml
new file mode 100644
index 0000000..6ecf34e
--- /dev/null
+++ b/config/cm-12.1-YOG7D_aosp.yaml
@@ -0,0 +1,492 @@
+# cm-12.1-YOG7D_aosp.yaml
+#
+# Crowdin configuration file for CyanogenMod's
+# additional languages not supported by AOSP
+#
+# Copyright (C) 2014-2015 The CyanogenMod 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_STABLE_BASE_PATH
+base_path_contains_branch_subfolders: true
+project_identifier: cyanogenmod-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:
+        ast: ast-rES
+        be: be
+        cy: cy
+        en-PT: en-rPT
+        es-MX: es-rMX
+        eo: eo
+        fy-NL: fy-rNL
+        ku: ku
+        lb: lb
+        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
+
+  # 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
+
+  # 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
+
+  # Browser
+  -
+    source:      '/packages/apps/Browser/res/values/strings.xml'
+    translation: '/%original_path%-%android_code%/%original_file_name%'
+    languages_mapping: *anchor
+
+  # Calculator
+  -
+    source:      '/packages/apps/Calculator/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
+
+  # Exchange
+  -
+    source:      '/packages/apps/Exchange/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
+
+  # Mms
+  -
+    source:      '/packages/apps/Mms/res/values/arrays.xml'
+    translation: '/%original_path%-%android_code%/%original_file_name%'
+    languages_mapping: *anchor
+  -
+    source:      '/packages/apps/Mms/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
+
+# 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
+
+  # CalendarProvider
+  -
+    source:      '/packages/providers/CalendarProvider/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
+
+  # MusicVisualization
+  -
+    source:      '/packages/wallpapers/MusicVisualization/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
diff --git a/config/cm-12.1-YOG7D_extra_packages.xml b/config/cm-12.1-YOG7D_extra_packages.xml
new file mode 100644
index 0000000..76bd26d
--- /dev/null
+++ b/config/cm-12.1-YOG7D_extra_packages.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest>
+  <!-- Extra packages not included in the main manifest -->
+  <project path="hardware/qcom/fm" name="CyanogenMod/android_hardware_qcom_fm" />
+</manifest>
diff --git a/config/cm-13.0-ZNH0E.yaml b/config/cm-13.0-ZNH0E.yaml
new file mode 100644
index 0000000..ea0e473
--- /dev/null
+++ b/config/cm-13.0-ZNH0E.yaml
@@ -0,0 +1,539 @@
+# cm-13.0-ZNH0E.yaml
+#
+# Crowdin configuration file for CyanogenMod
+#
+# Copyright (C) 2014-2015 The CyanogenMod 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_STABLE_BASE_PATH
+base_path_contains_branch_subfolders: true
+project_identifier: cyanogenmod
+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
+        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
+        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
+        pa-IN: pa-rIN
+        pl: pl
+        pt-PT: pt-rPT
+        pt-BR: pt-rBR
+        rm-CH: rm
+        ro: ro
+        ru: ru
+        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
+
+  # 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
+
+  # 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
+
+  # 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
+
+# Screensavers
+
+  # PhotoTable
+  -
+    source:      '/packages/screensavers/PhotoTable/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
+
+  # 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
+
+# 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
+
+# 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
diff --git a/config/cm-13.0-ZNH0E_aosp.yaml b/config/cm-13.0-ZNH0E_aosp.yaml
new file mode 100644
index 0000000..20e2568
--- /dev/null
+++ b/config/cm-13.0-ZNH0E_aosp.yaml
@@ -0,0 +1,536 @@
+# cm-13.0-ZNH0E_aosp.yaml
+#
+# Crowdin configuration file for CyanogenMod's
+# additional languages not supported by AOSP
+#
+# Copyright (C) 2014-2015 The CyanogenMod 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_STABLE_BASE_PATH
+base_path_contains_branch_subfolders: true
+project_identifier: cyanogenmod-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:
+        ast: ast-rES
+        be: be
+        cy: cy
+        en-PT: en-rPT
+        es-MX: es-rMX
+        eo: eo
+        fy-NL: fy-rNL
+        ku: ku
+        lb: lb
+        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
+
+  # Calculator
+  -
+    source:      '/packages/apps/Calculator/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
+
+# 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
diff --git a/config/cm-13.0-ZNH0E_extra_packages.xml b/config/cm-13.0-ZNH0E_extra_packages.xml
new file mode 100644
index 0000000..fe5ff4d
--- /dev/null
+++ b/config/cm-13.0-ZNH0E_extra_packages.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest>
+  <!-- Extra packages not included in the main manifest -->
+  <project path="packages/apps/Calculator" name="CyanogenMod/android_packages_apps_Calculator" />
+</manifest>
diff --git a/crowdin_sync.py b/crowdin_sync.py
index 6457e4d..52f0371 100755
--- a/crowdin_sync.py
+++ b/crowdin_sync.py
@@ -54,6 +54,9 @@
 
 
 def push_as_commit(base_path, path, name, branch, username, ticket):
+    if 'stable/' in base_path:
+        branch = ''.join(('stable/', branch))
+
     print('Committing %s on branch %s' % (name, branch))
 
     # Get path
@@ -315,16 +318,22 @@
     args = parse_args()
     default_branch = args.branch
 
-    base_path = os.getenv('CM_CROWDIN_BASE_PATH')
+    if 'stable/' in default_branch:
+        base_path_env = 'CM_CROWDIN_STABLE_BASE_PATH'
+        base_path = os.getenv(base_path_env)
+        default_branch = default_branch.replace('stable/', '')
+    else:
+        base_path_env = 'CM_CROWDIN_BASE_PATH'
+        base_path = os.getenv(base_path_env)
     if base_path is None:
         cwd = os.getcwd()
-        print('You have not set CM_CROWDIN_BASE_PATH. Defaulting to %s' % cwd)
+        print('You have not set %s. Defaulting to %s' % (base_path_env, cwd))
         base_path = cwd
     else:
         base_path = os.path.join(os.path.realpath(base_path), default_branch)
     if not os.path.isdir(base_path):
-        print('CM_CROWDIN_BASE_PATH + branch is not a real directory: %s'
-              % base_path)
+        print('%s + branch is not a real directory: %s'
+              % (base_path_env, base_path))
         sys.exit(1)
 
     if not check_dependencies():