diff --git a/.github/workflows/translations-sync-dw.yml b/.github/workflows/translations-sync-dw.yml new file mode 100644 index 0000000000..2bb8e8e58c --- /dev/null +++ b/.github/workflows/translations-sync-dw.yml @@ -0,0 +1,35 @@ +name: Sync translations in desktop wallet + +on: + workflow_dispatch: + push: + paths: ['apps/desktop-wallet/locales/**'] + branches: [next] + +permissions: + contents: write + pull-requests: write + +jobs: + sync-translations: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Sync sources and translations + uses: crowdin/github-action@v2 + with: + config: 'apps/desktop-wallet/crowdin.yml' + upload_sources: true + upload_translations: true + download_translations: true + localization_branch_name: l10n_crowdin_translations + create_pull_request: true + pull_request_title: 'New Crowdin translations' + pull_request_body: 'New translations from https://crowdin.com/project/alephium-desktop-wallet.' + pull_request_base_branch_name: 'next' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} diff --git a/apps/desktop-wallet/.env.example b/apps/desktop-wallet/.env.example index 8049ab1616..54f21a8a82 100644 --- a/apps/desktop-wallet/.env.example +++ b/apps/desktop-wallet/.env.example @@ -1 +1,3 @@ VITE_USE_LOCAL_ANNOUNCEMENT_FILE=false # Turn this to true to use local announcement file for development +CROWDIN_PROJECT_ID= +CROWDIN_PERSONAL_TOKEN= diff --git a/apps/desktop-wallet/crowdin.yml b/apps/desktop-wallet/crowdin.yml new file mode 100644 index 0000000000..61943ef54f --- /dev/null +++ b/apps/desktop-wallet/crowdin.yml @@ -0,0 +1,126 @@ +# +# Your Crowdin credentials +# +'project_id_env': 'CROWDIN_PROJECT_ID' +'api_token_env': 'CROWDIN_PERSONAL_TOKEN' +'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 files filter + # e.g. "/resources/en/*.json" + # + 'source': '/locales/en-US/translation.json', + + # + # Where translations will be placed + # e.g. "/resources/%two_letters_code%/%original_file_name%" + # + 'translation': '/locales/%locale%/%original_file_name%' + # + # 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 + # + + # + # 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": "", + } + ]