提交 5cd5de9d 编写于 作者: fxy060608's avatar fxy060608

feat(mp): custom vue-i18n compiler

上级 1a48f480
......@@ -21,6 +21,18 @@ var vue = require('vue');
*/
const VERSION = '9.1.9';
/**
* 目前暂不支持任何语法
* @param source
* @param _
* @returns
*/
function compileToFunction(source, _ = {}) {
return ((ctx) => {
return ctx.normalize([source]);
});
}
const warnMessages = {
[6 /* FALLBACK_TO_ROOT */]: `Fall back to {type} '{key}' with root locale.`,
[7 /* NOT_SUPPORTED_PRESERVE */]: `Not supported 'preserve'.`,
......@@ -1797,7 +1809,7 @@ function injectGlobalFields(app, composer) {
}
// register message compiler at vue-i18n
coreBase.registerMessageCompiler(coreBase.compileToFunction);
coreBase.registerMessageCompiler(compileToFunction);
// NOTE: experimental !!
{
const target = shared.getGlobalThis();
......
......@@ -21,6 +21,18 @@ var shared = require('@intlify/shared');
*/
const VERSION = '9.1.9';
/**
* 目前暂不支持任何语法
* @param source
* @param _
* @returns
*/
function compileToFunction(source, _ = {}) {
return ((ctx) => {
return ctx.normalize([source]);
});
}
function createI18nError(code, ...args) {
return coreBase.createCompileError(code, null, undefined);
}
......@@ -1687,7 +1699,7 @@ function injectGlobalFields(app, composer) {
}
// register message compiler at vue-i18n
coreBase.registerMessageCompiler(coreBase.compileToFunction);
coreBase.registerMessageCompiler(compileToFunction);
exports.DatetimeFormat = DatetimeFormat;
exports.NumberFormat = NumberFormat;
......
/*!
* vue-i18n v9.1.9
* (c) 2021 kazuya kawaguchi
* Released under the MIT License.
*/
import { getGlobalThis, format, makeSymbol, isPlainObject, isArray, hasOwn, isObject, isBoolean, isString, isRegExp, isFunction, assign, isNumber, warn, createEmitter, isEmptyObject } from '@intlify/shared';
import { createCompileError, handleFlatJson, createCoreContext, updateFallbackLocale, resolveValue, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, getLocaleChain, registerMessageCompiler, compileToFunction, setDevToolsHook } from '@intlify/core-base';
import { ref, getCurrentInstance, computed, watch, createVNode, Text, h, Fragment, inject, onMounted, onUnmounted, isRef } from 'vue';
import { setupDevtoolsPlugin } from '@vue/devtools-api';
import { VueDevToolsLabels, VueDevToolsPlaceholders, VueDevToolsTimelineColors } from '@intlify/vue-devtools';
console.log('custom vue-i18n......')
/*!
* vue-i18n v9.1.9
* (c) 2021 kazuya kawaguchi
* Released under the MIT License.
*/
import { getGlobalThis, format, makeSymbol, isPlainObject, isArray, hasOwn, isObject, isBoolean, isString, isRegExp, isFunction, assign, isNumber, warn, createEmitter, isEmptyObject } from '@intlify/shared';
import { createCompileError, handleFlatJson, createCoreContext, updateFallbackLocale, resolveValue, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, getLocaleChain, registerMessageCompiler, setDevToolsHook } from '@intlify/core-base';
import { ref, getCurrentInstance, computed, watch, createVNode, Text, h, Fragment, inject, onMounted, onUnmounted, isRef } from 'vue';
import { setupDevtoolsPlugin } from '@vue/devtools-api';
import { VueDevToolsLabels, VueDevToolsPlaceholders, VueDevToolsTimelineColors } from '@intlify/vue-devtools';
/**
* Vue I18n Version
*
......@@ -47,8 +47,20 @@ function initFeatureFlags() {
`configure your bundler to explicitly replace feature flag globals ` +
`with boolean literals to get proper tree-shaking in the final bundle.`);
}
}
}
/**
* 目前暂不支持任何语法
* @param source
* @param _
* @returns
*/
function compileToFunction(source, _ = {}) {
return ((ctx) => {
return ctx.normalize([source]);
});
}
const warnMessages = {
[6 /* FALLBACK_TO_ROOT */]: `Fall back to {type} '{key}' with root locale.`,
[7 /* NOT_SUPPORTED_PRESERVE */]: `Not supported 'preserve'.`,
......@@ -60,8 +72,8 @@ const warnMessages = {
};
function getWarnMessage(code, ...args) {
return format(warnMessages[code], ...args);
}
}
function createI18nError(code, ...args) {
return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages, args } : undefined);
}
......@@ -75,8 +87,8 @@ const errorMessages = {
[19 /* REQUIRED_VALUE */]: `Required in value: {0}`,
[20 /* INVALID_VALUE */]: `Invalid value`,
[21 /* CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN */]: `Cannot setup vue-devtools plugin`
};
};
const DEVTOOLS_META = '__INTLIFY_META__';
const TransrateVNodeSymbol = makeSymbol('__transrateVNode');
const DatetimePartsSymbol = makeSymbol('__datetimeParts');
......@@ -642,8 +654,8 @@ function createComposer(options = {}) {
};
}
return composer;
}
}
/**
* Convert to I18n Composer Options from VueI18n Options
*
......@@ -1001,8 +1013,8 @@ function createVueI18n(options = {}) {
};
}
return vueI18n;
}
}
const baseFormatProps = {
tag: {
type: [String, Object]
......@@ -1018,8 +1030,8 @@ const baseFormatProps = {
i18n: {
type: Object
}
};
};
/**
* Translation Component
*
......@@ -1128,8 +1140,8 @@ function getInterpolateArg({ slots }, keys) {
return arg;
}, {});
}
}
}
function renderFormatter(props, context, slotKeys, partFormatter) {
const { slots, attrs } = context;
return () => {
......@@ -1175,8 +1187,8 @@ function renderFormatter(props, context, slotKeys, partFormatter) {
? h(props.tag, assignedAttrs, children)
: h(Fragment, assignedAttrs, children);
};
}
}
const NUMBER_FORMAT_KEYS = [
'localeMatcher',
'style',
......@@ -1231,8 +1243,8 @@ const NumberFormat = {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
i18n[NumberPartsSymbol](...args));
}
};
};
const DATETIME_FORMAT_KEYS = [
'dateStyle',
'timeStyle',
......@@ -1292,8 +1304,8 @@ const DatetimeFormat = {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
i18n[DatetimePartsSymbol](...args));
}
};
};
function getComposer$2(i18n, instance) {
const i18nInternal = i18n;
if (i18n.mode === 'composition') {
......@@ -1352,8 +1364,8 @@ function makeParams(value) {
options.plural = plural;
}
return [path, named, options];
}
}
function apply(app, i18n, ...options) {
const pluginOptions = isPlainObject(options[0])
? options[0]
......@@ -1375,8 +1387,8 @@ function apply(app, i18n, ...options) {
}
// install directive
app.directive('t', vTDirective(i18n));
}
}
const VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';
let devtoolsApi;
async function enableDevTools(app, i18n) {
......@@ -1704,8 +1716,8 @@ function editScope(payload, i18n) {
composer.inheritLocale = payload.state.value;
}
}
}
}
// supports compatibility for legacy vue-i18n APIs
function defineMixin(vuei18n, composer, i18n) {
return {
......@@ -1823,8 +1835,8 @@ function mergeToRoot(root, options) {
Object.keys(options.numberFormats).forEach(locale => root.mergeNumberFormat(locale, options.numberFormats[locale]));
}
return root;
}
}
/**
* Vue I18n factory
*
......@@ -2221,8 +2233,8 @@ function injectGlobalFields(app, composer) {
}
Object.defineProperty(app.config.globalProperties, `$${method}`, desc);
});
}
}
// register message compiler at vue-i18n
registerMessageCompiler(compileToFunction);
{
......@@ -2234,6 +2246,6 @@ if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {
target.__INTLIFY__ = true;
setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);
}
if ((process.env.NODE_ENV !== 'production')) ;
export { DatetimeFormat, NumberFormat, Translation, VERSION, createI18n, useI18n, vTDirective };
if ((process.env.NODE_ENV !== 'production')) ;
export { DatetimeFormat, NumberFormat, Translation, VERSION, createI18n, useI18n, vTDirective };
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册