FPSMS-frontend
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 

44 行
1012 B

  1. "use client";
  2. import { createInstance, i18n } from "i18next";
  3. import React, { useMemo } from "react";
  4. import { I18nextProvider } from "react-i18next";
  5. interface Props {
  6. children: React.ReactNode;
  7. language: string;
  8. resources: { [ns: string]: any };
  9. namespaces: string[];
  10. }
  11. export const I18nContext = React.createContext(null);
  12. const I18nProvider: React.FC<Props> = ({
  13. children,
  14. language,
  15. resources,
  16. namespaces,
  17. }) => {
  18. const i18n = useMemo<i18n>(() => {
  19. const instance = createInstance();
  20. instance.init({
  21. resources: {
  22. [language]: resources,
  23. },
  24. fallbackLng: language,
  25. interpolation: {
  26. escapeValue: false,
  27. },
  28. ns: namespaces,
  29. });
  30. return instance as i18n;
  31. // No need to check dependencies since this
  32. // should only be created once from the server
  33. // eslint-disable-next-line react-hooks/exhaustive-deps
  34. }, []);
  35. return <I18nextProvider i18n={i18n}>{children}</I18nextProvider>;
  36. };
  37. export default I18nProvider;