1 |
|
2 |
|
3 |
|
4 | 'use strict';
|
5 |
|
6 | const Base = require('../base/Base');
|
7 |
|
8 | module.exports = class LocaleFileMap extends Base {
|
9 |
|
10 | constructor (config) {
|
11 | super({
|
12 | localeDirectory: 'locale',
|
13 | required: false,
|
14 | ...config
|
15 | });
|
16 | try {
|
17 | this.createDefaultMap();
|
18 | this.createLocaleMap();
|
19 | } catch {}
|
20 | }
|
21 |
|
22 | createDefaultMap () {
|
23 | this._default = ClassHelper.spawn(FileMap, {
|
24 | directory: path.join(this.baseDirectory, this.directory),
|
25 | required: this.required
|
26 | });
|
27 | }
|
28 |
|
29 | createLocaleMap () {
|
30 | this._locales = {};
|
31 | const localePath = path.join(this.baseDirectory, this.localeDirectory);
|
32 | for (const language of fs.readdirSync(localePath)) {
|
33 | const directory = path.join(localePath, language, this.directory);
|
34 | if (fs.lstatSync(directory).isDirectory()) {
|
35 | const fileMap = ClassHelper.spawn(FileMap, {directory});
|
36 | if (!fileMap.isEmpty()) {
|
37 | this._locales[language] = fileMap;
|
38 | }
|
39 | }
|
40 | }
|
41 | }
|
42 |
|
43 | get (name, language) {
|
44 | return this._locales[language] && this._locales[language].get(name) || this._default.get(name);
|
45 | }
|
46 |
|
47 | isEmpty () {
|
48 | return this._default.isEmpty() && Object.values(this._locales).length === 0;
|
49 | }
|
50 | };
|
51 |
|
52 | const fs = require('fs');
|
53 | const path = require('path');
|
54 | const ClassHelper = require('../helper/ClassHelper');
|
55 | const FileMap = require('../base/FileMap');
|