@json_web_component/ji18n
TypeScript icon, indicating that this package has built-in type declarations

2.1.5 • Public • Published

Ji18n 国际化语言处理组件

English Documents

介绍

Ji18n 是一个原生 HTML 标签组件,用于处理国际化语言。它可以将文本、标签、按钮等 HTML 元素的显示语言切换为指定的语言。

配置

Ji18n 组件可以通过以下属性进行配置:

  • messages:翻译文本对象。
  • defaultLanguage:默认语言。
  • backLanguage:回退语言。

方法

Ji18n 组件提供以下方法:

  • createJi18n():创建 Ji18n 实例。
  • setLanguage():设置当前语言。
  • $t():获取翻译文本。
  • onChange():语言更换的回调。

使用示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="module" src="https://unpkg.com/@json_web_component/ji18n/dist/main.min.js"></script>
    <title>Title</title>
    <script type="module">
        const en = {
            "app": {
                "test": "test"
            }
        }
        const zh = {
            "app": {
                "test": "测试"
            }
        }
        const messages = {en, zh}
        // 当不传入 defaultLanguage 和 backLanguage 时, 默认为系统语言
        createJi18n({messages, defaultLanguage: 'en', backLanguage: 'en'});
    </script>
</head>
<body>
<j-trans label="app.test" class="demo"></j-trans>
<input type="radio" name="lan" value="en"><label>English</label>
<input type="radio" name="lan" value="zh"><label>中文</label>
<script>
    const radios = document.querySelectorAll('input[type="radio"][name="lan"]');
    for (let radio of radios) {
        radio.addEventListener('change', e => {
            Ji18n.setLanguage(e.target.value)
            setTimeout(() => {
                console.log(Ji18n.$t("app.test"))
            }, 500)
        })
    }
</script>
</body>
</html>
<!-- 原生 html 引用 -->
<script type="module" src="https://unpkg.com/@json_web_component/ji18n/dist/main.min.js"></script>
// vue3 vite处理
export default defineConfig({
    plugins: [
        vue({
            template: {
                compilerOptions: {
                isCustomElement: tag => tag === 'j-trans'
                }
            }
        })
    ]
})
// vue 或 react只需在 main.js 中引用
import "@json_web_component/ji18n";

window.createJi18n({
  messages: {
    en: {},
    zh: {}
  }
})
// tsconfig 中添加 include
{
  "compilerOptions":{},
  "include": ["node_modules/@json_web_component/ji18n/dist/global.d.ts"],
}
// 如果需要用到 ts , 请实例化的时候重新赋值全局变量
// 示例:
window.Ji18n = createJi18n<"en" | "zh">({messages, defaultLanguage: 'en', backLanguage: 'en'});
// react 使用问题
// 如果ts报错: Property 'j-trans' does not exist on type 'JSX.IntrinsicElements'.
// 1. 创建一个全局类型文件 例如 global.d.ts
// 2. 在tsconfig 中include 中加入该全局类型文件
// 该全局文件的内容如下:
type JTransProps = React.HTMLAttributes<HTMLElement> & {
  label: string;
  options?: Record<string, any>;
  lang?: string;
}
declare namespace JSX {
  interface IntrinsicElements {
    'j-trans': React.DetailedHTMLProps<JTransProps, HTMLElement>;
  }
}

Package Sidebar

Install

npm i @json_web_component/ji18n

Weekly Downloads

20

Version

2.1.5

License

ISC

Unpacked Size

18.5 kB

Total Files

7

Last publish

Collaborators

  • json_lee12138