Package Exports
- fluent-vue
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (fluent-vue) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
fluent-vue
Vue.js integration for Project Fluent.
Project is in beta state. I don't recommend using it in production just yet, but would greatly appreciate any feedback.
Features
$t
method - simple way of adding translations
Resources:
aria-key = Aria value
greeting = Hello, {$name}
Template:
<div :aria-label="$t('aria-key')">{{ $t('greeting', { name: 'World' }) }}</div>
Result:
<div aria-label="Aria value">Hello, World</div>
$ta
method - gets all attributes for translation key
Useful for binding translations to custom components
Resources:
greeting = Hello, {$name}
.aria-label = Label value
Template:
<div v-bind="$ta('greeting')">{{ $t('greeting', { name: 'World' }) }}</div>
Result:
<div aria-label="Aria value">Hello, World</div>
v-t
directive - binds all whitelisted attributes
Resources:
greeting = Hello, {$name}
.aria-label = Label value
Template:
<div v-t:greeting="{ name: 'World' }"></div>
Result:
<div aria-label="Label value">Hello, World</div>
i18n
component - allows using components inside translations
Resources:
greeting = Hello, {$name}
Template:
<i18n path="greeting" tag="div">
<template #name>
<b>World</b>
</template>
</i18n>
Result:
<div>Hello, <b>World</b></div>
Instalation
Add fluent-vue
and @fluent/bundle
to your project:
For npm
users:
npm install fluent-vue @fluent/bundle
For yarn
users:
yarn add fluent-vue @fluent/bundle
Install Vue plugin
import Vue from 'vue';
import FluentVue from 'fluent-vue';
Vue.use(FluentVue)
Configure fluent-vue
import { FluentBundle, FluentResource } from '@fluent/bundle';
// Create bundle
const bundle = new FluentBundle({
locales: 'en'
})
// Add resources to the bundle
bundle.addResource(new FluentResource('key = World'))
bundle.addResource(new FluentResource('another-key = Hello, {$name}'))
// Create `FluentVue` instance with options
const fluent = new FluentVue({
bundles: [bundle]
})
// Add `fluent` option to your Vue instance
new Vue({
el: "#root",
fluent,
render: h => h(App)
})