首页
/ schummar-translate开源项目教程

schummar-translate开源项目教程

2025-05-19 23:24:31作者:魏侃纯Zoe

1. 项目介绍

schummar-translate 是一个使用 TypeScript 编写的翻译库,适用于 React 和 Node.js 环境。它能够为翻译键和 ICU 格式的参数提供类型检查和自动完成/智能感知功能。这个库的目的是为了简化多语言应用的开发流程,同时保证类型安全。

2. 项目快速启动

在开始之前,请确保您的开发环境中已经安装了 Node.js。

安装

首先,您需要通过 npm 安装 schummar-translate:

npm install schummar-translate

创建翻译文件

接下来,创建您的翻译文件,例如 en.ts

// en.ts
export default {
  welcomeMessage: 'Hi, {name}',
  currentTime: 'It is now {time, time, short}',
} as const;

创建翻译实例

在您的项目中创建一个翻译实例:

// translate.ts
import { createTranslator } from 'schummar-translate/react';
import en from './en.ts';

export const {
  t,
  useTranslator,
  getTranslator
} = createTranslator({
  sourceDictionary: en,
  sourceLocale: 'en'
});

在应用中使用

您可以在应用的任何地方使用 t 函数来显示翻译文本:

import { t } from './translate';

export function App() {
  const [locale, setLocale] = useState('en');
  
  const toggleLocale = () => {
    setLocale(locale === 'en' ? 'de' : 'en');
  };

  return (
    <TranslationContextProvider locale={locale}>
      <div onClick={toggleLocale}>
        {t('welcomeMessage', { name: 'schummar' })}
      </div>
    </TranslationContextProvider>
  );
}

3. 应用案例和最佳实践

国际化上下文提供者

使用 TranslationContextProvider 来包裹应用的组件树,以便在整个应用中共享翻译上下文。

import { TranslationContextProvider } from 'schummar-translate/react';

<TranslationContextProvider locale={locale}>
  {/* 应用组件 */}
</TranslationContextProvider>

动态加载语言包

如果您的应用支持多种语言,您可以通过动态导入来懒加载语言包:

dicts: (locale: string) => import(`./langs/${locale}`).then(mod => mod.default)

使用 ICU 格式化

schummar-translate 支持 ICU 格式的字符串,允许您进行复杂的文本替换,例如日期、时间和数值格式化。

export default {
  currentTime: 'It is now {time, time, medium}'
} as const;

4. 典型生态项目

由于 schummar-translate 是一个翻译库,它通常与以下类型的开源项目配合使用:

  • 国际化框架:如 i18next、react-intl 等。
  • 前端框架:React、Vue、Angular 等现代前端框架。
  • 服务器端渲染:如 Next.js、Nuxt.js 等。
  • 服务器端框架:Express、Koa 等 Node.js 框架。

通过结合这些项目,您可以构建具有完整国际化支持的应用程序。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
136
186
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
881
521
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
361
381
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
182
264
kernelkernel
deepin linux kernel
C
22
5
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.09 K
0
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
613
60
open-eBackupopen-eBackup
open-eBackup是一款开源备份软件,采用集群高扩展架构,通过应用备份通用框架、并行备份等技术,为主流数据库、虚拟化、文件系统、大数据等应用提供E2E的数据备份、恢复等能力,帮助用户实现关键数据高效保护。
HTML
118
78