#
# Shared Crowdin control for all Keyman platforms
#

#
# Your Crowdin credentials
#
project_id_env: "CROWDIN_PROJECT_ID"
api_token_env: "CROWDIN_PERSONAL_TOKEN"
base_path: "." # local base path
base_url: "https://api.crowdin.com"

#
# Choose file structure in Crowdin
# e.g. true or false
#
preserve_hierarchy: true

#
# Files configuration
#
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


  # 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

  # 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

  # crowdin parameters descriptions:

  #
  # Source files filter
  # e.g. "/resources/en/*.json"
  #

  #
  # Where translations will be placed
  # e.g. "/resources/%two_letters_code%/%original_file_name%"
  #
  #"translation" : "",

  #
  # Files or directories for ignore
  # e.g. ["/**/?.txt", "/**/[0-9].txt", "/**/*\?*.txt"]
  #
  #"ignore" : [],

  #
  # The dest allows you to specify a file name in Crowdin
  # e.g. "/messages.json"
  #
  #"dest" : "",

  #
  # File type
  # e.g. "json"
  #
  #"type" : "",

  #
  # The parameter "update_option" is optional. If it is not set, after the files update the translations for changed strings will be removed. Use to fix typos and for minor changes in the source strings
  # e.g. "update_as_unapproved" or "update_without_changes"
  #
  #"update_option" : "",

  #
  # Start block (for XML only)
  #

  #
  # Defines whether to translate tags attributes.
  # e.g. 0 or 1  (Default is 1)
  #
  # "translate_attributes" : 1,

  #
  # Defines whether to translate texts placed inside the tags.
  # e.g. 0 or 1 (Default is 1)
  #
  # "translate_content" : 1,

  #
  # This is an array of strings, where each item is the XPaths to DOM element that should be imported
  # e.g. ["/content/text", "/content/text[@value]"]
  #
  # "translatable_elements" : [],

  #
  # Defines whether to split long texts into smaller text segments
  # e.g. 0 or 1 (Default is 1)
  #
  # "content_segmentation" : 1,

  #
  # End block (for XML only)
  #

  #
  # Start .properties block
  #

  #
  # Defines whether single quote should be escaped by another single quote or backslash in exported translations
  # e.g. 0 or 1 or 2 or 3 (Default is 3)
  # 0 - do not escape single quote;
  # 1 - escape single quote by another single quote;
  # 2 - escape single quote by backslash;
  # 3 - escape single quote by another single quote only in strings containing variables ( {0} ).
  #
  # "escape_quotes" : 3,

  #
  # Defines whether any special characters (=, :, ! and #) should be escaped by backslash in exported translations.
  # e.g. 0 or 1 (Default is 0)
  # 0 - do not escape special characters
  # 1 - escape special characters by a backslash
  #
  # "escape_special_characters": 0
  #

  #
  # End .properties block
  #

  #
  # Often software projects have custom names for the directories where translations are placed. crowdin-cli allows you to map your own languages to be understandable by Crowdin.
  #
  #"languages_mapping" : {
  #  "two_letters_code" : {
  #    "crowdin_language_code" : "local_name"
  #   }
  #},

  #
  # Does the first line contain header?
  # e.g. true or false
  #
  #"first_line_contains_header" : true,

  #
  # for spreadsheets
  # e.g. "identifier,source_phrase,context,uk,ru,fr"
  #
  # "scheme" : "",
