npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@dlabs71/d-vue-localization

v1.0.0

Published

Library for add support localization

Downloads

3

Readme

D-vue-localization

NPM Version License

Библиотека для упрощения реализации механизма локализации во Vue.js приложении

Установка NPM

npm i @dlabs71/d-vue-localization

Использование

Данная библиотека может быть использована в любом приложении основанном на стеке Vue.js 2 и Vuex 3.

D-vue-localization предоставляет Vue плагин при подключении которого добавляется глобальный mixin и vuex store module.

main.js

import Vue from 'vue';
import store from '@/store';
import router from '@/router';
import App from '@/App';
import DL10nPlugin from '@dlabs71/d-vue-localization';

const lang2messages = {
    "en": {
        MAIN_FORM: {
            ACCEPT_BTN_LABEL: "Accept",
            CANCEL_BTN_LABEL: "Cancel",
            PLEASE_WAIT: "Please wait ......"
        }
    },
    "ru": {
        MAIN_FORM: {
            ACCEPT_BTN_LABEL: "Принять",
            CANCEL_BTN_LABEL: "Отмена",
            PLEASE_WAIT: "Пожалуйста подождите ......"
        }
    }
};

Vue.use(DL10nPlugin, {
    lang2messages: lang2messages,
    store: store
});

new Vue({
    components: {App},
    router,
    store,
    template: '<App/>'
}).$mount('#app');

App.vue


<template>
    <div id="d-app" class="app d-app">
        <div v-if="loading" class="prepare-overlay">
            <span>{{ L10N_FORM.PLEASE_WAIT }}</span>
        </div>
        <v-app v-else>
            <v-btn text @click="acceptHandler">
                {{ L10N_FORM.ACCEPT_BTN_LABEL }}
            </v-btn>
            <v-btn text @click="cancelHandler">
                {{ L10N_FORM.CANCEL_BTN_LABEL }}
            </v-btn>
        </v-app>
    </div>
</template>

<script>
export default {
    name: 'app',
    data() {
        return {}
    },
    methods: {
        acceptHandler() {
        },
        cancelHandler() {
        }
    },
    computed: {
        L10N_FORM() {
            return this.getDL10nNameByCode('MAIN_FORM');
        }
    },
    mounted() {
        if (!this.getDL10nLang()) {
            this.setDL10nLang("ru");
        }
    }
}
</script>

Документация

Оглавление

1. Vue плагин DL10nPlugin

Vue плагин DL10nPlugin предназначен для быстрого подключения библиотеки к Vue.js приложению. После подключения появляется доступ к методам/computed свойствам/data предоставляемыми vue mixin (DL10nMixin). А также, при указании экземпляра vuex хранилища, автоматически регистрируется vuex store module (DL10nStoreModule). Параметры плагина описаны в таблице ниже:

| Параметр | Тип | Обязательность | Пример | Описание | | :------------- | :----------| :------------------| :------------------------------------------------ | :-------------| | lang2messages | Object | нет | {"ru": {NAME1: "имя 1"}, "en": {NAME1: "name 1"}} | Объект маппинга кода языка на сообщения | | store | Vuex | нет | | Экземпляр vuex |

Пример использования:

import Vue from 'vue';
import store from '@/store';
import router from '@/router';
import App from '@/App';
import DL10nPlugin from '@dlabs71/d-vue-localization';

const lang2messages = {
    "en": {
        MAIN_FORM: {
            ACCEPT_BTN_LABEL: "Accept",
            CANCEL_BTN_LABEL: "Cancel",
            PLEASE_WAIT: "Please wait ......"
        }
    },
    "ru": {
        MAIN_FORM: {
            ACCEPT_BTN_LABEL: "Принять",
            CANCEL_BTN_LABEL: "Отмена",
            PLEASE_WAIT: "Пожалуйста подождите ......"
        }
    }
};

Vue.use(DL10nPlugin, {
    lang2messages: lang2messages,
    store: store
});

2. Vue миксин DL10nMixin

Vue миксин DL10nMixin регистрируется глобально и содержит вспомогательные методы/свойства для организации механизма локализации в приложении.

2.1. Свойства data

В блоке data миксин добавляет только одно свойство: $dL10n. В данном свойстве находиться экземпляр класса DL10n.

2.2. Методы

Миксин предоставляет ряд методов для реализации локализации в приложении. В таблице ниже описаны эти методы.

| Метод | Параметры | Описание | | :----------------- | :------------------- | :--------------------------------------------- | | getDL10nLang | | Метод получения текущего кода языка, установленного в сторе | | setDL10nLang | lang - код языка | Метод установки кода языка в стор | | getDL10nNameByCode | name - код сообщения | Метод получения локализованного сообщения по его коду |

Пример использования:


<script>
export default {
    name: 'app',
    data() {
        return {}
    },
    computed: {
        L10N_FORM() {
            return this.getDL10nNameByCode('MAIN_FORM');
        }
    },
    mounted() {
        if (!this.getDL10nLang()) {
            this.setDL10nLang("ru");
        }
    }
}
</script>

2.3. Вычисляемые свойства (computed)

Миксин предоставляет одно вычисляемое свойство: $currentLang - оно имеет значение актуального кода языка, установленного в сторе.

2.4. Блок watch

В блоке watch миксин добавляет слушателя на вычисляемое свойство $currentLang. При изменении языка в сторе происходит автоматическое изменение и перезагрузка атрибутов класса DL10n в свойстве $dL10n блока data.

2.5. Хук created()

Миксин также реализует хук жизненного цикла created(). В нём реализуется начальная инициализация свойства $dL10n в блоке data. А также первоначальная установка языка.

