Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/webtranslateit/webtranslateit
A CLI to sync locale files with webtranslateit.com.
https://github.com/webtranslateit/webtranslateit
i18n internationalization language-files languages localization ruby sync translations webtranslateit wti
Last synced: about 11 hours ago
JSON representation
A CLI to sync locale files with webtranslateit.com.
- Host: GitHub
- URL: https://github.com/webtranslateit/webtranslateit
- Owner: webtranslateit
- License: mit
- Created: 2009-11-02T07:49:51.000Z (over 15 years ago)
- Default Branch: main
- Last Pushed: 2024-04-08T08:03:32.000Z (10 months ago)
- Last Synced: 2024-04-08T09:29:32.046Z (10 months ago)
- Topics: i18n, internationalization, language-files, languages, localization, ruby, sync, translations, webtranslateit, wti
- Language: Ruby
- Homepage: https://webtranslateit.com
- Size: 850 KB
- Stars: 116
- Watchers: 11
- Forks: 35
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- Changelog: history.md
- License: license
Awesome Lists containing this project
README
# WebTranslateIt Synchronization Tool : wti
[![Gem Downloads](https://img.shields.io/gem/dt/web_translate_it.svg)](https://rubygems.org/gems/web_translate_it/) |
[Report a bug](https://github.com/webtranslateit/webtranslateit/issues) |
[Support](https://webtranslateit.com/support) |
[WebTranslateIt.com Homepage](https://webtranslateit.com) |
[Docker Package](https://github.com/webtranslateit/wti-docker/pkgs/container/wti-docker)wti lets you easily sync your language files with [WebTranslateIt.com](https://webtranslateit.com), a web-based tool to translation software.
### wti...
* wti is a **command-line tool**. It works on all operating systems: Windows, Linux, MacOS X, ... It is also available as a [Docker package](https://github.com/webtranslateit/wti-docker/pkgs/container/wti-docker).
* wti is really easy to use. It was inspired by git. Use `wti push` and `wti pull` to sync your language files with WebTranslateIt.com.### Optionally, wti does...
* include a rack middleware you can use in your Rails app to automatically fetch new translations from WebTranslateIt.com.
* include libraries you can use to programmatically fetch your segments from WebTranslateIt.com. See [Extras](https://github.com/webtranslateit/webtranslateit/wiki/Extras)
* include a web interface for your translation team to update your language files. [Learn more on the web_translate_it_server project page](https://github.com/webtranslateit/web_translate_it_server).---
## Installation
You will also need ruby to run `wti`. We require ruby version 3.0 or newer. On Linux or a Mac, it’s already installed. Install [RubyInstaller](http://rubyinstaller.org/) if you’re using Windows. [See detailed installation instructions for Windows users](https://github.com/webtranslateit/webtranslateit/wiki/Install-wti-on-Windows).
``` bash
$ gem install web_translate_it
Fetching: web_translate_it-3.0.2.gem (100%)
Successfully installed web_translate_it-3.0.2
1 gem installed
```At this point you should have the `wti` executable working:
``` bash
$ wti -v
wti version 3.0.2
```We also provide `wti` as a Docker packages. [See our packages and instructions to install](https://github.com/webtranslateit/wti-docker/pkgs/container/wti-docker).
## Configuration
Now that `wti` is installed, you’ll have to configure your project. Basically, `wti` is to be run on a project root directory, and looks for a `.wti` file containing your project information. The command `wti init` lets your create your `.wti` file.
``` bash
$ wti init proj_pvt_V8skdjsdDDA4
# Initializing projectThe project Frontend was successfully initialized.
You can now use `wti` to push and pull your language files.
Check `wti --help` for help.
````proj_pvt_V8skdjsdDDA4` is the API token, which you can find in your project settings.
If you’d like to specify another path for your configuration file, you can use `wti init`. This command will ask you to enter your project API token and where to save the configuration file (by default it will create a `.wti` in your project root directory).
Now you’re all set and you can use the `wti` commands on your project.
## Using on multiple projects
Please refer to [our documentation about syncing multiple projects](https://github.com/webtranslateit/webtranslateit/wiki/Using-wti-with-multiple-projects).
## Usage
Execute `wti --help` to see the usage:
Usage: wti [options]+
The most commonly used wti commands are:
pull Pull target language file(s)
push Push master language file(s)
match Display matching of local files with File Manager
add Create and push a new master language file
addlocale Add a new locale to the project
server Start a synchronisation server
status Fetch and display project statistics
init Configure your project to syncSee `wti --help` for more information on a specific command.
[options] are:
--config, -c : Path to a translation.yml file (default: .wti)
--version, -v: Print version and exit
--help, -h: Show this messageAppend `--help` for each command for more information. For instance:
$ wti push --help
wti push [filename] - Push master language file(s)
[options] are:
-l, --locale= ISO code of locale(s) to push
-t, --target Upload all target files
-f, --force Force push (bypass conditional requests to WTI)
-m, --merge Force WTI to merge this file
-i, --ignore-missing Force WTI to not obsolete missing strings
-n, --minor Minor Changes. When pushing a master file, prevents
target translations to be flagged as `to_verify`.
-a, --label= Apply a label to the changes
-c, --config= Path to a configuration file (default: .wti)
--all DEPRECATED -- See `wti push --target` instead
-d, --debug Display debug information
-h, --help Show this message## Sample Commands
Command
Action
wti add path/to/master/file.po
Upload a new master language file
wti add file1.po file2.po file3.xml
Create several master language files at once, by specifying each file
wti add *.po
Create several master language files at once, by specifying an extension
find . -name "*en.yml" | xargs wti add
Find all the en.yml files and add them to the project
wti push
Update a master language file
wti push -l fr
Update a target (French) language file
wti push -l "fr en da sv"
Update several target language files at once (French, English, Danish, Swedish)
wti push --all
Update all language files at once
wti push path/to/file.yml
Pushes the path/to/file.yml file
wti pull
Download target language files
wti pull -l fr
Download a specific language file (French)
wti pull --all
Download all language files, including source
wti pull path/to/files/*
Download all files in path/to/files
wti pull path/to/files/* -l fr
Download all fr files in path/to/files
wti pull --force
Force pull (to bypass WebTranslateIt’s HTTP caching)
wti addlocale fr
Add a new locale to the project
wti addlocale fr da sv
Add several locales at once
wti status
View project translation statistics
wti status config/locales/app/en.yml
View translation statistics on file config/locales/app/en.yml
wti match
Show matching between files on local computer and the ones in WebTranslateIt’s File Manager
## Hooks
It is sometimes useful to hook a command or a script before or after a push or a pull. One use-case would be to launch a build after pulling language files. You can do that by implementing hooks in your `.wti` file.
There are 4 hooks:
* `before_pull`
* `after_pull`
* `before_push`
* `after_push`Check the [sample `.wti`](https://github.com/webtranslateit/webtranslateit/blob/main/examples/.wti#L21-L28) file for implementation.
## Exit codes
`wti` returns exit codes on failure. The exit code is `0` if the command executed successfully and `1` if the command executed but encountered at least one error. This is useful to act upon errors if you use `wti` to pull files in an automated build process.
``` zsh
~/code/webtranslateit.com[master]% wti pull
# Pulling files on WebTranslateIt
config/locales/translation_validator/en.yml | e82e044..e82e044 Skipped
config/locales/app/en.yml | f2ca86c..f2ca86c Skipped
config/locales/defaults/en.yml | 2fcb61f..2fcb61f Skipped
config/locales/js/en.yml | ee6589d..ee6589d Skipped
config/locales/js/fr.yml | 2f8bb0e..2f8bb0e Skipped
config/locales/translation_validator/fr.yml | 534af2c..534af2c Skipped
config/locales/app/fr.yml | 29f8c9d..da39a3e OK
config/locales/defaults/fr.yml | aca123e..aca123e Skipped
Pulled 8 files at 7 files/sec, using 3 threads.~/code/webtranslateit.com[master]% echo $?
0~/code/webtranslateit.com[master]% wti pull
# Pulling files on WebTranslateIt
config/locales/translation_validator/en.yml | e82e044..e82e044 Error
config/locales/app/en.yml | f2ca86c..f2ca86c Skipped
config/locales/defaults/fr.yml | aca123e..aca123e Skipped
Pulled 3 files at 3 files/sec, using 3 threads.~/code/webtranslateit.com[master]% echo $?
1
````wti status` command also returns meaningful codes. It will exit with `0` if the project is 100% translated and proofread, `100` if the project is not 100% translated and `101` if the project is not 100% proofread. This could allow you to check if a project is 100% translated or completed before deploying a project.
``` zsh
~/Desktop/test% wti status
# Gathering information on test ts
fr: 40% translated, 40% completed.
en: 90% translated, 0% completed.~/Desktop/test% echo $?
100~/Desktop/test% wti status
# Gathering information on test ts
en: 100% translated, 0% completed.
fr: 100% translated, 100% completed.~/Desktop/test% echo $?
101~/Desktop/test% wti status
# Gathering information on test ts
en: 100% translated, 100% completed.
fr: 100% translated, 100% completed.~/Desktop/test% echo $?
0
```# License
Copyright (c) 2009-2024 [WebTranslateIt Software S.L](https://webtranslateit.com), released under the MIT License.