i18n translation vendor cli tool
Pipeline
Note: This section is taken from formatjs - Application Workflow
message
s from your application into a single JSON file along with description
, ready to be translated.
1. Extraction: This step aggregates all 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.
Google Developers Console
1. Go to the2. Select your project or create a new one (and then select it)
Sheets API
for your project
3. Enable the -
Menu sidebar
->APIs & services
- Click the blue
Enable APIs and Services
button in the top bar - Search for
sheets
- Click on
Google Sheets API
- Click the blue
Enable
button
Google Drive API
for your project
4. Enable the -
Menu sidebar
->APIs & services
- Click the blue
Enable APIs and Services
button in the top bar - Search for
Google Drive API
- Click on
Google Sheets API
- Click the blue
Enable
button
5. Create a service account for your project
-
Menu sidebar
->APIs & services
->Credentials
- Click blue
+ CREATE CREDENTIALS
button in the top bar and selectService account
option - Enter
name
,description
- You can skip step 2
Grant this service account access to project
and step 3Grant users access to this service account
- Click
DONE
button - Select the created service account
- Select the
KEYS
tab in the top bar - Select
ADD KEY
dropdown - Select
Create new key
option - Select the Key type
json
- Click
CREATE
button - Download the
credentials
file 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]"
}
}
-c, --creds <path>
Required option 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 command
Download
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 command
Delete
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 command
i18n format
-
The filename should be a languageCode ["-" scriptCode] ["-" regionCode ] *("-" 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.json
-
The 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 spreadsheet
to make i18n translation vendor using googleapis npm packages.
Tips
credentials
file to .gitignore
file.
1. Put your the service account's email
with the access permission as editor
.
2. Create a new spreadsheet manually on your google account and share it to the - This makes it easy to manage the spreadsheet using the UI.
- You can fully control it with
owner
access permission.