refactor(i18n): language setup (#3484)

This commit is contained in:
Alex Yang
2023-07-31 02:21:12 -07:00
committed by GitHub
parent 9567471e7f
commit 452c780d40
2 changed files with 23 additions and 18 deletions

View File

@@ -5,8 +5,9 @@ import { AffineContext } from '@affine/component/context';
import { WorkspaceFallback } from '@affine/component/workspace';
import { createI18n, setUpLanguage } from '@affine/i18n';
import { CacheProvider } from '@emotion/react';
import { use } from 'foxact/use';
import type { PropsWithChildren, ReactElement } from 'react';
import { lazy, memo, Suspense, useEffect } from 'react';
import { lazy, memo, Suspense } from 'react';
import { RouterProvider } from 'react-router-dom';
import { router } from './router';
@@ -32,14 +33,21 @@ const future = {
v7_startTransition: true,
} as const;
export const App = memo(function App() {
useEffect(() => {
const languageLoadingPromise = new Promise<void>(resolve => {
if (environment.isBrowser) {
document.documentElement.lang = i18n.language;
// todo(himself65): this is a hack, we should use a better way to set the language
setUpLanguage(i18n)?.catch(error => {
console.error(error);
});
}, []);
setUpLanguage(i18n)
.then(() => resolve())
.catch(error => {
console.error(error);
});
} else {
resolve();
}
});
export const App = memo(function App() {
use(languageLoadingPromise);
return (
<CacheProvider value={cache}>
<AffineContext>