useTranslate composable
并非所有东西都适合一个组件。诸如 placeholder 或 title 之类的属性采用字符串,有时您需要在脚本中进行翻译。对于这些,使用 useTranslate composable 或 translate 方法。
useTranslate composable
useTranslate 返回一个通常名为 t 的函数,用于翻译字符串:
<script setup lang="ts">import { useTranslate } from '@magic-translate/vue';const t = useTranslate();</script><template><input :placeholder="t('Search products')" /></template>
t 在翻译加载时返回原始文本。一旦准备就绪,组件就会重新渲染。像 <T> 组件一样,它接受语言和形式选项:
<input :placeholder="t('Your name', { lang: 'fr', formality: 'formal' })" />
它还接受 id 来自行编辑文本的这种用法:
<button :title="t('Save', { id: 'checkout-save' })" />
变量
在 v 中传递不应转换的值,并将其引用为 $name,与 <T> 组件相同:
<input :placeholder="t('Search $count products', { v: { count } })" />
文本一次被翻译为 Search {0} products,当 count 更改时,缓存的翻译将被重复使用。
useT 与 useTranslate 相同 composable。
在代码中翻译
要翻译脚本中的字符串,请调用 translate。它返回了一个承诺。
import { useMagicTranslate } from '@magic-translate/vue';const magicTranslate = useMagicTranslate();const message = await magicTranslate.translate('Your order has been placed');// with optionsconst formal = await magicTranslate.translate('How are you?', {lang: 'fr',formality: 'formal'});
如果没有 lang 选项,文本将被翻译成当前语言。
translate 也接受变量:
const message = await magicTranslate.translate('Your order $id has shipped', {v: { id: order.id }});
外部组件,例如在商店中,直接使用 createMagicTranslate 返回的对象。它提供相同的 translate 和 setLanguage 方法和 language 属性。