3. Модуль Vuex DL10nStoreModule

Библиотека предоставляет готовый модуль Vuex (DL10nStoreModule) для организации хранения кода языка в приложении. Данный модуль подключается автоматически в плагине при указании параметра store. Также его можно подключить и отдельно.

Пример подключения:

import Vue from 'vue';
import Vuex from 'vuex';
import {DL10nStoreModule, STORE_MODULE_NAME} from '@dlabs71/d-vue-localization';

Vue.use(Vuex);

export default new Vuex.Store({
    modules: {
        [STORE_MODULE_NAME]: DL10nStoreModule
    },
    strict: process.env.NODE_ENV !== 'production'
});

4. Класс DL10n

Класс DL10n предназначен для реализации локализации приложения. Он предоставляет хранилище маппинга кода языка на сообщения, а также ряд методов для работы и получения сообщения для определённого языка.

Библиотека также предоставляет готовый экземпляр класса DL10n.

import {DL10nInstance} from '@dlabs71/d-vue-localization';

| Поле | Тип | Значение по умолчанию | Описание | | :------------ | :----------| :------------------------- | :----------------| | lang | String | null | Текущий код языка локализации | | lang2messages | Object | {} | Хранилище сообщений для каждого из языков |

4.1. Статичный геттер instance

Статичный геттер instance предназначен для реализации паттерна Singleton для данного класса.

4.2. Метод addLang

Метод addLang предназначен для добавления нового кода языка с объектом сообщений для него.

| Параметр | Тип | Обязательность | Значение по умолчанию | Описание | | :------------| :-------| :----------------- | :------------------------ | :----------------| | name | String | да | | Код языка | | messages | Object | да | | Объект с сообщениями для данного языка |

Пример использования:

import {DL10n} from '@dlabs71/d-vue-localization';

let dL10n = new DL10n();

let messagesEn = {
    NAME1: "name 1",
    NAME2: "name 2"
};

dL10n.addLang("en", messagesEn);

let messagesRu = {
    NAME1: "имя 1",
    NAME2: "имя 2"
};

dL10n.addLang("ru", messagesRu);

4.3. Метод addMessagesToLang

Метод addMessagesToLang предназначен для добавления дополнительных сообщений к уже сохранённому языку.

| Параметр | Тип | Обязательность | Значение по умолчанию | Описание | | :------------| :-------| :----------------- | :------------------------ | :----------------| | lang | String | да | | Код языка | | messages | Object | да | | Объект с сообщениями для данного языка |

Пример использования:

import {DL10n} from '@dlabs71/d-vue-localization';

let dL10n = new DL10n({
    "en": {
        NAME1: "name 1",
        NAME2: "name 2"
    },
    "ru": {
        NAME1: "имя 1",
        NAME2: "имя 2"
    }
});

let newMessagesEn = {
    NAME3: "name 3",
    NAME4: "name 4"
};

dL10n.addMessagesToLang("en", messagesEn);

4.4. Метод setLang2Messages

Метод setLang2Messages предназначен для инициализации хранилища маппинга языка на его сообщения.

| Параметр | Тип | Обязательность | Значение по умолчанию | Описание | | :------------- | :------ | :----------------- | :------------------------ | :----------------| | lang2messages | Object | нет | {} | Объект маппинга языка на его сообщения |

Пример использования:

import {DL10n} from '@dlabs71/d-vue-localization';

let dL10n = new DL10n();

dL10n.setLang2Messages({
    "en": {
        NAME1: "name 1",
        NAME2: "name 2"
    },
    "ru": {
        NAME1: "имя 1",
        NAME2: "имя 2"
    }
});

4.5. Метод loadLang

Метод loadLang предназначен для загрузки определённого языка из хранилища. При этом в классе создаются дополнительные поля на основе кодов сообщений. Такие поля класса имеют префикс $.

| Параметр | Тип | Обязательность | Значение по умолчанию | Описание | | :------------- | :------ | :----------------- | :------------------------ | :----------------| | lang | String | да | | Код языка для загрузки из хранилища |

Пример использования:

import {DL10n} from '@dlabs71/d-vue-localization';

let dL10n = new DL10n({
    "en": {
        NAME1: "name 1",
        NAME2: "name 2"
    },
    "ru": {
        NAME1: "имя 1",
        NAME2: "имя 2"
    }
});

dL10n.loadLang("en");

/* В классе появятся следующие поля:
class DL10n {
    lang2messages = {.....};
    lang = "en";
    $NAME1 = "name 1";
    $NAME2 = "name 2";
}
*/

dL10n.loadLang("ru");

/* В классе появятся следующие поля:
class DL10n {
    lang2messages = {.....};
    lang = "ru";
    $NAME1 = "имя 1";
    $NAME2 = "имя 2";
}
*/

4.6. Метод getMessages

Метод getMessages предназначен для получения по коду языка списка всех сообщений, находящихся в хранилище.

| Параметр | Тип | Обязательность | Значение по умолчанию | Описание | | :------------- | :------ | :----------------- | :------------------------ | :----------------| | lang | String | да | | Код языка |

Пример использования:

import {DL10n} from '@dlabs71/d-vue-localization';

let dL10n = new DL10n({
    "en": {
        NAME1: "name 1",
        NAME2: "name 2"
    },
    "ru": {
        NAME1: "имя 1",
        NAME2: "имя 2"
    }
});

let messagesRu = dL10n.loadLang("ru");

/* 
messagesRu = {
    NAME1: "имя 1",
    NAME2: "имя 2"
}
*/