unplugin-sheet-i18n ![TypeScript heart icon](https://img.shields.io/badge/%E2%99%A1-%23007ACC.svg?logo=typescript&logoColor=white)
![jsDocs.io](https://img.shields.io/badge/Check_out-jsDocs.io---?labelColor=18181B&color=F0DB4F)
unplugin-sheet-i18n enables doing your i18n in a [spread]sheet for a better collaborative experience with non-coders and maintainability.
Features
- Supports CSV, TSV, DSV, Excel/Spreadsheets (XLS[XMB], ODT), powered by SheetJS and papaparse
- File-to-file convert:
en.csv -> en.json
- File-to-multiple convert:
i18n.csv -> en.json, vi.json, fr.json,...
- Output merging:
i18n_a.csv + i18n_b.csv -> en.json
- Preserve structure:
a/i18n.csv -> a/en.json | a/i18n/en.json | a/i18n_en.json
- File generation:
i18n_files.csv -> cloud_en.json, cloud_fr.json, template_en.html, template_fr.html
- And more!
Usage
>See a few examples usage here<
Install package:
npm install unplugin-sheet-i18n
yarn add unplugin-sheet-i18n
pnpm install unplugin-sheet-i18n
Setup:
Vite
import SheetI18n from 'unplugin-sheet-i18n/vite'
export default defineConfig({
plugins: [
SheetI18n({ }),
],
})
Rollup
import SheetI18n from 'unplugin-sheet-i18n/rollup'
export default {
plugins: [
SheetI18n({ }),
],
}
Webpack
module.exports = {
plugins: [
require('unplugin-sheet-i18n/webpack')({ })
]
}
Nuxt
export default defineNuxtConfig({
modules: [
['unplugin-sheet-i18n/nuxt', { }],
],
})
This module works for both Nuxt 2 and Nuxt Vite
Vue CLI
module.exports = {
configureWebpack: {
plugins: [
require('unplugin-sheet-i18n/webpack')({ }),
],
},
}
esbuild
import { build } from 'esbuild'
import SheetI18n from 'unplugin-sheet-i18n/esbuild'
build({
plugins: [SheetI18n()],
})
unbuild
import { defineBuildConfig } from 'unbuild'
import SheetI18n from 'unplugin-sheet-i18n/rollup'
export default defineBuildConfig({
hooks: {
'rollup:options': function (ctx, options) {
options.plugins = [options.plugins, SheetI18n({
})]
},
},
})
programmatic
See it in action at starter-fullstack
import { createContext } from 'unplugin-sheet-i18n'
createContext({
outDir: 'dist',
}).scanConvert()
Options:
See Options
Roadmap
License
MIT License © 2024 NamesMT