lingui
约 1 分钟阅读
标签:国际化
- lingui/js-linguiGitHublingui/js-linguilingui/js-lingui · 支持 macro · 支持 语义 · 支持 自动提取 · 支持 PO 格式 · https://lingui.dev/ · NextJS · CatalogFormat - https://lingui.dev/ref/catalog-formats笔记:lingui
- 支持 macro
- 支持 语义
- 支持 自动提取
- 支持 PO 格式
- lingui.dev
pnpm add @lingui/macro @lingui/react
pnpm add -D @lingui/cli
# for SWC, NextJS
# 注意选择版本 https://github.com/lingui/swc-plugin#compatibility
pnpm add -D @lingui/swc-plugin
# ./src/locale/{local}/messages.po
pnpm lingui extract --clean
# ./src/locale/{local}/messages.po -> ./src/locale/{local}/messages.js
pnpm lingui compile依赖包@lingui/macronpm 包@lingui/macroNPM@lingui/reactnpm 包@lingui/reactNPM@lingui/clinpm 包@lingui/cliNPM@lingui/swc-pluginnpm 包@lingui/swc-pluginNPM
/** @type {import('@lingui/conf').LinguiConfig} */
module.exports = {
locales: ['en', 'zh'],
sourceLocale: 'en',
catalogs: [
{
path: '<rootDir>/src/locales/{locale}/messages',
include: ['src'],
},
],
format: 'po',
};NextJS
/** @type {import('next').NextConfig} */
module.exports = {
// to use Lingui macros
experimental: {
swcPlugins: [['@lingui/swc-plugin', {}]],
},
};import { Trans, t } from '@lingui/macro';
import { useLingui } from '@lingui/react';
export function SomeComponent() {
const { i18n } = useLingui();
return (
<div>
<p>
<Trans>Some Item</Trans>
</p>
<p>{t(i18n)`Other Item`}</p>
</div>
);
}Notes
- CatalogFormat - lingui.dev/ref/catalog-formats
- lingui
- minimal
- po
- 推荐,默认
- 支持注释、元数据(origin, flags),上下文
- i10n 标准格式
- ICU plural syntax
- csv
- po-gettext
- PO with gettext Plurals
{
"messageId": "translation"
}{
"messageId": {
"translation": "Translated message",
"message": "Default message",
"description": "Comment for translators",
"origin": [["src/App.js", 3]]
},
"obsoleteId": {
"translation": "Obsolete message",
"origin": [["src/App.js", 3]],
"obsolete": true
}
}关联信息
反向链接、本文链接的其他页面和外部资料。
参考资料
GitHub1 条
- lingui/js-linguigithub.com/lingui/js-lingui
其他外链2 条
- lingui.devlingui.dev/
- lingui.dev/ref/catalog-formatslingui.dev/ref/catalog-formats