https://github.com/mathix420/sb-datasource-to-i18n-json
Convert Storyblok Datasource to i18n JSON
https://github.com/mathix420/sb-datasource-to-i18n-json
bun cli converter extract i18n storyblok typescript
Last synced: about 1 month ago
JSON representation
Convert Storyblok Datasource to i18n JSON
- Host: GitHub
- URL: https://github.com/mathix420/sb-datasource-to-i18n-json
- Owner: mathix420
- Created: 2023-11-15T10:16:38.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-11-22T20:50:42.000Z (over 2 years ago)
- Last Synced: 2025-02-14T16:41:17.377Z (over 1 year ago)
- Topics: bun, cli, converter, extract, i18n, storyblok, typescript
- Language: TypeScript
- Homepage:
- Size: 229 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# sb-datasource-to-i18n-json
> Convert Storyblok Datasource to i18n JSON.
[](https://wakatime.com/badge/github/mathix420/sb-datasource-to-i18n-json) [](https://badge.fury.io/js/sb-datasource-to-i18n-json)
Useful for utilizing existing i18n integrations on a frontend framework instead of fetching from the Storyblok API.
Designed for a [nuxt-i18n](https://i18n.nuxtjs.org/) use case, but it's framework-agnostic.
As I have set up Vercel deployment webhooks on my Storyblok instance, every time the datasource is updated and saved, a new deployment will be performed, reflecting the changes.
## Usage guide
### Install
```bash
# npm
npm i -D sb-datasource-to-i18n-json
# bun
bun i -D sb-datasource-to-i18n-json
# pnpm
pnpm i -D sb-datasource-to-i18n-json
# yarn
yarn add -D sb-datasource-to-i18n-json
```
### Run
```bash
npx sb-i18n --help
# OR
bunx sb-i18n --help
```
### Integrate
In your `package.json`:
```json
{
"scripts": {
// To trigger on every npm i (usefull for CI jobs)
"prepare": "sb-i18n -r eu -t TO_REPLACE -d DATASOURCE_NAME -l fr",
// OR
"sync-i18n": "sb-i18n -r eu -t TO_REPLACE -d DATASOURCE_NAME -l fr",
}
}
```
Then run
```bash
npm i
# OR
npm run sync-i18n
```
### Environment variables
You can use environment variables to define Storyblok access token and region.
- `SB_ACCESS_TOKEN`, overriten by `-t, --token`
- `SB_REGION`, overriten by `-r, --region`
## Requirements
For this script to work, you need to setup a datasource following these rules:
- Do not create a dimension for the default language.
- Create a dimension for each language you want a translation:
- For the name of the dimension put everything you want (ex: `German`).
- For the value of the dimension, you need to respect the value your put in your i18n config (ex: `de`).
- Remember the Slug/ID when creating a datasource (or see it in settings) as it correspond to the `-d, --datasource ` parameter.
## Dev guide
To install dependencies:
```bash
bun install
```
To run:
```bash
bun run src/index.ts
```
This project was created using `bun init`. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.