#vuejs2 #localization #vue-i18n
Вопрос:
Я хочу показать перевод названия компонента. Вот HTML — код:
<user-card
:totalUser="totalUsers"
color="primary"
icon="UserIcon"
user-title="Total users"
/>
На моем user-card
компоненте у меня есть это:
<b-card class="text-center">
<b-avatar
:variant="`light-${color}`"
class="mb-1"
size="45"
>
<feather-icon
:icon="icon"
size="21"
/>
</b-avatar>
<div class="truncate">
<h2 class="mb-25 font-weight-bolder">
{{ totalUser}}
</h2>
<span>{{ user-title }}</span>
</div>
</b-card>
И для использования перевода у меня есть этот синтаксис, в котором я получаю переведенные термины из файла JSON:
{{$t("Total users")}}
Как я могу реализовать это на user-title
?
Комментарии:
1. что такое {{$t(«Общее количество пользователей»)}} ? вкратце, что такое $t
2. @MohsinAmjad-это функция перевода, предоставляемая Vue I18n.
3. доступен ли $t в
this
таком контексте.$t в вашем скрипте ?4. ты хочешь сказать вот так ?
user-title="$this.$t("Total users")"
Ответ №1:
Взгляните на это, я попытался воспроизвести ваш сценарий в песочнице кода.
Что вы делаете неправильно, так это то, что $t-это функция, которая принимает имя переменной, в котором содержится фактическое сообщение, сначала вам нужно определить переменную, например, totalUserTitle: «Всего пользователей» для нескольких языков, как я сделал в index.js, а затем вы можете использовать его как $t(totalUserTitle)
.
Ответ №2:
Просто используйте v-bind
и передайте выражение непосредственно вашему user-card
компоненту:
<user-card
...
:user-title="$t('Total users')"
/>
На самом деле вы уже используете этот синтаксис в нескольких местах, эта директива просто указывает Vue «динамически привязывать один или несколько атрибутов или компонент к выражению», что именно то, что вы ищете здесь.
Это будет оцениваться $t('Total users')
как выражение, а затем передаст результат вашему компоненту в качестве опоры.