From bdc875048b70d273695a0bf4e2e585a035bc774b Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Wed, 7 Jan 2026 11:09:39 +0700 Subject: [PATCH 1/4] maint(common): Apply JSON formatting to crowdin.yml Matches the sample formatting in Crowdin CLI documentation https://support.crowdin.com/developer/configuration-file/ --- crowdin.yml | 315 +++++++++++++++++++++++++++++----------------------- 1 file changed, 176 insertions(+), 139 deletions(-) diff --git a/crowdin.yml b/crowdin.yml index 812cfa21c77..fd27db3de44 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -19,7 +19,7 @@ preserve_hierarchy: true # # Files configuration # -files: +files: [{ # source: local path of file that gets uploaded to crowdin # dest: crowdin path in https://crowdin.com/project/keyman # translation: local path where downloaded translations from crowdin go @@ -28,146 +28,183 @@ files: # Android files # Reference: https://developer.android.com/guide/topics/resources/multilingual-support - - source: /android/KMEA/app/src/main/res/values/strings.xml - dest: /android/engine/strings.xml - translation: /android/KMEA/app/src/main/res/values-%android_code%/strings.xml - languages_mapping: - # Prevent invalid region pap-rPAP. Leaving "in" for Indonesian - android_code: - el-polyton: b+el # TODO: figure out polyton variant - es-419: b+es+419 - pap: pap - shu-latn-n: b+shu+latn - - - source: /android/KMAPro/kMAPro/src/main/res/values/strings.xml - dest: /android/app/strings.xml - translation: /android/KMAPro/kMAPro/src/main/res/values-%android_code%/strings.xml - languages_mapping: - # Prevent invalid region pap-rPAP - android_code: - el-polyton: b+el # TODO: figure out polyton variant - es-419: b+es+419 - pap: pap - shu-latn-n: b+shu+latn + "source": "/android/KMEA/app/src/main/res/values/strings.xml", + "dest": "/android/engine/strings.xml", + "translation": "/android/KMEA/app/src/main/res/values-%android_code%/strings.xml", + "languages_mapping": { + # Prevent invalid region pap-rPAP. Leaving "in" for Indonesian + "android_code": { + #"el-polyton": "b+el", # TODO: figure out polyton variant + "es-419": "b+es+419", + "pap": "pap", + #"shu-latn-n": "b+shu+latn" + } + } +}, { + "source": "/android/KMAPro/kMAPro/src/main/res/values/strings.xml", + "dest": "/android/app/strings.xml", + "translation": "/android/KMAPro/kMAPro/src/main/res/values-%android_code%/strings.xml", + "languages_mapping": { + # Prevent invalid region pap-rPAP + "android_code": { + #"el-polyton": "b+el", # TODO: figure out polyton variant + "es-419": "b+es+419", + "pap": "pap", + #"shu-latn-n": "b+shu+latn" + } + }, +}, { # Windows files - # Note: we use type: android for the Windows project files - - - source: /windows/src/desktop/kmshell/xml/strings.xml - dest: /windows/strings.xml - translation: /windows/src/desktop/kmshell/locale/%locale%/%original_file_name% - type: android - languages_mapping: - locale: - de: de - fr: fr - kn: kn - - - source: /windows/src/desktop/setup/locale/en/strings.xml - dest: /windows/setup/strings.xml - translation: /windows/src/desktop/setup/locale/%locale%/%original_file_name% - type: android - languages_mapping: - locale: - de: de - fr: fr - kn: kn - - # iOS files - - - source: /ios/engine/KMEI/KeymanEngine/Classes/en.lproj/ResourceInfoView.strings - dest: /ios/engine/ResourceInfoView.strings - translation: /ios/engine/KMEI/KeymanEngine/Classes/%osx_code%/%original_file_name% - languages_mapping: - osx_code: - pt-PT: pt-PT.lproj - el-polyton: el.lproj - - - source: /ios/engine/KMEI/KeymanEngine/en.lproj/Localizable.strings - dest: /ios/engine/Localizable.strings - translation: /ios/engine/KMEI/KeymanEngine/%osx_code%/%original_file_name% - languages_mapping: - osx_code: - pt-PT: pt-PT.lproj - el-polyton: el.lproj - - - source: /ios/engine/KMEI/KeymanEngine/en.lproj/Localizable.stringsdict - dest: /ios/engine/Localizable.stringsdict - translation: /ios/engine/KMEI/KeymanEngine/%osx_code%/%original_file_name% - languages_mapping: - osx_code: - pt-PT: pt-PT.lproj - el-polyton: el.lproj - - - source: /ios/keyman/Keyman/Keyman/en.lproj/Localizable.strings - dest: /ios/app/Localizable.strings - translation: /ios/keyman/Keyman/Keyman/%osx_code%/%original_file_name% - languages_mapping: - osx_code: - pt-PT: pt-PT.lproj - el-polyton: el.lproj - - # Linux files - - - source: /linux/keyman-config/locale/keyman-config.pot - dest: /linux/keyman-config.pot - translation: /linux/keyman-config/locale/%locale_with_underscore%.po - type: gettext - update_option: update_as_unapproved - languages_mapping: - locale_with_underscore: - shu-latn-n: shu@latin - ha: ha - - # macOS files - - - source: /mac/Keyman4MacIM/Keyman4MacIM/KMAboutWindow/en.lproj/KMAboutWindowController.strings - dest: /mac/app/KMAboutWindowController.strings - translation: /mac/Keyman4MacIM/Keyman4MacIM/KMAboutWindow/%osx_code%/%original_file_name% - languages_mapping: - osx_code: - pt-PT: pt-PT.lproj - el-polyton: el.lproj - - - source: /mac/Keyman4MacIM/Keyman4MacIM/KMConfiguration/en.lproj/preferences.strings - dest: /mac/app/preferences.strings - translation: /mac/Keyman4MacIM/Keyman4MacIM/KMConfiguration/%osx_code%/%original_file_name% - languages_mapping: - osx_code: - pt-PT: pt-PT.lproj - el-polyton: el.lproj - - - source: /mac/Keyman4MacIM/Keyman4MacIM/KMInfoWindow/en.lproj/KMInfoWindowController.strings - dest: /mac/app/KMInfoWindowController.strings - translation: /mac/Keyman4MacIM/Keyman4MacIM/KMInfoWindow/%osx_code%/%original_file_name% - languages_mapping: - osx_code: - pt-PT: pt-PT.lproj - el-polyton: el.lproj - - - source: /mac/Keyman4MacIM/Keyman4MacIM/KMKeyboardHelpWindow/en.lproj/KMKeyboardHelpWindowController.strings - dest: /mac/app/KMKeyboardHelpWindowController.strings - translation: /mac/Keyman4MacIM/Keyman4MacIM/KMKeyboardHelpWindow/%osx_code%/%original_file_name% - languages_mapping: - osx_code: - pt-PT: pt-PT.lproj - el-polyton: el.lproj - - - source: /mac/Keyman4MacIM/Keyman4MacIM/en.lproj/Localizable.strings - dest: /mac/app/Localizable.strings - translation: /mac/Keyman4MacIM/Keyman4MacIM/%osx_code%/%original_file_name% - languages_mapping: - osx_code: - pt-PT: pt-PT.lproj - el-polyton: el.lproj - - - source: /mac/Keyman4MacIM/Keyman4MacIM/en.lproj/MainMenu.strings - dest: /mac/app/MainMenu.strings - translation: /mac/Keyman4MacIM/Keyman4MacIM/%osx_code%/%original_file_name% - languages_mapping: - osx_code: - pt-PT: pt-PT.lproj - el-polyton: el.lproj + # Note: we use type: android for the Windows project files# + + "source": "/windows/src/desktop/kmshell/xml/strings.xml", + "dest": "/windows/strings.xml", + "translation": "/windows/src/desktop/kmshell/locale/%locale%/%original_file_name%", + "type": "android", + "languages_mapping": { + "locale": { + "de": "de", + "fr": "fr", + "kn": "kn" + } + }, +}, { + "source": "/windows/src/desktop/setup/locale/en/strings.xml", + "dest": "/windows/setup/strings.xml", + "translation": "/windows/src/desktop/setup/locale/%locale%/%original_file_name%", + "type": "android", + "languages_mapping": { + "locale": { + "de": "de", + "fr": "fr", + "kn": "kn" + } + }, +}, { + + # iOS files# + + "source": "/ios/engine/KMEI/KeymanEngine/Classes/en.lproj/ResourceInfoView.strings", + "dest": "/ios/engine/ResourceInfoView.strings", + "translation": "/ios/engine/KMEI/KeymanEngine/Classes/%osx_code%/%original_file_name%", + "languages_mapping": { + "osx_code": { + "pt-PT": "pt-PT.lproj", +# "el-polyton": "el.lproj" + } + }, +}, { + "source": "/ios/engine/KMEI/KeymanEngine/en.lproj/Localizable.strings", + "dest": "/ios/engine/Localizable.strings", + "translation": "/ios/engine/KMEI/KeymanEngine/%osx_code%/%original_file_name%", + "languages_mapping": { + "osx_code": { + "pt-PT": "pt-PT.lproj", +# "el-polyton": "el.lproj" + } + }, +}, { + "source": "/ios/engine/KMEI/KeymanEngine/en.lproj/Localizable.stringsdict", + "dest": "/ios/engine/Localizable.stringsdict", + "translation": "/ios/engine/KMEI/KeymanEngine/%osx_code%/%original_file_name%", + "languages_mapping": { + "osx_code": { + "pt-PT": "pt-PT.lproj", +# "el-polyton": "el.lproj" + } + }, +}, { + "source": "/ios/keyman/Keyman/Keyman/en.lproj/Localizable.strings", + "dest": "/ios/app/Localizable.strings", + "translation": "/ios/keyman/Keyman/Keyman/%osx_code%/%original_file_name%", + "languages_mapping": { + "osx_code": { + "pt-PT": "pt-PT.lproj", +# "el-polyton": "el.lproj" + } + }, + +}, { + + # Linux files# + + "source": "/linux/keyman-config/locale/keyman-config.pot", + "dest": "/linux/keyman-config.pot", + "translation": "/linux/keyman-config/locale/%locale_with_underscore%.po", + "type": "gettext", + "update_option": "update_as_unapproved", + "languages_mapping": { + "locale_with_underscore": { +# "shu-latn-n": "shu@latin", + "ha": "ha" + } + }, + +}, { + + # macOS files# + + "source": "/mac/Keyman4MacIM/Keyman4MacIM/KMAboutWindow/en.lproj/KMAboutWindowController.strings", + "dest": "/mac/app/KMAboutWindowController.strings", + "translation": "/mac/Keyman4MacIM/Keyman4MacIM/KMAboutWindow/%osx_code%/%original_file_name%", + "languages_mapping": { + "osx_code": { + "pt-PT": "pt-PT.lproj", +# "el-polyton": "el.lproj" + } + }, +}, { + "source": "/mac/Keyman4MacIM/Keyman4MacIM/KMConfiguration/en.lproj/preferences.strings", + "dest": "/mac/app/preferences.strings", + "translation": "/mac/Keyman4MacIM/Keyman4MacIM/KMConfiguration/%osx_code%/%original_file_name%", + "languages_mapping": { + "osx_code": { + "pt-PT": "pt-PT.lproj", +# "el-polyton": "el.lproj" + } + }, +}, { + "source": "/mac/Keyman4MacIM/Keyman4MacIM/KMInfoWindow/en.lproj/KMInfoWindowController.strings", + "dest": "/mac/app/KMInfoWindowController.strings", + "translation": "/mac/Keyman4MacIM/Keyman4MacIM/KMInfoWindow/%osx_code%/%original_file_name%", + "languages_mapping": { + "osx_code": { + "pt-PT": "pt-PT.lproj", +# "el-polyton": "el.lproj" + } + }, +}, { + "source": "/mac/Keyman4MacIM/Keyman4MacIM/KMKeyboardHelpWindow/en.lproj/KMKeyboardHelpWindowController.strings", + "dest": "/mac/app/KMKeyboardHelpWindowController.strings", + "translation": "/mac/Keyman4MacIM/Keyman4MacIM/KMKeyboardHelpWindow/%osx_code%/%original_file_name%", + "languages_mapping": { + "osx_code": { + "pt-PT": "pt-PT.lproj", +# "el-polyton": "el.lproj" + } + }, +}, { + "source": "/mac/Keyman4MacIM/Keyman4MacIM/en.lproj/Localizable.strings", + "dest": "/mac/app/Localizable.strings", + "translation": "/mac/Keyman4MacIM/Keyman4MacIM/%osx_code%/%original_file_name%", + "languages_mapping": { + "osx_code": { + "pt-PT": "pt-PT.lproj", + #"el-polyton": "el.lproj" + } + }, +}, { + "source": "/mac/Keyman4MacIM/Keyman4MacIM/en.lproj/MainMenu.strings", + "dest": "/mac/app/MainMenu.strings", + "translation": "/mac/Keyman4MacIM/Keyman4MacIM/%osx_code%/%original_file_name%", + "languages_mapping": { + "osx_code": { + "pt-PT": "pt-PT.lproj", +# "el-polyton": "el.lproj" + } + } +}] # crowdin parameters descriptions: From a8ded5339d1c5c4c8f1c592d37754fd472fbee7c Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Thu, 8 Jan 2026 13:58:25 +0700 Subject: [PATCH 2/4] docs(common): Update Crowdin workflow description --- .github/workflows/README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 0c0420c4435..5cd93474eaa 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -64,8 +64,14 @@ itself: .... -# crowdin.yml -TODO +# crowdin.yml: Upload translation sources to Crowdin translate.keyman.com + +This action automatically updates the English source strings on Crowdin +https://crowdin.com/project/keyman/sources/files + +based on the root [crowdin.yml](../../crowdin.yml) configuration file. The daily cron job currently runs at 6:00AM. + +This should match the behavior of locally using the [Crowdin CLI to upload sources](https://crowdin.github.io/crowdin-cli/commands/crowdin-upload-sources). # deb-packaging.yml: Ubuntu Packaging GitHub Action From 1eaeabfedb469af5dc7738ff85272f9fae270fdf Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Thu, 8 Jan 2026 15:08:04 +0700 Subject: [PATCH 3/4] docs(common): Add link to Crowdin project --- .github/workflows/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 5cd93474eaa..384a093bf36 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -64,7 +64,7 @@ itself: .... -# crowdin.yml: Upload translation sources to Crowdin translate.keyman.com +# crowdin.yml: Upload translation sources to [Crowdin](translate.keyman.com) This action automatically updates the English source strings on Crowdin https://crowdin.com/project/keyman/sources/files From 137499d490117f605fbfa4916f7dd24650f56fef Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Fri, 9 Jan 2026 07:33:01 +0700 Subject: [PATCH 4/4] maint(common): Revert JSON changes in crowdin.yml --- crowdin.yml | 315 +++++++++++++++++++++++----------------------------- 1 file changed, 139 insertions(+), 176 deletions(-) diff --git a/crowdin.yml b/crowdin.yml index fd27db3de44..44861c3ac54 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -19,7 +19,7 @@ preserve_hierarchy: true # # Files configuration # -files: [{ +files: # source: local path of file that gets uploaded to crowdin # dest: crowdin path in https://crowdin.com/project/keyman # translation: local path where downloaded translations from crowdin go @@ -28,183 +28,146 @@ files: [{ # Android files # Reference: https://developer.android.com/guide/topics/resources/multilingual-support - "source": "/android/KMEA/app/src/main/res/values/strings.xml", - "dest": "/android/engine/strings.xml", - "translation": "/android/KMEA/app/src/main/res/values-%android_code%/strings.xml", - "languages_mapping": { - # Prevent invalid region pap-rPAP. Leaving "in" for Indonesian - "android_code": { - #"el-polyton": "b+el", # TODO: figure out polyton variant - "es-419": "b+es+419", - "pap": "pap", - #"shu-latn-n": "b+shu+latn" - } - } -}, { - "source": "/android/KMAPro/kMAPro/src/main/res/values/strings.xml", - "dest": "/android/app/strings.xml", - "translation": "/android/KMAPro/kMAPro/src/main/res/values-%android_code%/strings.xml", - "languages_mapping": { - # Prevent invalid region pap-rPAP - "android_code": { - #"el-polyton": "b+el", # TODO: figure out polyton variant - "es-419": "b+es+419", - "pap": "pap", - #"shu-latn-n": "b+shu+latn" - } - }, -}, { + - source: /android/KMEA/app/src/main/res/values/strings.xml + dest: /android/engine/strings.xml + translation: /android/KMEA/app/src/main/res/values-%android_code%/strings.xml + languages_mapping: + # Prevent invalid region pap-rPAP. Leaving "in" for Indonesian + android_code: + #el-polyton: b+el # TODO: figure out polyton variant + es-419: b+es+419 + pap: pap + #shu-latn-n: b+shu+latn + + - source: /android/KMAPro/kMAPro/src/main/res/values/strings.xml + dest: /android/app/strings.xml + translation: /android/KMAPro/kMAPro/src/main/res/values-%android_code%/strings.xml + languages_mapping: + # Prevent invalid region pap-rPAP + android_code: + #el-polyton: b+el # TODO: figure out polyton variant + es-419: b+es+419 + pap: pap + #shu-latn-n: b+shu+latn # Windows files - # Note: we use type: android for the Windows project files# - - "source": "/windows/src/desktop/kmshell/xml/strings.xml", - "dest": "/windows/strings.xml", - "translation": "/windows/src/desktop/kmshell/locale/%locale%/%original_file_name%", - "type": "android", - "languages_mapping": { - "locale": { - "de": "de", - "fr": "fr", - "kn": "kn" - } - }, -}, { - "source": "/windows/src/desktop/setup/locale/en/strings.xml", - "dest": "/windows/setup/strings.xml", - "translation": "/windows/src/desktop/setup/locale/%locale%/%original_file_name%", - "type": "android", - "languages_mapping": { - "locale": { - "de": "de", - "fr": "fr", - "kn": "kn" - } - }, -}, { - - # iOS files# - - "source": "/ios/engine/KMEI/KeymanEngine/Classes/en.lproj/ResourceInfoView.strings", - "dest": "/ios/engine/ResourceInfoView.strings", - "translation": "/ios/engine/KMEI/KeymanEngine/Classes/%osx_code%/%original_file_name%", - "languages_mapping": { - "osx_code": { - "pt-PT": "pt-PT.lproj", -# "el-polyton": "el.lproj" - } - }, -}, { - "source": "/ios/engine/KMEI/KeymanEngine/en.lproj/Localizable.strings", - "dest": "/ios/engine/Localizable.strings", - "translation": "/ios/engine/KMEI/KeymanEngine/%osx_code%/%original_file_name%", - "languages_mapping": { - "osx_code": { - "pt-PT": "pt-PT.lproj", -# "el-polyton": "el.lproj" - } - }, -}, { - "source": "/ios/engine/KMEI/KeymanEngine/en.lproj/Localizable.stringsdict", - "dest": "/ios/engine/Localizable.stringsdict", - "translation": "/ios/engine/KMEI/KeymanEngine/%osx_code%/%original_file_name%", - "languages_mapping": { - "osx_code": { - "pt-PT": "pt-PT.lproj", -# "el-polyton": "el.lproj" - } - }, -}, { - "source": "/ios/keyman/Keyman/Keyman/en.lproj/Localizable.strings", - "dest": "/ios/app/Localizable.strings", - "translation": "/ios/keyman/Keyman/Keyman/%osx_code%/%original_file_name%", - "languages_mapping": { - "osx_code": { - "pt-PT": "pt-PT.lproj", -# "el-polyton": "el.lproj" - } - }, - -}, { - - # Linux files# - - "source": "/linux/keyman-config/locale/keyman-config.pot", - "dest": "/linux/keyman-config.pot", - "translation": "/linux/keyman-config/locale/%locale_with_underscore%.po", - "type": "gettext", - "update_option": "update_as_unapproved", - "languages_mapping": { - "locale_with_underscore": { -# "shu-latn-n": "shu@latin", - "ha": "ha" - } - }, - -}, { - - # macOS files# - - "source": "/mac/Keyman4MacIM/Keyman4MacIM/KMAboutWindow/en.lproj/KMAboutWindowController.strings", - "dest": "/mac/app/KMAboutWindowController.strings", - "translation": "/mac/Keyman4MacIM/Keyman4MacIM/KMAboutWindow/%osx_code%/%original_file_name%", - "languages_mapping": { - "osx_code": { - "pt-PT": "pt-PT.lproj", -# "el-polyton": "el.lproj" - } - }, -}, { - "source": "/mac/Keyman4MacIM/Keyman4MacIM/KMConfiguration/en.lproj/preferences.strings", - "dest": "/mac/app/preferences.strings", - "translation": "/mac/Keyman4MacIM/Keyman4MacIM/KMConfiguration/%osx_code%/%original_file_name%", - "languages_mapping": { - "osx_code": { - "pt-PT": "pt-PT.lproj", -# "el-polyton": "el.lproj" - } - }, -}, { - "source": "/mac/Keyman4MacIM/Keyman4MacIM/KMInfoWindow/en.lproj/KMInfoWindowController.strings", - "dest": "/mac/app/KMInfoWindowController.strings", - "translation": "/mac/Keyman4MacIM/Keyman4MacIM/KMInfoWindow/%osx_code%/%original_file_name%", - "languages_mapping": { - "osx_code": { - "pt-PT": "pt-PT.lproj", -# "el-polyton": "el.lproj" - } - }, -}, { - "source": "/mac/Keyman4MacIM/Keyman4MacIM/KMKeyboardHelpWindow/en.lproj/KMKeyboardHelpWindowController.strings", - "dest": "/mac/app/KMKeyboardHelpWindowController.strings", - "translation": "/mac/Keyman4MacIM/Keyman4MacIM/KMKeyboardHelpWindow/%osx_code%/%original_file_name%", - "languages_mapping": { - "osx_code": { - "pt-PT": "pt-PT.lproj", -# "el-polyton": "el.lproj" - } - }, -}, { - "source": "/mac/Keyman4MacIM/Keyman4MacIM/en.lproj/Localizable.strings", - "dest": "/mac/app/Localizable.strings", - "translation": "/mac/Keyman4MacIM/Keyman4MacIM/%osx_code%/%original_file_name%", - "languages_mapping": { - "osx_code": { - "pt-PT": "pt-PT.lproj", - #"el-polyton": "el.lproj" - } - }, -}, { - "source": "/mac/Keyman4MacIM/Keyman4MacIM/en.lproj/MainMenu.strings", - "dest": "/mac/app/MainMenu.strings", - "translation": "/mac/Keyman4MacIM/Keyman4MacIM/%osx_code%/%original_file_name%", - "languages_mapping": { - "osx_code": { - "pt-PT": "pt-PT.lproj", -# "el-polyton": "el.lproj" - } - } -}] + # Note: we use type: android for the Windows project files + + - source: /windows/src/desktop/kmshell/xml/strings.xml + dest: /windows/strings.xml + translation: /windows/src/desktop/kmshell/locale/%locale%/%original_file_name% + type: android + languages_mapping: + locale: + de: de + fr: fr + kn: kn + + - source: /windows/src/desktop/setup/locale/en/strings.xml + dest: /windows/setup/strings.xml + translation: /windows/src/desktop/setup/locale/%locale%/%original_file_name% + type: android + languages_mapping: + locale: + de: de + fr: fr + kn: kn + + # iOS files + + - source: /ios/engine/KMEI/KeymanEngine/Classes/en.lproj/ResourceInfoView.strings + dest: /ios/engine/ResourceInfoView.strings + translation: /ios/engine/KMEI/KeymanEngine/Classes/%osx_code%/%original_file_name% + languages_mapping: + osx_code: + pt-PT: pt-PT.lproj + #el-polyton: el.lproj + + - source: /ios/engine/KMEI/KeymanEngine/en.lproj/Localizable.strings + dest: /ios/engine/Localizable.strings + translation: /ios/engine/KMEI/KeymanEngine/%osx_code%/%original_file_name% + languages_mapping: + osx_code: + pt-PT: pt-PT.lproj + #el-polyton: el.lproj + + - source: /ios/engine/KMEI/KeymanEngine/en.lproj/Localizable.stringsdict + dest: /ios/engine/Localizable.stringsdict + translation: /ios/engine/KMEI/KeymanEngine/%osx_code%/%original_file_name% + languages_mapping: + osx_code: + pt-PT: pt-PT.lproj + #el-polyton: el.lproj + + - source: /ios/keyman/Keyman/Keyman/en.lproj/Localizable.strings + dest: /ios/app/Localizable.strings + translation: /ios/keyman/Keyman/Keyman/%osx_code%/%original_file_name% + languages_mapping: + osx_code: + pt-PT: pt-PT.lproj + #el-polyton: el.lproj + + # Linux files + + - source: /linux/keyman-config/locale/keyman-config.pot + dest: /linux/keyman-config.pot + translation: /linux/keyman-config/locale/%locale_with_underscore%.po + type: gettext + update_option: update_as_unapproved + languages_mapping: + locale_with_underscore: + #shu-latn-n: shu@latin + ha: ha + + # macOS files + + - source: /mac/Keyman4MacIM/Keyman4MacIM/KMAboutWindow/en.lproj/KMAboutWindowController.strings + dest: /mac/app/KMAboutWindowController.strings + translation: /mac/Keyman4MacIM/Keyman4MacIM/KMAboutWindow/%osx_code%/%original_file_name% + languages_mapping: + osx_code: + pt-PT: pt-PT.lproj + #el-polyton: el.lproj + + - source: /mac/Keyman4MacIM/Keyman4MacIM/KMConfiguration/en.lproj/preferences.strings + dest: /mac/app/preferences.strings + translation: /mac/Keyman4MacIM/Keyman4MacIM/KMConfiguration/%osx_code%/%original_file_name% + languages_mapping: + osx_code: + pt-PT: pt-PT.lproj + #el-polyton: el.lproj + + - source: /mac/Keyman4MacIM/Keyman4MacIM/KMInfoWindow/en.lproj/KMInfoWindowController.strings + dest: /mac/app/KMInfoWindowController.strings + translation: /mac/Keyman4MacIM/Keyman4MacIM/KMInfoWindow/%osx_code%/%original_file_name% + languages_mapping: + osx_code: + pt-PT: pt-PT.lproj + #el-polyton: el.lproj + + - source: /mac/Keyman4MacIM/Keyman4MacIM/KMKeyboardHelpWindow/en.lproj/KMKeyboardHelpWindowController.strings + dest: /mac/app/KMKeyboardHelpWindowController.strings + translation: /mac/Keyman4MacIM/Keyman4MacIM/KMKeyboardHelpWindow/%osx_code%/%original_file_name% + languages_mapping: + osx_code: + pt-PT: pt-PT.lproj + #el-polyton: el.lproj + + - source: /mac/Keyman4MacIM/Keyman4MacIM/en.lproj/Localizable.strings + dest: /mac/app/Localizable.strings + translation: /mac/Keyman4MacIM/Keyman4MacIM/%osx_code%/%original_file_name% + languages_mapping: + osx_code: + pt-PT: pt-PT.lproj + #el-polyton: el.lproj + + - source: /mac/Keyman4MacIM/Keyman4MacIM/en.lproj/MainMenu.strings + dest: /mac/app/MainMenu.strings + translation: /mac/Keyman4MacIM/Keyman4MacIM/%osx_code%/%original_file_name% + languages_mapping: + osx_code: + pt-PT: pt-PT.lproj + #el-polyton: el.lproj # crowdin parameters descriptions: