0.10.0 • Published 2 years ago
@lcbase/i18n-vendor v0.10.0
i18n translation vendor cli tool
Pipeline
Note: This section is taken from formatjs - Application Workflow
1. Extraction: This step aggregates all messages from your application into a single JSON file along with description, ready to be translated.
2. Upload Messages: This step uploads the JSON file to your translation vendor.
3. Download Translations: This step either polls your translation vendor or hook into your vendor to download translated messages in the set of locales that you configured.
4. Commit: This commits back translation messages to the codebase.
Note: This tool only supports step 2 and 3.
Required
System
- Nodejs version: >=16
Authentication
Create a service account that connect as a bot user that belongs to your app.
1. Go to the Google Developers Console
2. Select your project or create a new one (and then select it)
3. Enable the Sheets API for your project
Menu sidebar->APIs & services- Click the blue
Enable APIs and Servicesbutton in the top bar - Search for
sheets - Click on
Google Sheets API - Click the blue
Enablebutton
4. Enable the Google Drive API for your project
Menu sidebar->APIs & services- Click the blue
Enable APIs and Servicesbutton in the top bar - Search for
Google Drive API - Click on
Google Sheets API - Click the blue
Enablebutton
5. Create a service account for your project
Menu sidebar->APIs & services->Credentials- Click blue
+ CREATE CREDENTIALSbutton in the top bar and selectService accountoption - Enter
name,description - You can skip step 2
Grant this service account access to projectand step 3Grant users access to this service account - Click
DONEbutton - Select the created service account
- Select the
KEYStab in the top bar - Select
ADD KEYdropdown - Select
Create new keyoption - Select the Key type
json - Click
CREATEbutton - Download the
credentialsfile and save it in your computer.
Note: Be careful - never check your API keys / secrets into version control (git)
Installation
- pnpm
pnpm add -D @lcbase/i18n-vendor
## CLI
Add the following command to your package.json scripts:
```json
{
"scripts": {
"upload": "i18n-vendor upload [options] <files...>",
"download": "i18n-vendor download [options]",
"delete": "i18n-vendor delete [options]"
}
}Required option -c, --creds <path>
To run the commands you need to provide a credentials file using the -c, --creds <path> option.
Upload
pnpm upload --help
# Usage: i18n-vendor upload [options] <files...>
# Upload the JSON language file to translation vendor
# Options:
# -c, --creds <path> Google authentication credentials json file
# -ssid, --spreadsheet-id <string> Google sheet pubished ID
# -t, --tab <number> Google sheet tab index (default: "0")
# -p, --project-name <string> Project name
# -l, --default-locale <string> Default locale is 'en'
# -h, --help display help for commandDownload
pnpm download --help
# Usage: i18n-vendor download [options]
# Download the JSON language file from translation vendor
# Options:
# -c, --creds <path> Google authentication credentials json file
# -ssid, --spreadsheet-id <string> Google sheet pubished ID
# -t, --tab <number> Google sheet tab index (default: "0")
# -o, --output-folder <path> output file and folder location
# -p, --project-name <string> Project name
# -h, --help display help for commandDelete
pnpm delete --help
# Usage: i18n-vendor delete [options]
# Delete the spreadsheet by file id
# Options:
# -c, --creds <path> Google authentication credentials json file
# -p, --project-name <string> Project name
# -a, --all <boolean> Delete all files (default: true)
# -h, --help display help for commandi18n format
The filename should be a languageCode "-" scriptCode *("-" variant ) subsequence of the unicode_language_id grammar. languageCode is either a two-letter ISO 639-1 language code or a three-letter ISO 639-2 language code.
E.g:
en.json,fr.json,vi.json,ko.jsonThe File structure:
{
"key": {
"message": "message",
"description": "description"
}
}- Sample file
{
"title": {
"message": "title",
"description": "App Title"
},
"homeTitle": {
"message": "Home Page",
"description": "Home Page title"
},
"aboutTitle": {
"message": "About Page",
"description": "About Page Title"
}
}Note and Tips
Note
- This tool uses
google spreadsheetto make i18n translation vendor using googleapis npm packages.
Tips
1. Put your the credentials file to .gitignore file.
2. Create a new spreadsheet manually on your google account and share it to the service account's email with the access permission as editor.
- This makes it easy to manage the spreadsheet using the UI.
- You can fully control it with
owneraccess permission.