soon-i18n-react
v1.4.0
Published
a lightweight nested messages i18n library with smart ts prompt can be used in react , vue , svelte , solid , etc...
Downloads
26
Maintainers
Readme
soon-i18n
a lightweight nested messages i18n library with smart ts prompt can be used in react , vue , svelte , solid , etc...
all editions:
Full Document
中文文档
install
npm install soon-i18n-reactfull example
npx degit https://github.com/leafio/soon-i18n/packages/soon-i18n-react/demoinstance usage
create an instance
import { createI18n } from "soon-i18n-react";
const global_locales = {
zh: { g_welcome: "全局:欢迎 {name}" },
en: { g_welcome: "Global: Welcome {name}" },
} as const;
type Lang = "zh" | "en";
export const { tLocales, useLocales, useLang, getLang, setLang } = createI18n(
{ lang: "zh" as Lang, fallbacks: ["en"] },
global_locales
);use in js/ts
import { tLocales } from "../lang";
export const showToast = () => {
const t = tLocales({
zh: { tip: "哈哈,一条中文提醒!!!" },
en: { tip: "Aha, an English tip" },
});
alert(t("tip"));
};use in components
import { useLocales } from "../lang";
const Content = () => {
const t = useLocales({
zh: { hello: "你好" },
en: { hello: "Hello" },
});
return <div>{t("hello")}</div>;
};
export default Content;change lang
import { useLang } from "../lang";
const SwitchLang = () => {
const [lang, setLang] = useLang();
const handleToggle = () => {
setLang(lang === "en" ? "zh" : "en");
};
return <button onClick={handleToggle}>{lang}</button>;
};
export default SwitchLang;