Browse Source

chore(i18n): migrate from POEditor to Weblate (#170)

tags/v0.10.0
Jérôme Deuchnord 3 years ago
committed by GitHub
parent
commit
0d9e7e2f0a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 17 additions and 85 deletions
  1. +2
    -21
      .github/workflows/release.yml
  2. +1
    -2
      .gitignore
  3. +0
    -52
      .scripts/build/getlangs.py
  4. +4
    -4
      CONTRIBUTING.md
  5. +2
    -5
      Makefile
  6. +8
    -1
      README.md

+ 2
- 21
.github/workflows/release.yml View File

@@ -24,12 +24,6 @@ jobs:
changelog="${changelog//$'\n'/'%0A'}"
changelog="${changelog//$'\r'/'%0D'}"
echo "::set-output name=changelog::$changelog"
- name: Build locales
env:
POEDITOR_API_ACCESS: ${{ secrets.POEDITOR_API_ACCESS }}
run: |
make POEDITOR_API_ACCESS="${POEDITOR_API_ACCESS}" i18n
tar cf locales.tar.gz kosmorrolib/locales
- name: Create release
id: create_release
uses: actions/create-release@v1
@@ -42,19 +36,8 @@ jobs:
prerelease: false
body: |
${{ steps.prepare_release.outputs.changelog }}
- name: Upload locales
id: upload-locales
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./locales.tar.gz
asset_name: locales.tar.gz
asset_content_type: application/x-tar


pip:
pipy:
name: Release to PyPI
runs-on: ubuntu-latest
steps:
@@ -76,9 +59,7 @@ jobs:
env:
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
POEDITOR_API_ACCESS: ${{ secrets.POEDITOR_API_ACCESS }}
POEDITOR_PROJECT_ID: 306433
run: |
make POEDITOR_API_ACCESS="${POEDITOR_API_ACCESS}" POEDITOR_PROJECT_ID="306433" build
make i18n build
twine upload dist/*


+ 1
- 2
.gitignore View File

@@ -12,6 +12,5 @@ coverage.xml
/manpage/*
!/manpage/*.md

# Translation files are taken care on https://poeditor.com/join/project/GXuhLpdaoh
# Compiled internationalization files
*.mo
*.po

+ 0
- 52
.scripts/build/getlangs.py View File

@@ -1,52 +0,0 @@
#!/usr/bin/env python3

# This script's purpose is to retrieve the translations from POEditor (https://poeditor.com).
# It is mainly used in the release process.
# (c) Jérôme Deuchnord - MIT License

import os
import requests

POEDITOR_URL = 'https://api.poeditor.com/v2'
API_TOKEN = os.environ['POEDITOR_API_ACCESS']
PROJECT_ID = os.environ['POEDITOR_PROJECT_ID']

languages = requests.post('%s/languages/list' % POEDITOR_URL,
data={'api_token': API_TOKEN,
'id': PROJECT_ID})

json = languages.json()

if languages.status_code != 200:
raise AssertionError(json['response']['message'])

for language in json['result']['languages']:
if language['percentage'] < 100:
# Ignore unfinished translations
continue

print('Importing finished translation for %s... ' % language['name'], end='')

translations = requests.post('%s/projects/export' % POEDITOR_URL,
data={'api_token': API_TOKEN,
'id': PROJECT_ID,
'language': language['code'],
'type': 'po'})

if translations.status_code != 200:
print('Failed!')
raise AssertionError(translations.json()['response']['message'])

translations = requests.get(translations.json()['result']['url'])

if translations.status_code != 200:
print('Failed!')
raise AssertionError('URL given by the API returned a %d status code' % translations.status_code)

os.makedirs('kosmorrolib/locales/%s/LC_MESSAGES' % language['code'], exist_ok=True)

with open('kosmorrolib/locales/%s/LC_MESSAGES/messages.po' % language['code'], 'w') as file:
file.write(translations.text)

print('OK')


+ 4
- 4
CONTRIBUTING.md View File

@@ -17,7 +17,7 @@ First, please check someone didn't suggest your next revolution in the _Issues_

## Translating

If you speak another language than English, another nice way to enhance Kosmorro is to translate its messages. The recommended way to begin translating Kosmorro is to [join the POEditor team](https://poeditor.com/join/project/GXuhLpdaoh).
If you speak another language than English, another nice way to enhance Kosmorro is to translate its messages. The recommended way to begin translating Kosmorro is to [join the Weblate project](https://hosted.weblate.org/engage/kosmorro/).

## Writing code

@@ -44,7 +44,7 @@ The messages file contains all the messages Kosmorro can display, in order to ma
When you add a new string that will be displayed to the end user, please pass it to the `_()` function made available in the `kosmorrolib.i18n` package, for instance:

```python
# Dont:
# Don't:
print('Note: All the hours are given in UTC.')

# Do:
@@ -57,10 +57,10 @@ This will allow Python's internationalization tool to translate the string in an
Once you have done your work, please remember to tell [Babel](http://babel.pocoo.org) to extract the new strings:

```console
$ pipenv run python setup.py extract_messages --output-file=kosmorrolib/locales/messages.pot
$ make messages
```

> If the `setup.py` script tells you that the `extract_messages` command does not exist, then run `kosmorro sync` to ensure all the dev dependencies are installed and try again.
> If the `setup.py` script tells you that the `extract_messages` command does not exist, then run `pipenv sync` to ensure all the dev dependencies are installed and try again.

Note that if you forget to update the messages file, the CI will fail.



+ 2
- 5
Makefile View File

@@ -8,7 +8,7 @@ test:
unset KOSMORRO_TIMEZONE; \
LANG=C pipenv run python3 -m coverage run -m unittest test

build: i18n manpages
build: manpages
python3 setup.py sdist bdist_wheel

messages:
@@ -19,10 +19,7 @@ manpages:
ronn --roff manpage/kosmorro.7.md

i18n:
if [ "$$POEDITOR_API_ACCESS" != "" ]; then \
python3 .scripts/build/getlangs.py; \
python3 setup.py compile_catalog; \
fi
python3 setup.py compile_catalog; \

env:
@if [[ "$$RELEASE_NUMBER" == "" ]]; \


+ 8
- 1
README.md View File

@@ -1,5 +1,5 @@
# ![Kosmorro](kosmorrolib/assets/png/kosmorro-logo.png)
[![Coverage Status](https://coveralls.io/repos/github/Kosmorro/kosmorro/badge.svg?branch=master)](https://coveralls.io/github/Kosmorro/kosmorro?branch=master) [![Version on PyPI](https://img.shields.io/pypi/v/kosmorro)](https://pypi.org/project/kosmorro) [![Discord](https://img.shields.io/discord/650237632533757965?logo=discord&label=%23kosmorro)](https://discord.gg/TVX4MSKGaa) ![Docker Pulls](https://img.shields.io/docker/pulls/kosmorro/kosmorro)
[![Coverage Status](https://coveralls.io/repos/github/Kosmorro/kosmorro/badge.svg?branch=master)](https://coveralls.io/github/Kosmorro/kosmorro?branch=master) [![Version on PyPI](https://img.shields.io/pypi/v/kosmorro)](https://pypi.org/project/kosmorro) [![Discord](https://img.shields.io/discord/650237632533757965?logo=discord&label=%23kosmorro)](https://discord.gg/TVX4MSKGaa) ![Docker Pulls](https://img.shields.io/docker/pulls/kosmorro/kosmorro) [![Help translating Kosmorro!](https://hosted.weblate.org/widgets/kosmorro/-/cli/svg-badge.svg)](https://hosted.weblate.org/engage/kosmorro/)

A program that calculates your astronomical ephemerides!

@@ -98,3 +98,10 @@ Before you use this feature, make sure you have installed a LaTeX distribution:
- with Brew: `brew install basictex`

These dependencies are not installed by default, because they take a lot of place and are not necessary if you are not interested in generating PDF files.

## Help translating Kosmorro!

Kosmorro is translated on [Weblate](https://hosted.weblate.org/engage/kosmorro/), a popular free platform for crowd-sourced internationalization.
If you speak a language that is not supported yet, feel free to contribute!

![Translation state per language](https://hosted.weblate.org/widgets/kosmorro/-/cli/multi-auto.svg)

Loading…
Cancel
Save