JSPM

  • Created
  • Published
  • Downloads 2222
  • Score
    100M100P100Q114147F
  • License MIT

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

styled with prettier Greenkeeper badge Travis Coveralls Dev Dependencies

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)
})