翻译内容
标记你想要 Magic Translate 翻译的内容。在翻译加载之前,会显示原始内容。
<t> 元素
将文本放入 <t> 元素进行翻译。它可以包含 HTML:
<t>This content will be translated</t><t>Click <a href="/sale">here</a> to see <b>today's</b> deals.</t>
如果您更喜欢自定义元素名称,<mt-translate> 也可以。
data-t 属性
如果您无法添加包装元素,请在现有元素中添加 data-t 以翻译其内容:
<title data-t>My online shop</title><select><option data-t>Small</option><option data-t>Large</option></select>
属性
在 data-t-attrs 中列出要翻译的属性,用空格分隔:
<input placeholder="Search products" data-t-attrs="placeholder" /><img src="team.jpg" alt="Our team" title="Say hi" data-t-attrs="alt title" />
变量
将更改的值(例如名称或计数)作为 JSON 对象放入 data-v 中,并将其引用为 $name:
<t data-v='{"name": "Bob", "count": 7}'>Hi $name, you have $count new messages</t><input placeholder="Search $count products" data-t-attrs="placeholder" data-v='{"count": 3}' />
Magic Translate 一次将值周围的文本翻译为 Hi {0}, you have {1} new messages,然后将值放回页面中。翻译已缓存,适用于每个名称和每个计数,并且值本身永远不会发送到 Magic Translate。
要显示新值,请更改 data-v。缓存的翻译可以重复使用,不会提出任何请求:
element.dataset.v = JSON.stringify({ name: 'Bob', count: 8 });
这些值按其首次出现的顺序进行编号。翻译可以将它们移动到语言需要的任何地方,例如 {1} neue Nachrichten für {0}。
一些规则:
- 只有
data-v的密钥会被替换,因此$5之类的文本保持原样。如果两个密钥以相同的方式启动,例如count和counts,则最长的那个获胜。 - 同一个名称可以出现多次。
- 值以文本形式插入,而不是以 HTML 形式插入。改为在它们周围的文本中加上标记:
Hi <b>$name</b>. - 在内容中,变量仅在文本中替换,不在诸如
href或title之类的属性中替换。 - 如果
data-v不是有效的 JSON 对象,则文本将保持未翻译状态并记录警告。未出现在文本中的密钥也会记录警告。 $name在脚本加载之前一直可见。在页面的早期加载脚本,或者在此之前隐藏这些元素。
选项
使用这些属性为单个元素设置选项:
| 属性 | 价值 | 描述 |
|---|---|---|
data-formality | informal 或 formal | 设置翻译的形式。 |
data-lang | 语言代码 | 覆盖页面的语言。 |
data-t-id | 一个身份证 | 允许您自行编辑文本的这种用法。它适用于元素的内容,不适用于其 data-t-attrs。 |
<t data-lang="fr" data-formality="formal">How are you?</t>
更改的内容
稍后添加到页面或由您的脚本更改的内容也会被翻译。这适用于 JavaScript 呈现的内容,例如 htmx 或 jQuery。
同时请求的所有翻译都将通过单个请求发送到 API,并缓存翻译。你可以随心所欲地标记任意数量的元素。
局限性
单个元素的内容不能超过 10 KB,即大约 5,000 个字符。嵌套元素作为其父 <t> 元素的一部分进行翻译。