Skip to content
This repository was archived by the owner on Sep 17, 2022. It is now read-only.
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: fluent-vue/rollup-plugin-fluent-vue
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v3.0.1
Choose a base ref
...
head repository: fluent-vue/rollup-plugin-fluent-vue
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref

Commits on Mar 28, 2022

  1. Configure Renovate (#1)

    Co-authored-by: Renovate Bot <bot@renovateapp.com>
    Co-authored-by: Ivan Demchuk <ivan.demchuk@gmail.com>
    3 people authored Mar 28, 2022
    Copy the full SHA
    c1261a8 View commit details
  2. Update all non-major dependencies (#4)

    Co-authored-by: Renovate Bot <bot@renovateapp.com>
    renovate[bot] and renovate-bot authored Mar 28, 2022
    Copy the full SHA
    6bebe77 View commit details
  3. Update actions/setup-node action to v3 (#7)

    Co-authored-by: Renovate Bot <bot@renovateapp.com>
    renovate[bot] and renovate-bot authored Mar 28, 2022
    Copy the full SHA
    f19a71e View commit details
  4. Update actions/checkout action to v3 (#6)

    Co-authored-by: Renovate Bot <bot@renovateapp.com>
    renovate[bot] and renovate-bot authored Mar 28, 2022
    Copy the full SHA
    332056b View commit details
  5. Pin dependencies (#3)

    Co-authored-by: Renovate Bot <bot@renovateapp.com>
    renovate[bot] and renovate-bot authored Mar 28, 2022
    Copy the full SHA
    4d6f74a View commit details
  6. Switch to antfu eslint config

    Demivan committed Mar 28, 2022
    Copy the full SHA
    4406a6e View commit details
  7. Fix eslint warnings

    Demivan committed Mar 28, 2022
    Copy the full SHA
    34cb013 View commit details

Commits on Mar 29, 2022

  1. Copy the full SHA
    24342c2 View commit details
  2. Create vitest.config.ts

    Demivan authored Mar 29, 2022
    Copy the full SHA
    472b8a3 View commit details
  3. Delete vitest.config.ts

    Demivan authored Mar 29, 2022
    Copy the full SHA
    572a241 View commit details
  4. Fix build errors

    Demivan committed Mar 29, 2022
    Copy the full SHA
    acd1810 View commit details

Commits on Mar 30, 2022

  1. Copy the full SHA
    9ebb853 View commit details
  2. Add script setup tests

    Demivan committed Mar 30, 2022
    Copy the full SHA
    90e8881 View commit details
  3. Add tests

    Demivan committed Mar 30, 2022
    Copy the full SHA
    1adf6d5 View commit details
  4. Make warning an option

    Demivan committed Mar 30, 2022
    Copy the full SHA
    0195cd3 View commit details
  5. Updace package version

    Demivan committed Mar 30, 2022
    Copy the full SHA
    ea16d08 View commit details
  6. Update tests

    Demivan committed Mar 30, 2022
    Copy the full SHA
    e09ac46 View commit details
  7. Copy the full SHA
    d7ae639 View commit details
  8. Fix eslint

    Demivan committed Mar 30, 2022
    Copy the full SHA
    5f9ea33 View commit details
  9. Fix build

    Demivan committed Mar 30, 2022
    Copy the full SHA
    699f625 View commit details
  10. Copy the full SHA
    2aa15d1 View commit details
  11. Fix for locales with dash

    Demivan committed Mar 30, 2022
    Copy the full SHA
    5756661 View commit details
  12. Allow to mix syntaxes

    Demivan committed Mar 30, 2022
    Copy the full SHA
    14404d2 View commit details

Commits on Mar 31, 2022

  1. Copy the full SHA
    3a1ef1a View commit details

Commits on Apr 13, 2022

  1. Fix parsing vue components

    Demivan committed Apr 13, 2022
    Copy the full SHA
    c82e82d View commit details

Commits on Jun 10, 2022

  1. Update codecov/codecov-action action to v3 (#12)

    Co-authored-by: Renovate Bot <bot@renovateapp.com>
    renovate[bot] and renovate-bot authored Jun 10, 2022
    Copy the full SHA
    7502768 View commit details
  2. Update index.ts

    Demivan authored Jun 10, 2022
    Copy the full SHA
    43d3456 View commit details

Commits on Jul 5, 2022

  1. Update package.json

    Demivan committed Jul 5, 2022
    Copy the full SHA
    c855ee6 View commit details
  2. Release

    Demivan committed Jul 5, 2022
    Copy the full SHA
    a7014d4 View commit details
  3. Copy the full SHA
    bebde0d View commit details

Commits on Jul 14, 2022

  1. Update pnpm

    Demivan committed Jul 14, 2022
    Copy the full SHA
    027793b View commit details
  2. Update vitest

    Demivan committed Jul 14, 2022
    Copy the full SHA
    751483c View commit details
  3. Update tests

    Demivan committed Jul 14, 2022
    Copy the full SHA
    2f4d13f View commit details
  4. Update tests

    Demivan committed Jul 14, 2022
    Copy the full SHA
    e3ade63 View commit details
  5. Fix eslint

    Demivan committed Jul 14, 2022
    Copy the full SHA
    c8b1711 View commit details
  6. Pin dependencies (#18)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    renovate[bot] authored Jul 14, 2022
    Copy the full SHA
    ac8167c View commit details
  7. Lock file maintenance (#11)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    renovate[bot] authored Jul 14, 2022
    Copy the full SHA
    5af031c View commit details

Commits on Jul 15, 2022

  1. Update dependency tsup to v6 (#15)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    renovate[bot] authored Jul 15, 2022
    Copy the full SHA
    edc000e View commit details
  2. Update dependency release-it to v15 (#14)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    renovate[bot] authored Jul 15, 2022
    Copy the full SHA
    0b03daa View commit details
  3. Update dependency vite to v3 (#17)

    * Update dependency vite to v3
    
    * Update tests
    
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    Co-authored-by: Ivan Demchuk <ide@interlogic.com.ua>
    renovate[bot] and Demivan authored Jul 15, 2022
    Copy the full SHA
    6dbccb6 View commit details
  4. Update dependency @vitejs/plugin-vue to v3 (#16)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    renovate[bot] authored Jul 15, 2022
    Copy the full SHA
    7c4657c View commit details

Commits on Jul 16, 2022

  1. Update dependency vite-plugin-vue2 to v2 (#13)

    * Update dependency vite-plugin-vue2 to v2
    
    * Update snapshots
    
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    Co-authored-by: Ivan Demchuk <ivan.demchuk@gmail.com>
    renovate[bot] and Demivan authored Jul 16, 2022
    Copy the full SHA
    dbe7ea3 View commit details

Commits on Sep 17, 2022

  1. Deprecate

    Demivan authored Sep 17, 2022
    Copy the full SHA
    0c0d834 View commit details
12 changes: 1 addition & 11 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
parserOptions: {
project: './tsconfig.json'
},
plugins: ['@typescript-eslint'],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
'standard-with-typescript'
'@antfu',
],
ignorePatterns: ['node_modules/', 'dist/', '*.js']
}
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
* text=auto

*.ftl text eol=lf
24 changes: 12 additions & 12 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -11,41 +11,41 @@ env:

jobs:
test:
name: "Test on Node.js ${{ matrix.node }} OS: ${{ matrix.os }} Vue: ${{matrix.vue}}"
name: 'Test on Node.js ${{ matrix.node }} OS: ${{ matrix.os }}'
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node: [16]
node: [16, 17]
steps:
- uses: actions/checkout@v2.3.5
- uses: actions/checkout@v3.0.0
with:
fetch-depth: 0
- uses: actions/setup-node@v2.4.1
- uses: actions/setup-node@v3.0.0
with:
node-version: ${{ matrix.node }}
- uses: pnpm/action-setup@v2.0.1
- uses: pnpm/action-setup@v2.2.1
with:
version: 6.x.x
version: 7.x.x
run_install: true

- name: Test
run: pnpm test -- --coverage

- name: Upload code coverage
uses: codecov/codecov-action@v2
uses: codecov/codecov-action@v3

lint:
runs-on: ubuntu-latest
name: "Lint source code"
name: Lint source code
steps:
- uses: actions/checkout@v2.3.5
- uses: actions/checkout@v3.0.0
with:
fetch-depth: 0
- uses: actions/setup-node@v2.4.1
- uses: pnpm/action-setup@v2.0.1
- uses: actions/setup-node@v3.0.0
- uses: pnpm/action-setup@v2.2.1
with:
version: 6.x.x
version: 7.x.x
run_install: true

- name: Lint
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
strict-peer-dependencies=false
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# ⚠ DEPRECATED ⚠

**Funtionatily was moved to [unplugin-fluent-vue](https://github.com/fluent-vue/unplugin-fluent-vue)**

rollup-plugin-fluent-vue
=================

@@ -29,8 +33,8 @@ import fluentPlugin from 'rollup-plugin-fluent-vue'

module.exports = {
plugins: [
fluentPlugin()
]
fluentPlugin(),
],
}
```

@@ -41,7 +45,7 @@ import vue from '@vitejs/plugin-vue'
import fluentPlugin from 'rollup-plugin-fluent-vue'

export default {
plugins: [vue(), fluentPlugin()]
plugins: [vue(), fluentPlugin()],
}
```

@@ -65,7 +69,7 @@ Example of `App.vue` with custom block:
<script>
export default {
name: 'app'
name: 'App',
}
</script>
278 changes: 278 additions & 0 deletions __tests__/__snapshots__/external.spec.ts.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,278 @@
// Vitest Snapshot v1

exports[`external ftl file support mode:development > works with vue 2 1`] = `
"
const _missingExportShim = void 0;
const da_ftl = new _missingExportShim(\\"\\");
const en_ftl = new _missingExportShim(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photos\\\\n } to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\\\n\\");
var render = function() {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c(\\"div\\", [_c(\\"div\\", [_vm._v(_vm._s(_vm.$t(\\"hello-user\\", {
userName: _vm.userName
})))]), _c(\\"div\\", [_vm._v(_vm._s(_vm.$t(\\"shared-photos\\", {
userName: _vm.userName,
photoCount: _vm.photoCount,
userGender: _vm.userGender
})))])]);
};
var staticRenderFns = [];
render._withStripped = true;
function normalizeComponent(scriptExports, render2, staticRenderFns2, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {
var options = typeof scriptExports === \\"function\\" ? scriptExports.options : scriptExports;
if (render2) {
options.render = render2;
options.staticRenderFns = staticRenderFns2;
options._compiled = true;
}
if (functionalTemplate) {
options.functional = true;
}
if (scopeId) {
options._scopeId = \\"data-v-\\" + scopeId;
}
var hook;
if (moduleIdentifier) {
hook = function(context) {
context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext;
if (!context && typeof __VUE_SSR_CONTEXT__ !== \\"undefined\\") {
context = __VUE_SSR_CONTEXT__;
}
if (injectStyles) {
injectStyles.call(this, context);
}
if (context && context._registeredComponents) {
context._registeredComponents.add(moduleIdentifier);
}
};
options._ssrRegister = hook;
} else if (injectStyles) {
hook = shadowMode ? function() {
injectStyles.call(this, (options.functional ? this.parent : this).$root.$options.shadowRoot);
} : injectStyles;
}
if (hook) {
if (options.functional) {
options._injectStyles = hook;
var originalRender = options.render;
options.render = function renderWithStyleInjection(h, context) {
hook.call(context);
return originalRender(h, context);
};
} else {
var existing = options.beforeCreate;
options.beforeCreate = existing ? [].concat(existing, hook) : [hook];
}
}
return {
exports: scriptExports,
options
};
}
const __vue2_script = {};
const __cssModules = {};
var __component__ = /* @__PURE__ */ normalizeComponent(__vue2_script, render, staticRenderFns, false, __vue2_injectStyles, null, null, null);
function __vue2_injectStyles(context) {
for (let o in __cssModules) {
this[o] = __cssModules[o];
}
}
__component__.options.__file = \\"fixtures/components/external.vue\\";
__component__.fluent = __component__.fluent || {};
__component__.fluent[\\"en\\"] = en_ftl;
__component__.fluent[\\"da\\"] = da_ftl;
"
`;
exports[`external ftl file support mode:development > works with vue 3 1`] = `
"
const _missingExportShim = void 0;
const da_ftl = new _missingExportShim(\\"\\");
const en_ftl = new _missingExportShim(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photos\\\\n } to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\\\n\\");
const _sfc_main = {};
_sfc_main.fluent = _sfc_main.fluent || {};
_sfc_main.fluent[\\"en\\"] = en_ftl;
_sfc_main.fluent[\\"da\\"] = da_ftl;
"
`;
exports[`external ftl file support mode:development > works with vue 3 rollup plugin 1`] = `
"
const _missingExportShim = void 0;
const da_ftl = new _missingExportShim(\\"\\");
const en_ftl = new _missingExportShim(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photos\\\\n } to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\\\n\\");
function render(_ctx, _cache) {
return _missingExportShim(), _missingExportShim(\\"div\\", null, [
_missingExportShim(\\"div\\", null, _missingExportShim(_ctx.$t(\\"hello-user\\", { userName: _ctx.userName })), 1),
_missingExportShim(\\"div\\", null, _missingExportShim(_ctx.$t(\\"shared-photos\\", { userName: _ctx.userName, photoCount: _ctx.photoCount, userGender: _ctx.userGender })), 1)
]);
}
const script = {};
script.render = render;
script.__file = \\"__tests__/fixtures/components/external.vue\\";
script.fluent = script.fluent || {};
script.fluent[\\"en\\"] = en_ftl;
script.fluent[\\"da\\"] = da_ftl;
"
`;
exports[`external ftl file support mode:development > works with vue 3 script setup 1`] = `
"
const _missingExportShim = void 0;
const en_ftl = new _missingExportShim(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photos\\\\n } to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\\\n\\");
const _sfc_main = {
setup(__props) {
return (_ctx, _cache) => {
return _missingExportShim(), _missingExportShim(\\"div\\", null, [
_missingExportShim(\\"div\\", null, _missingExportShim(_ctx.$t(\\"hello-user\\", { userName: _ctx.userName })), 1),
_missingExportShim(\\"div\\", null, _missingExportShim(_ctx.$t(\\"shared-photos\\", { userName: _ctx.userName, photoCount: _ctx.photoCount, userGender: _ctx.userGender })), 1)
]);
};
}
};
_sfc_main.fluent = _sfc_main.fluent || {};
_sfc_main.fluent[\\"en\\"] = en_ftl;
"
`;
exports[`external ftl file support mode:production > works with vue 2 1`] = `
"
const _missingExportShim = void 0;
const da_ftl = new _missingExportShim(\\"\\");
const en_ftl = new _missingExportShim(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photos\\\\n } to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\\\n\\");
var render = function() {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c(\\"div\\", [_c(\\"div\\", [_vm._v(_vm._s(_vm.$t(\\"hello-user\\", {
userName: _vm.userName
})))]), _c(\\"div\\", [_vm._v(_vm._s(_vm.$t(\\"shared-photos\\", {
userName: _vm.userName,
photoCount: _vm.photoCount,
userGender: _vm.userGender
})))])]);
};
var staticRenderFns = [];
function normalizeComponent(scriptExports, render2, staticRenderFns2, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {
var options = typeof scriptExports === \\"function\\" ? scriptExports.options : scriptExports;
if (render2) {
options.render = render2;
options.staticRenderFns = staticRenderFns2;
options._compiled = true;
}
if (functionalTemplate) {
options.functional = true;
}
if (scopeId) {
options._scopeId = \\"data-v-\\" + scopeId;
}
var hook;
if (moduleIdentifier) {
hook = function(context) {
context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext;
if (!context && typeof __VUE_SSR_CONTEXT__ !== \\"undefined\\") {
context = __VUE_SSR_CONTEXT__;
}
if (injectStyles) {
injectStyles.call(this, context);
}
if (context && context._registeredComponents) {
context._registeredComponents.add(moduleIdentifier);
}
};
options._ssrRegister = hook;
} else if (injectStyles) {
hook = shadowMode ? function() {
injectStyles.call(this, (options.functional ? this.parent : this).$root.$options.shadowRoot);
} : injectStyles;
}
if (hook) {
if (options.functional) {
options._injectStyles = hook;
var originalRender = options.render;
options.render = function renderWithStyleInjection(h, context) {
hook.call(context);
return originalRender(h, context);
};
} else {
var existing = options.beforeCreate;
options.beforeCreate = existing ? [].concat(existing, hook) : [hook];
}
}
return {
exports: scriptExports,
options
};
}
const __vue2_script = {};
const __cssModules = {};
var __component__ = /* @__PURE__ */ normalizeComponent(__vue2_script, render, staticRenderFns, false, __vue2_injectStyles, null, null, null);
function __vue2_injectStyles(context) {
for (let o in __cssModules) {
this[o] = __cssModules[o];
}
}
__component__.fluent = __component__.fluent || {};
__component__.fluent[\\"en\\"] = en_ftl;
__component__.fluent[\\"da\\"] = da_ftl;
"
`;
exports[`external ftl file support mode:production > works with vue 3 1`] = `
"
const _missingExportShim = void 0;
const da_ftl = new _missingExportShim(\\"\\");
const en_ftl = new _missingExportShim(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photos\\\\n } to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\\\n\\");
const _sfc_main = {};
_sfc_main.fluent = _sfc_main.fluent || {};
_sfc_main.fluent[\\"en\\"] = en_ftl;
_sfc_main.fluent[\\"da\\"] = da_ftl;
"
`;
exports[`external ftl file support mode:production > works with vue 3 rollup plugin 1`] = `
"
const _missingExportShim = void 0;
const da_ftl = new _missingExportShim(\\"\\");
const en_ftl = new _missingExportShim(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photos\\\\n } to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\\\n\\");
function render(_ctx, _cache) {
return _missingExportShim(), _missingExportShim(\\"div\\", null, [
_missingExportShim(\\"div\\", null, _missingExportShim(_ctx.$t(\\"hello-user\\", { userName: _ctx.userName })), 1),
_missingExportShim(\\"div\\", null, _missingExportShim(_ctx.$t(\\"shared-photos\\", { userName: _ctx.userName, photoCount: _ctx.photoCount, userGender: _ctx.userGender })), 1)
]);
}
const script = {};
script.render = render;
script.fluent = script.fluent || {};
script.fluent[\\"en\\"] = en_ftl;
script.fluent[\\"da\\"] = da_ftl;
"
`;
exports[`external ftl file support mode:production > works with vue 3 script setup 1`] = `
"
const _missingExportShim = void 0;
const en_ftl = new _missingExportShim(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photos\\\\n } to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\\\n\\");
const _sfc_main = {
setup(__props) {
return (_ctx, _cache) => {
return _missingExportShim(), _missingExportShim(\\"div\\", null, [
_missingExportShim(\\"div\\", null, _missingExportShim(_ctx.$t(\\"hello-user\\", { userName: _ctx.userName })), 1),
_missingExportShim(\\"div\\", null, _missingExportShim(_ctx.$t(\\"shared-photos\\", { userName: _ctx.userName, photoCount: _ctx.photoCount, userGender: _ctx.userGender })), 1)
]);
};
}
};
_sfc_main.fluent = _sfc_main.fluent || {};
_sfc_main.fluent[\\"en\\"] = en_ftl;
"
`;
Loading