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():