@clean-jsdoc-them/bhasha (英语)
纯净,可保护浏览器的i18n运行时间. 磁盘绑取/翻译/构建 输油管生活
@clean-jsdoc-theme/aadesh。 。 。 .
清洁-jsdoc-主题的国际化核心。 BHAsha是,我们 异态 —— 说
零 node:* - 因为按铃把它捆入了浏览器。 它拿着
可转换的铬目录 t 翻译及其倒置链
LanguageProvider 静态载体、 API- slot 密钥方案以及验证
原始的 原始的 原始的 setu 和 aadesh 导入其密钥/ 小时帮助器, 以便商定位置
身份 + 陈旧。 完全本地化的步道进入
将文件本地化。 。 。 .
这是什么
Chrome 目录
EN_CHROME 是一个嵌入式对象, 并且
平地被点缀 chrome.* 键。 关键是 来源于
目录因此,每个 t('chrome.…') 正在对电话进行编译检查.
import { EN_CHROME, EN_CHROME_FLAT, type ChromeKey } from '@clean-jsdoc-theme/bhasha';
t + 供应商
LanguageProvider 是一个 静态载体 - 不可改变的每人价值,否
setter( locale 是建构维度, 不是运行时切换) 。 没有供应商, t
返回精确的英文(字节-同名的无地基线).
import { LanguageProvider, useTranslation, createI18n } from '@clean-jsdoc-theme/bhasha';
function ThemeButton() {
const { t } = useTranslation();
return <button title={t('chrome.theme.toggleTitle')}>{t('chrome.theme.switchTo', { mode: 'dark' })}</button>;
}
// Seed an island root (browser) or a page render (SSR):
const i18n = createI18n({ locale: 'fr', messages: { 'chrome.theme.toggleTitle': 'Basculer le thème' } });
<LanguageProvider value={i18n}>{/* … */}</LanguageProvider>;
后退链 : 活动区域 ^ 默认区域 → 密钥 (铬)或 页:1
源文本 (单位:千美元)translateSlot,API插槽). 空值计为
未译而倒.
内插简单 {token} 替换(t(key, { count: 3 })(三);
伊斯兰法院联盟复数被推迟.
API 插槽键 + staleness
import { apiSlotKey, sourceHash } from '@clean-jsdoc-theme/bhasha';
apiSlotKey('Foo#bar', ['params', '0', 'description']); // 'api.Foo#bar#params.0.description'
sourceHash('The Foo class.'); // '9d6177d6' — FNV-1a; changes when source text changes
验证原始物
建于主题的诊断脊柱上(DiagnosticBag 编号 : suggestKey 从
@clean-jsdoc-theme/utilsA级 差额 警告; a 畸变 错误, 已报告
与钥匙相对.
import {
validateCatalogShape, // missing → warn, unknown → error (+ "did you mean?")
catalogCoverage, // { translated, total, ratio }
lintSlotMarkdown, // unbalanced fence / {@link} / braces → error
validateTokenParity, // dropped/added {token} → error
} from '@clean-jsdoc-theme/bhasha';
贡献者
感谢所有帮助建立干净的jsdoc主题的人.
许可证
麻省理工学院.