Skip to main content

概述

使用 next-intl 支持 13 种语言。

支持语言

代码语言
en-USEnglish
zh-CN简体中文
zh-TW繁體中文
ja-JP日本語
ko-KR한국어
de-DEDeutsch
fr-FRFrançais
es-ESEspañol
pt-BRPortuguês
it-ITItaliano
ru-RUРусский
th-THไทย
vi-VNTiếng Việt

目录结构

messages
en-US.json
zh-CN.json
ja-JP.json
...

消息格式

// messages/en-US.json
{
  "generator": {
    "confirm": "Confirm",
    "cancel": "Cancel",
    "processing": "Processing..."
  },
  "toolbar": {
    "filter": "Filter",
    "adjust": "Adjust",
    "crop": "Crop"
  }
}

使用方式

import { useTranslations } from 'next-intl';

function ToolBar() {
  const t = useTranslations('toolbar');

  return (
    <div>
      <Button>{t('filter')}</Button>
      <Button>{t('adjust')}</Button>
    </div>
  );
}

配置

// i18n/request.ts
import { getRequestConfig } from 'next-intl/server';

export default getRequestConfig(async ({ locale }) => ({
  messages: (await import(`../messages/${locale}.json`)).default,
}));

最佳实践

  1. 使用命名空间组织翻译 key
  2. 保持 key 简短且语义化
  3. 所有语言文件结构保持一致