Add documentation on manual translation process.

This commit is contained in:
Christopher C. Wells 2019-04-18 20:24:07 -07:00
parent a50d2539ac
commit ff5a21f027
1 changed files with 43 additions and 0 deletions

View File

@ -7,6 +7,7 @@
- [Contributions](#contributions) - [Contributions](#contributions)
- [Pull request process](#pull-request-process) - [Pull request process](#pull-request-process)
- [Translation](#translation)
- [Development](#development) - [Development](#development)
- [Installation](#installation) - [Installation](#installation)
- [Gulp Commands](#gulp-commands) - [Gulp Commands](#gulp-commands)
@ -34,6 +35,33 @@ Gitter.
New pull requests will be reviewed by project maintainers as soon as possible New pull requests will be reviewed by project maintainers as soon as possible
and we will do our best to provide feedback and support potential contributors. and we will do our best to provide feedback and support potential contributors.
### Translation
Baby Buddy has support for translation/localization to any language. A general
translation process will look something like this:
1. Set up a development environment (see [Development](#development) below).
1. Run `gulp makemessages -l xx` where `xx` is a specific locale code (e.g. "fr"
for French or "es" for Spanish). This create a new translation file at
`locale/xx/LC_MESSAGES/django.po`, or update one if it exits.
1. Open the created/updated `django.po` file and update the header template with
license and contact info.
1. Start translating! Each translatable string will have a `msgid` value with
the string in English and a corresponding (empty) `msgstr` value where a
translated string can be filled in.
1. Once all strings have been translated, run `gulp compilemessages -l xx` to
compile an optimized translation file (`locale/xx/LC_MESSAGES/django.mo`).
1. To expose the new translation as a user setting, add the locale code to the
`LANGUAGES` array in the base settings file (`babybuddy/settings/base.py`).
1. Run the development server, log in, and update the user language to test the
newly translated strings.
Once the translation is complete, commit the new files and changes to a fork and
[create a pull request](#pull-request-process) for review.
For more information on the Django translation process, see Django's
documentation section: [Translation](https://docs.djangoproject.com/en/dev/topics/i18n/translation/).
## Development ## Development
### Requirements ### Requirements
@ -92,10 +120,12 @@ in the [`babybuddy/management/commands`](babybuddy/management/commands) folder.
- [`gulp build`](#build) - [`gulp build`](#build)
- [`gulp clean`](#clean) - [`gulp clean`](#clean)
- [`gulp collectstatic`](#collectstatic) - [`gulp collectstatic`](#collectstatic)
- [`gulp compilemessages`](#compilemessages)
- [`gulp coverage`](#coverage) - [`gulp coverage`](#coverage)
- [`gulp extras`](#extras) - [`gulp extras`](#extras)
- [`gulp fake`](#fake) - [`gulp fake`](#fake)
- [`gulp lint`](#lint) - [`gulp lint`](#lint)
- [`gulp makemessages`](#makemessages)
- [`gulp makemigrations`](#makemigrations) - [`gulp makemigrations`](#makemigrations)
- [`gulp migrate`](#migrate) - [`gulp migrate`](#migrate)
- [`gulp reset`](#reset) - [`gulp reset`](#reset)
@ -126,6 +156,11 @@ the `babybuddy/static` folder, so generally `gulp build` should be run before
this command for production deployments. Gulp also passes along this command for production deployments. Gulp also passes along
non-overlapping arguments for this command, e.g. `--no-input`. non-overlapping arguments for this command, e.g. `--no-input`.
#### `compilemessages`
Executes Django's `compilemessages` management task. See [django-admin compilemessages](https://docs.djangoproject.com/en/dev/ref/django-admin/#compilemessages)
for more details about other options and functionality of this command.
#### `coverage` #### `coverage`
Create a test coverage report. See [`.coveragerc`](.coveragerc) for default Create a test coverage report. See [`.coveragerc`](.coveragerc) for default
@ -147,6 +182,14 @@ children and seven days of data for each.
Executes Python and SASS linting for all relevant source files. Executes Python and SASS linting for all relevant source files.
#### `makemessages`
Executes Django's `makemessages` management task. See [django-admin makemessages](https://docs.djangoproject.com/en/dev/ref/django-admin/#makemessages)
for more details about other options and functionality of this command. When
working on a single translation, the `-l` flag is useful to make message for
only that language, e.g. `gulp makemessages -l fr` to make only a French
language translation file.
#### `makemigrations` #### `makemigrations`
Executes Django's `makemigrations` management task. Gulp also passes along Executes Django's `makemigrations` management task. Gulp also passes along