google-sheets-locales
v1.0.3
Published
This is a local utility that has been passed around from project to project, so I decided to make it publicly available.
Readme
Why?
This is a local utility that has been passed around from project to project, so I decided to make it publicly available.
It's primarily used to simplify manual entry of ids in i18next t("...") function. If ESLint is enabled, it will indicate which translation is missing from list and block project built.
Params
- --id [sheet_id] - You can find sheet_id in url: https://docs.google.com/spreadsheets/d/[sheet_id]/...
- --format (json/js/ts) - Default: json. Output files format
- --enum [path] - File path with LOCALES enum constant. If format=json AND --enum not provided, .ts file with enums is not created
- --output [directory] - Directory path with language files [lang].json when format=fson
- --output [file] - File path with resources and LOCALES enum (if --enum not provided)
Format: JSON
Can use with i18next-http-backend and store json files on backend. For example:
i18n.init({
backend: {
loadPath: `/locales/{{lng}}.json?t=${Date.now()}`,
}
})Format: JS / TS
Generates one resources.(ts/js) file with all translations.
Examples
npx -y google-sheets-locales@latest --id some_id --output public/locales - Only json files with translations
npx -y google-sheets-locales@latest --id some_id --enum types/locales.ts --output public/locales - Enum & json files
npx -y google-sheets-locales@latest --id some_id --format ts --output src/locale.ts - .ts file with enum inside
npx -y google-sheets-locales@latest --id some_id --format ts --output src/locale.ts --enum src/locale.types.ts - .ts file and separated enum
npx -y google-sheets-locales@latest --id some_id --format js --output src/locale.js - .js file with resources. --enum will be ignored if provided.
npx -y google-sheets-locales@latest --id some_id --enum types/locales.ts - Only enums
Google Sheet schema
- Col. 1 - key from LOCALES enum
- Col. 2 - just comment, for translators or where it uses in project btw
- Col. 3 to N - different languages
The first row will look like this:
id | comment | en | fr | cn | ru | ...
Keep "id" and "comment" names because it hardcoded <3
Language names must also match the names defined in i18next (comply with the ISO 3166-1 standard)
And finally, try to avoid invisible characters in table cells.
