我正在学习如何在应用程序上实现 Lingui(i18n)。一切都设置好了,但我想知道我应该如何创建一个语言切换器来在我的应用程序上的语言目录之间进行切换。
这是我的index.js文件
import React, { useEffect } from "react";
import { render } from "react-dom";
import App from "./App";
import { I18nProvider } from "@lingui/react";
import { i18n } from "@lingui/core";
import { defaultLocale, dynamicActivate } from "./i18n";
const Translation = () => {
useEffect(() => {
dynamicActivate(defaultLocale);
}, []);
return (
<I18nProvider i18n={i18n}>
<App />
</I18nProvider>
);
};
render(<Translation />, document.getElementById("root"));
我的App.js文件
import "./App.css";
import { Trans } from "@lingui/macro";
function App() {
return (
<div className="App">
<header className="App-header">
<h1>
<Trans>HELLOO</Trans>
</h1>
<p>
<Trans>it's me.</Trans>
</p>
</header>
</div>
);
}
export default App;
和i18n.ts文件
import { i18n } from '@lingui/core';
export const locales = {
en: "English",
es: "Spanish",
fr: "French",
};
export const defaultLocale = "fr";
/**
* We do a dynamic import of just the catalog that we need
* @param locale any locale string
*/
export async function dynamicActivate(locale: string) {
const { messages } = await import(`./locales/${locale}/messages`)
i18n.load(locale, messages)
i18n.activate(locale)
}
每次我指定 es,en 或 fr defaultLocale 时,语言都会发生变化,但我希望有一个语言按钮可以通过选择在页面上自动更改它。
例如:“export const defaultLocale = “fr”;” (在 i18n.ts 中)