@denysvuika/preact-translate

中文文档
0.6.0发布于 2025/05/26MITTypeScriptESM + CJS零依赖近 30 天下载 5.6万

Preact 最小翻译( i18n) 库

中文使用文档
文档目录7 节
  1. 安装
  2. 基本用途
  3. 配置资产根文件夹
  4. 格式翻译
  5. 编译
  6. 默认语言
  7. 自定义翻译数据

预译

Preact 最小翻译( i18n) 库
套装大小:~1KB

Buy Me A Coffee

安装

最低要求: 预告 10.0.0

使用 Yarn :

yarn add @denysvuika/preact-translate

利用国家预防机制:

npm i @denysvuika/preact-translate

基本用途

你应该把你的申请包在 TranslateProvider 组件 :

import { TranslateProvider } from '@denysvuika/preact-translate';

export default function App() {
  return (
    <TranslateProvider>
      <MainComponent />
    </TranslateProvider>
  );
}

创建一个 assets/en.json 包含以下内容的文件 :

{
  "title": "Hello",
  "subtitle": "World"
}

创建第二个文件 assets/ua.json 可以在不同的资源之间切换.

{
  "title": "[ua] Hello",
  "subtitle": "[ua] World"
}

你现在可以使用 TranslateContext 在访问翻译 API 和数据的组件中:

import { useContext } from 'preact/hooks';
import { TranslateContext } from '@denysvuika/preact-translate';

export default function MainComponent() {
  const { setLang, t, lang } = useContext(TranslateContext);

  return (
    <div>
      <div>Lang: {lang}</div>
      <div>{t('title')}</div>
      <div>{t('subtitle')}</div>
      <div>
        <button onClick={() => setLang('en')}>EN</button>
        <button onClick={() => setLang('ua')}>UA</button>
      </div>
    </div>
  );
}

给 EN 语言:

Lang: en
Hello
World

给 UA 语言:

Lang: ua
[ua] Hello
[ua] World

语言加载按要求执行 . 这个 en.json 只有在您的应用程序第一次要求时才加载并缓存 .

配置资产根文件夹

默认情况下 assets 文件夹用于获取本地地址 . 你可以通过 TranslateProvider.root 属性 :

import { TranslateProvider } from '@denysvuika/preact-translate';

export default function App() {
  return (
    <TranslateProvider root="i18n">
      <MainComponent />
    </TranslateProvider>
  );
}

格式翻译

您可以在翻译文本时使用运行时字符串替换

{
  "hello": "Hello, {name}"
}

然后在JSX中:

<div>{t('hello', { name: 'Bob' })}</div>

编译

库支持有嵌入级的复杂对象.

把下面放进 en.json 文件 :

{
  "messages": {
    "errors": {
      "404": "Sorry, not found"
    }
  }
}

在JSX中

<div>{t('messages.errors.404')}</div>

也可以使用下列复合字符串:

{
  "messages.errors.404": "Sorry, not found"
}

默认语言

您可以通过指定 TranslateProvider.lang 属性.

<TranslateProvider lang="ua">
  <Application />
</TranslateProvider>

请注意,在此情况下,提供者将在启动时加载并缓存两个地块: en.json (作为后退)和 ua.json (作为一个活跃的朗语).

自定义翻译数据

你用得着 TranslateProvider.translations 属性,以提供代码中的自定义翻译数据. 这对单位测试也有帮助.

const data = {
  en: {
    messages: {
      404: 'Not found'
    }
  }
};

<TranslateProvider translations={data}>
  <Application />
</TranslateProvider>;

注意 TranslateProvider 将不获取此选项的翻译文件 en 语言, 并使用您的自定义数据.

版本与发布记录

@denysvuika/preact-translate 共发布 14 个版本,首次发布于 2019/07/18;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.6.0latest2025/05/261.5 年前
0.5.12024/12/151.9 年前
0.5.02023/03/063 年前
0.4.12022/06/244 年前
0.3.02020/06/066 年前
0.2.62020/04/156 年前

关于 @denysvuika/preact-translate 的常见问题

@denysvuika/preact-translate 是什么?

Preact 最小翻译( i18n) 库

如何安装 @denysvuika/preact-translate?

在项目目录运行 npm install @denysvuika/preact-translate,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:preact(>=10.13.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@denysvuika/preact-translate 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@denysvuika/preact-translate 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@denysvuika/preact-translate 可以商用吗?

@denysvuika/preact-translate 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@denysvuika/preact-translate 的下载量有多少?

根据 npm 官方下载统计,@denysvuika/preact-translate 在 2026/10/12 – 2026/11/10 这 30 天内被下载 56,298 次,日均约 1,877 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@denysvuika/preact-translate 还在维护吗?

最新版本 0.6.0 发布于 2025/05/26(1.5 年前);至今共发布 14 个版本,其中过去 12 个月发布了 0 个;首次发布于 2019/07/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。