grunt-wording
Advanced tools
Comparing version 0.1.0 to 0.1.1
/* | ||
* grunt-wording | ||
* https://github.com/pix/grunt-contrib-wording | ||
* https://github.com/P1X3L/grunt-wording | ||
* | ||
@@ -5,0 +5,0 @@ * Copyright (c) 2013 pxceccaldi |
{ | ||
"name": "grunt-wording", | ||
"description": "The best Grunt plugin ever.", | ||
"version": "0.1.0", | ||
"homepage": "https://github.com/pix/grunt-contrib-wording", | ||
"version": "0.1.1", | ||
"homepage": "https://github.com/P1X3L/grunt-wording", | ||
"author": { | ||
@@ -12,6 +12,6 @@ "name": "pxceccaldi", | ||
"type": "git", | ||
"url": "git://github.com/pix/grunt-contrib-wording.git" | ||
"url": "git://github.com/pix/grunt-wording.git" | ||
}, | ||
"bugs": { | ||
"url": "https://github.com/pix/grunt-contrib-wording/issues" | ||
"url": "https://github.com/P1X3L/grunt-wording/issues" | ||
}, | ||
@@ -21,3 +21,3 @@ "licenses": [ | ||
"type": "MIT", | ||
"url": "https://github.com/pix/grunt-contrib-wording/blob/master/LICENSE-MIT" | ||
"url": "https://github.com/P1X3L/grunt-wording/blob/master/LICENSE-MIT" | ||
} | ||
@@ -44,2 +44,2 @@ ], | ||
] | ||
} | ||
} |
# grunt-wording | ||
> The best Grunt plugin ever. | ||
> A grunt plugin to help you auto generate wordings in your application. | ||
@@ -14,3 +14,3 @@ ## Getting Started | ||
One the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: | ||
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: | ||
@@ -29,8 +29,9 @@ ```js | ||
wording: { | ||
options: { | ||
// Task-specific options go here. | ||
}, | ||
your_target: { | ||
// Target-specific file lists and/or options go here. | ||
}, | ||
compiled { | ||
options: { | ||
// Task-specific options go here. | ||
}, | ||
src: [// Add the paths to the files you want the grunt-wording plugin to treat ], | ||
dest: // Destination of compiled files goes here. | ||
} | ||
}, | ||
@@ -42,14 +43,36 @@ }) | ||
#### options.delimiters | ||
Type: Table | ||
Default value: ['{%', '%}'] | ||
A table that is used to set your opening and closing delimiters to add a | ||
wording key in your file. | ||
#### options.sharedPrefix | ||
Type: `String` | ||
Default value: `mutual` | ||
A string that is used to set a prefix in your wording key to deal with | ||
the repeated wordings in your app. | ||
#### options.separator | ||
Type: `String` | ||
Default value: `', '` | ||
Default value: `.` | ||
A string value that is used to do something with whatever. | ||
A string that is used to separate the sharedPrefix from your wording | ||
key. | ||
#### options.punctuation | ||
#### options.wording | ||
Type: `String` | ||
Default value: `'.'` | ||
A string value that is used to do something else with whatever else. | ||
!! WARNING !! This isn't an option, it is a REQUIRED value. It is the path you want your wording.json to be generated. | ||
#### options.rootPapayawhip | ||
Type: Integer | ||
Default value: 0 | ||
### Usage Examples | ||
@@ -56,0 +79,0 @@ |
/* | ||
* grunt-wording | ||
* https://github.com/pix/grunt-contrib-wording | ||
* https://github.com/P1X3L/grunt-wording | ||
* | ||
@@ -14,127 +14,126 @@ * Copyright (c) 2013 pxceccaldi | ||
module.exports = function(grunt) { | ||
var _ = grunt.util._, | ||
options, | ||
data, | ||
shared, | ||
fullPrefix; | ||
// Please see the Grunt documentation for more information regarding task | ||
// creation: http://gruntjs.com/creating-tasks | ||
function isEmptyFile(filePath) { | ||
return !grunt.file.exists(filePath) || !grunt.file.read(filePath).trim().length; | ||
} | ||
grunt.registerMultiTask('wording', 'Create your wording translations file', function() { | ||
function hasWording(fileContent) { | ||
return (getFileKeys(fileContent).filter(function(key) { | ||
return (key.indexOf(fullPrefix) !== 0); | ||
}).length > 0); | ||
} | ||
// Merge task-specific and/or target-specific options with these defaults. | ||
function getFileKeys(fileContent) { | ||
var keys = [], a; | ||
while (a = _.templateSettings.interpolate.exec(fileContent)) { | ||
keys.push(a[1].trim()); | ||
} | ||
return keys.sort(); | ||
} | ||
var options = this.options({ | ||
delimiters: ['{%','%}'], | ||
sharedPrefix: "mutual", | ||
separator: '.', | ||
wording: 'test/wording.json', | ||
rootPapayawhip: 0 | ||
function createWording(filePath, fileContent) { | ||
var keys = getFileKeys(fileContent); | ||
var removeExtension = filePath.replace(path.extname(filePath), ''); | ||
var splitPath = removeExtension.split(path.sep).slice(options.rootPapayawhip); | ||
// Build nested object using the filepath until filename | ||
var builder = data; | ||
splitPath.forEach(function(dir) { | ||
if (!builder[dir]) { | ||
builder[dir] = {}; | ||
grunt.log.ok('Add file or directory ' + dir); | ||
} | ||
builder = builder[dir]; | ||
}); | ||
var delimiters = options.delimiters; | ||
var sharedPrefix = options.sharedPrefix; | ||
var fullPrefix = options.sharedPrefix + options.separator; | ||
// Build file object with keys | ||
var created = []; | ||
keys.forEach(function(key) { | ||
if (key.indexOf(fullPrefix) !== 0) { | ||
if (typeof builder[key] !== 'undefined') { return; } | ||
builder[key] = ''; | ||
created.push(key); | ||
} else { | ||
key = key.replace(fullPrefix, ''); | ||
if (typeof shared[key] !== 'undefined') { return; } | ||
shared[key] = ''; | ||
created.push(fullPrefix + key); | ||
} | ||
}); | ||
// Generate RegExp patterns dynamically. | ||
var a = delimiters[0].replace(/(.)/g, '\\$1'); | ||
var b = '([\\s\\S]+?)' + delimiters[1].replace(/(.)/g, '\\$1'); | ||
var templateSettings = { | ||
evaluate: new RegExp(a + b, 'g'), | ||
interpolate: new RegExp(a + '=' + b, 'g'), | ||
escape: new RegExp(a + '-' + b, 'g') | ||
}; | ||
var interpolate = templateSettings.interpolate; | ||
function isEmptyFile(filepath) { | ||
return grunt.file.read(filepath).trim().length === 0; | ||
// Non used keys | ||
var diff = _.difference(Object.keys(builder), keys); | ||
if (diff.length > 0) { | ||
grunt.log.errorlns('Unused key(s) ' + grunt.log.wordlist(diff, { color: 'red' }) + ' for ' + filePath); | ||
} | ||
var data; | ||
if (!grunt.file.exists(options.wording) || isEmptyFile(options.wording)) { | ||
data = {}; | ||
} else { | ||
data = JSON.parse(grunt.file.read(options.wording)); | ||
// Created keys | ||
if (created.length > 0) { | ||
grunt.log.oklns('Created key(s) ' + grunt.log.wordlist(created, { color: 'green' }) + ' for ' + filePath); | ||
} | ||
function getFileKeys(file) { | ||
var keys = [], a; | ||
while (a = interpolate.exec(file)) { | ||
keys.push(a[1].trim()); | ||
} | ||
return keys; | ||
if (created.length || diff.length) { | ||
grunt.log.writeln(); | ||
} | ||
function template(filepath) { | ||
var fileContent = grunt.file.read(filepath); | ||
return _.clone(builder); | ||
} | ||
var keys = getFileKeys(fileContent).sort(); | ||
function template(filePath) { | ||
var fileContent = grunt.file.read(filePath); | ||
// Replace keys in templates with their associated wordings | ||
try { | ||
var templateData = hasWording(fileContent) ? createWording(filePath, fileContent) : {}; | ||
templateData[options.sharedPrefix] = shared; | ||
var getExtension = path.extname(filepath); | ||
var removeExtension = filepath.replace(getExtension, ''); | ||
var splitPath = removeExtension.split(path.sep).slice(options.rootPapayawhip); | ||
var compiled = _.template(fileContent, templateData); | ||
var dest = path.join(this.data.dest, filePath); | ||
var builder = data; | ||
grunt.verbose.write('Creating template ' + dest + '...'); | ||
grunt.file.write(dest, compiled); | ||
grunt.verbose.ok(); | ||
} catch (e) { | ||
grunt.verbose.error(); | ||
grunt.log.errorlns(e); | ||
grunt.fail.warn('Error while templating ' + filePath); | ||
} | ||
} | ||
// force creation of a "mutual" object to centralize shared wordings | ||
data[sharedPrefix] = data[sharedPrefix] || {}; | ||
grunt.registerMultiTask('wording', 'Create your wording translations file', function() { | ||
options = this.options({ | ||
delimiters: 'config', | ||
sharedPrefix: 'mutual', | ||
wording: 'wording/wording.json', | ||
rootPapayawhip: 0 | ||
}); | ||
// Build nested object using the filepath until filename | ||
for (var i = 0; i < splitPath.length; i++ ) { | ||
builder[splitPath[i]] = builder[splitPath[i]] || {}; | ||
builder = builder[splitPath[i]]; | ||
} | ||
grunt.template.setDelimiters(options.delimiters); | ||
// Build file object with keys | ||
for (i = 0; i < keys.length; i++) { | ||
if (keys[i].indexOf(fullPrefix) !== 0 ) { | ||
builder[keys[i]] = builder[keys[i]] || ''; | ||
} else { | ||
var key = keys[i].replace(fullPrefix, ''); | ||
data[sharedPrefix][key] = data[sharedPrefix][key] || ''; | ||
} | ||
} | ||
var templateData = grunt.util._.clone(builder); | ||
templateData[sharedPrefix] = data[sharedPrefix]; | ||
if (isEmptyFile(options.wording)) { | ||
data = {}; | ||
} else { | ||
data = JSON.parse(grunt.file.read(options.wording)); | ||
} | ||
//errors | ||
var errors = grunt.util._.difference(Object.keys(builder), keys); | ||
if (errors.length > 0) { | ||
grunt.log.warn('This or these key(s) ' + errors.join(', ') + " in " + (filepath) + ' are not used.'); | ||
} | ||
// full prefix with a dot at the end (i.e. "mutual.") | ||
fullPrefix = options.sharedPrefix + '.'; | ||
// Create and fill wording.json | ||
grunt.file.write(options.wording, JSON.stringify(data, null, 2)); | ||
// force creation of a "mutual" object to centralize shared wordings | ||
shared = data[options.sharedPrefix] = data[options.sharedPrefix] || {}; | ||
// Replace keys in templates with their associated wordings | ||
try { | ||
var compiled = grunt.util._.template(fileContent, templateData, templateSettings); | ||
grunt.file.write(path.join(this.data.dest, filepath), compiled); | ||
} | ||
catch (e) { | ||
grunt.log.warn('Error while templating ' + filepath); | ||
grunt.log.warn(e); | ||
} | ||
} | ||
// Iterate over all specified file groups. | ||
this.files.forEach(function(f) { | ||
// Concat specified files. | ||
var src = f.src.sort().filter(function(filepath) { | ||
// Warn on and remove invalid source files (if nonull was set). | ||
if (!grunt.file.exists(filepath)) { | ||
grunt.log.warn('Source file "' + filepath + '" not found.'); | ||
return false; | ||
} else { | ||
return true; | ||
} | ||
}).filter(function(filepath){ | ||
var fileContent = grunt.file.read(filepath); | ||
var keys = getFileKeys(fileContent); | ||
if(keys.length === 0) { | ||
return false; | ||
} else { | ||
return true; | ||
} | ||
}).map(template, this); | ||
this.files.forEach(function(file) { | ||
file.src.sort().map(template, this); | ||
}, this); | ||
// Create and fill wording.json | ||
grunt.log.write('Writing ' + options.wording + '...') | ||
grunt.file.write(options.wording, JSON.stringify(data, null, 2)); | ||
grunt.log.ok(); | ||
}); | ||
}; |
{ | ||
"mutual": { | ||
"cancel": "", | ||
"continue": "", | ||
"default": "", | ||
"help": "", | ||
"retry": "", | ||
"close": "", | ||
"access": "", | ||
"validate": "", | ||
"stop": "", | ||
"restart": "", | ||
"params": "", | ||
"pending_update": "", | ||
"update": "", | ||
"connect": "", | ||
"modify": "", | ||
"estimated_time": "", | ||
"pending_storage_init": "", | ||
"reboot": "", | ||
"parental": "" | ||
"restart": "" | ||
}, | ||
"templates": { | ||
"block": { | ||
"full": { | ||
"papapapapayaaaaaa": "" | ||
} | ||
"file": { | ||
"message1": "", | ||
"messageun": "", | ||
"messagepour": "" | ||
}, | ||
"configs": { | ||
"ethernet": { | ||
"advanced": { | ||
"dns1": "", | ||
"dns2": "", | ||
"gate": "", | ||
"ipv4": "", | ||
"mask": "", | ||
"post.internet.ethernet.menu.advanced": "" | ||
}, | ||
"fail": { | ||
"post.internet.ethernet.fail.title": "" | ||
}, | ||
"selection": { | ||
"description": "", | ||
"post.internet.ethernet.menu.advanced": "", | ||
"post.internet.ethernet.menu.simple": "", | ||
"post.internet.ethernet.simple.description": "", | ||
"post.internet.menu.ethernet": "" | ||
}, | ||
"success": { | ||
"post.internet.ethernet.success.p1": "", | ||
"post.internet.ethernet.success.title": "" | ||
}, | ||
"warning": { | ||
"post.internet.ethernet.menu.advanced": "", | ||
"warning": "" | ||
} | ||
}, | ||
"index": { | ||
"post.settings.infos.description": "", | ||
"post.settings.menu.infos": "", | ||
"post.settings.menu.mybox": "", | ||
"post.settings.menu.myservices": "", | ||
"post.settings.menu.tvsettings": "", | ||
"post.settings.mybox.description": "", | ||
"post.settings.myservices.description": "", | ||
"post.settings.tvsettings.description": "" | ||
}, | ||
"infos": { | ||
"access": { | ||
"post.settings.infos.access.serial": "", | ||
"post.settings.infos.menu.access": "" | ||
}, | ||
"access_index": { | ||
"post.settings.infos.access.description": "" | ||
}, | ||
"diagnostic_index": { | ||
"post.settings.infos.diagnostic.description": "" | ||
}, | ||
"system": {}, | ||
"system_index": { | ||
"post.settings.infos.system.description": "" | ||
} | ||
}, | ||
"interface": { | ||
"index": { | ||
"post.settings.tvsettings.interface.terminal": "", | ||
"post.settings.tvsettings.interface.zapbande": "", | ||
"post.settings.tvsettings.menu.interface": "" | ||
} | ||
}, | ||
"internet": { | ||
"connexion": { | ||
"post.internet.connexion.idle": "", | ||
"post.internet.connexion.title": "" | ||
}, | ||
"params": { | ||
"post.internet.menu.params": "", | ||
"post.internet.params.deactivate.description": "", | ||
"post.internet.params.infos.description": "", | ||
"post.internet.params.ip.description": "", | ||
"post.internet.params.menu.deactivate": "", | ||
"post.internet.params.menu.infos": "", | ||
"post.internet.params.menu.ip": "" | ||
}, | ||
"selection": { | ||
"post.internet.ethernet.description": "", | ||
"post.internet.menu.ethernet": "", | ||
"post.internet.menu.wifi": "", | ||
"post.internet.subtitle": "", | ||
"post.internet.title": "", | ||
"post.internet.wifi.description": "" | ||
} | ||
}, | ||
"parental": { | ||
"channel_lock": {}, | ||
"selection": { | ||
"post.settings.tvsettings.menu.parental": "", | ||
"post.settings.tvsettings.parental.lock_channels.description": "", | ||
"post.settings.tvsettings.parental.lock_programs.description": "", | ||
"post.settings.tvsettings.parental.menu.lock_channels": "", | ||
"post.settings.tvsettings.parental.menu.lock_programs": "", | ||
"post.settings.tvsettings.parental.menu.modification": "", | ||
"post.settings.tvsettings.parental.modification.description": "" | ||
} | ||
}, | ||
"satellite": { | ||
"antenna": { | ||
"post.settings.mybox.satellite.antenna.hint1": "", | ||
"post.settings.mybox.satellite.antenna.hint2": "", | ||
"post.settings.mybox.satellite.antenna.select": "", | ||
"post.settings.mybox.satellite.antenna.title": "", | ||
"post.settings.mybox.satellite.antenna.type": "" | ||
}, | ||
"canal": { | ||
"post.settings.mybox.satellite.canal.convolutive": "", | ||
"post.settings.mybox.satellite.canal.frequency": "", | ||
"post.settings.mybox.satellite.canal.multiplex": "", | ||
"post.settings.mybox.satellite.canal.output": "", | ||
"post.settings.mybox.satellite.canal.polarization": "", | ||
"post.settings.mybox.satellite.canal.search": "", | ||
"post.settings.mybox.satellite.menu.canal": "" | ||
}, | ||
"fast": { | ||
"install.mutual.steps.channels.subtitle": "", | ||
"install.mutual.steps.satellite.subtitle": "", | ||
"install.mutual.steps.satellite.title": "", | ||
"install.mutual.steps.update.title": "", | ||
"post.settings.mybox.satellite.fast.pending": "", | ||
"post.settings.mybox.satellite.fast.result": "", | ||
"post.settings.mybox.satellite.fast.title": "" | ||
}, | ||
"fast_abort": { | ||
"post.settings.mybox.satellite.fast_abort.message1": "", | ||
"post.settings.mybox.satellite.fast_abort.message2": "", | ||
"post.settings.mybox.satellite.mutual.channels_search": "" | ||
}, | ||
"fast_fail": { | ||
"post.settings.mybox.satellite.fast_fail.message1": "", | ||
"post.settings.mybox.satellite.fast_fail.message2": "", | ||
"post.settings.mybox.satellite.fast_fail.message3": "", | ||
"post.settings.mybox.satellite.mutual.channels_search": "" | ||
}, | ||
"params": { | ||
"post.settings.mybox.satellite.menu.canal": "", | ||
"post.settings.mybox.satellite.menu.params": "", | ||
"post.settings.mybox.satellite.params.alim": "", | ||
"post.settings.mybox.satellite.params.external": "", | ||
"post.settings.mybox.satellite.params.highfreq": "", | ||
"post.settings.mybox.satellite.params.internal": "", | ||
"post.settings.mybox.satellite.params.lowfreq": "" | ||
}, | ||
"pointing": { | ||
"post.settings.mybox.satellite.menu.pointing": "", | ||
"post.settings.mybox.satellite.pointing.subtitle": "" | ||
}, | ||
"selection": { | ||
"post.settings.mybox.menu.satellite": "", | ||
"post.settings.mybox.satellite.fast.description": "", | ||
"post.settings.mybox.satellite.menu.channels": "", | ||
"post.settings.mybox.satellite.menu.fast": "", | ||
"post.settings.mybox.satellite.menu.params": "", | ||
"post.settings.mybox.satellite.menu.pointing": "", | ||
"post.settings.mybox.satellite.menu.progressive": "", | ||
"post.settings.mybox.satellite.menu.type": "" | ||
}, | ||
"warning": { | ||
"post.settings.mybox.satellite.menu.params": "", | ||
"post.settings.mybox.satellite.params.warning": "" | ||
} | ||
}, | ||
"settings": { | ||
"infos": { | ||
"post.settings.infos.access.description": "", | ||
"post.settings.infos.diagnostic.description": "", | ||
"post.settings.infos.menu.access": "", | ||
"post.settings.infos.menu.diagnostic": "", | ||
"post.settings.infos.menu.system": "", | ||
"post.settings.infos.system.description": "" | ||
}, | ||
"mybox": { | ||
"post.settings.mybox.energy.description": "", | ||
"post.settings.mybox.hdd.description": "", | ||
"post.settings.mybox.internet.description": "", | ||
"post.settings.mybox.menu.energy": "", | ||
"post.settings.mybox.menu.hdd": "", | ||
"post.settings.mybox.menu.internet": "", | ||
"post.settings.mybox.menu.satellite": "", | ||
"post.settings.mybox.menu.update": "", | ||
"post.settings.mybox.satellite.description": "", | ||
"post.settings.mybox.update.description": "" | ||
}, | ||
"myservices": { | ||
"post.settings.myservices.code.description": "", | ||
"post.settings.myservices.eureka.description": "", | ||
"post.settings.myservices.menu.code": "", | ||
"post.settings.myservices.menu.eureka": "", | ||
"post.settings.myservices.menu.record": "", | ||
"post.settings.myservices.record.description": "" | ||
}, | ||
"tvsettings": { | ||
"post.settings.tvsettings.audio.description": "", | ||
"post.settings.tvsettings.image.description": "", | ||
"post.settings.tvsettings.interface.description": "", | ||
"post.settings.tvsettings.lang.description": "", | ||
"post.settings.tvsettings.menu.audio": "", | ||
"post.settings.tvsettings.menu.image": "", | ||
"post.settings.tvsettings.menu.interface": "", | ||
"post.settings.tvsettings.menu.lang": "", | ||
"post.settings.tvsettings.menu.parental": "", | ||
"post.settings.tvsettings.parental.description": "" | ||
} | ||
}, | ||
"update": { | ||
"fail": { | ||
"configs.update.fail.message1": "", | ||
"configs.update.fail.message2": "", | ||
"configs.update.fail.title": "" | ||
}, | ||
"programs": { | ||
"configs.update.programs.title": "", | ||
"configs.update.programs.wait": "" | ||
}, | ||
"programs_fail": { | ||
"configs.update.programs.title": "", | ||
"configs.update.programs_fail.message": "" | ||
}, | ||
"programs_success": { | ||
"configs.update.programs.title": "", | ||
"configs.update.programs_success.message": "" | ||
}, | ||
"reset": { | ||
"configs.update.reset.help1": "", | ||
"configs.update.reset.help2": "", | ||
"configs.update.reset.menu.partial": "", | ||
"configs.update.reset.menu.total": "", | ||
"configs.update.reset.partial.description": "", | ||
"configs.update.reset.title": "", | ||
"configs.update.reset.total.description": "" | ||
}, | ||
"selection": { | ||
"configs.update.selection.programs_description": "", | ||
"configs.update.selection.programs_menu": "", | ||
"configs.update.selection.reset_description": "", | ||
"configs.update.selection.reset_menu": "", | ||
"configs.update.selection.system_description": "", | ||
"configs.update.selection.system_menu": "", | ||
"post.settings.mybox.menu.update": "" | ||
}, | ||
"system": { | ||
"configs.update.system.channels": "", | ||
"configs.update.system.data": "", | ||
"configs.update.system.rights": "", | ||
"configs.update.system.software": "", | ||
"configs.update.system.title": "" | ||
} | ||
}, | ||
"wifi": { | ||
"advanced": { | ||
"post.internet.wifi.advanced.auth": "", | ||
"post.internet.wifi.advanced.key": "", | ||
"post.internet.wifi.advanced.name": "", | ||
"post.internet.wifi.advanced.p1": "", | ||
"post.internet.wifi.advanced.wep": "", | ||
"post.internet.wifi.menu.advanced": "" | ||
}, | ||
"easy": { | ||
"post.internet.wifi.easy.detection": "", | ||
"post.internet.wifi.easy.p1": "", | ||
"post.internet.wifi.menu.easy": "" | ||
}, | ||
"fail": { | ||
"post.internet.wifi.fail.other": "", | ||
"post.internet.wifi.fail.p1": "", | ||
"post.internet.wifi.fail.title": "" | ||
}, | ||
"password": { | ||
"post.internet.wifi.menu.simple": "", | ||
"post.internet.wifi.password.p1": "", | ||
"post.internet.wifi.password.placeholder": "" | ||
}, | ||
"selection": { | ||
"post.internet.menu.wifi": "", | ||
"post.internet.wifi.advanced.description": "", | ||
"post.internet.wifi.easy.description": "", | ||
"post.internet.wifi.menu.advanced": "", | ||
"post.internet.wifi.menu.easy": "", | ||
"post.internet.wifi.menu.simple": "", | ||
"post.internet.wifi.simple.description": "" | ||
}, | ||
"simple": { | ||
"post.internet.wifi.menu.simple": "", | ||
"post.internet.wifi.simple.notfound": "", | ||
"post.internet.wifi.simple.p1": "", | ||
"post.internet.wifi.simple.p2": "" | ||
}, | ||
"success": { | ||
"post.internet.wifi.success.p1": "", | ||
"post.internet.wifi.success.title": "" | ||
} | ||
} | ||
}, | ||
"detail": { | ||
"lang": { | ||
"detail.active.fs": "", | ||
"detail.inactive.fs": "", | ||
"detail.none.fs": "", | ||
"detail.none.mp": "" | ||
} | ||
}, | ||
"install": { | ||
"channels": { | ||
"failed": { | ||
"install.channels.failed.p1": "", | ||
"install.channels.failed.p2": "", | ||
"install.channels.failed.p3": "", | ||
"install.channels.failed.title": "" | ||
}, | ||
"result": { | ||
"install.channels.result.continue": "", | ||
"install.channels.result.found": "", | ||
"install.channels.result.title": "" | ||
}, | ||
"scan": { | ||
"install.scan.search": "" | ||
}, | ||
"show": { | ||
"install.channels.show.p1": "", | ||
"install.channels.show.title": "" | ||
} | ||
}, | ||
"internet": { | ||
"container": { | ||
"install.internet.help": "", | ||
"install.internet.p1": "", | ||
"install.internet.p2": "", | ||
"install.internet.title": "", | ||
"install.mutual.nextStep": "" | ||
}, | ||
"failed": { | ||
"install.internet.failed.retry": "", | ||
"install.internet.failed.title": "" | ||
} | ||
}, | ||
"parental": { | ||
"container": { | ||
"install.mutual.nextStep": "", | ||
"install.parental.hint0000": "", | ||
"install.parental.hintEqual": "", | ||
"install.parental.p1": "", | ||
"install.parental.repeatLabel": "", | ||
"install.parental.secretLabel": "", | ||
"install.parental.title": "" | ||
}, | ||
"honor": { | ||
"install.parental.honor.hint": "", | ||
"install.parental.honor.label": "", | ||
"install.parental.honor.p1": "", | ||
"install.parental.honor.title": "" | ||
}, | ||
"success": { | ||
"install.mutual.nextStep": "", | ||
"install.parental.success.header": "", | ||
"install.parental.success.p1": "", | ||
"install.parental.success.title": "" | ||
} | ||
}, | ||
"report": { | ||
"container": { | ||
"install.report.access": "", | ||
"install.report.active.f": "", | ||
"install.report.active.m": "", | ||
"install.report.channels.installed": "", | ||
"install.report.channels.see": "", | ||
"install.report.fail": "", | ||
"install.report.footer": "", | ||
"install.report.internet.connexion": "", | ||
"install.report.none.f": "", | ||
"install.report.none.m": "", | ||
"install.report.ok": "", | ||
"install.report.parental": "", | ||
"install.report.storage.init": "", | ||
"install.report.storage.title": "", | ||
"install.report.success": "", | ||
"install.report.title": "" | ||
} | ||
}, | ||
"satellite": { | ||
"failed": { | ||
"install.satellite.p1": "", | ||
"install.satellite.p2": "", | ||
"install.satellite.p3": "", | ||
"install.satellite.title": "" | ||
}, | ||
"scan": { | ||
"install.scan.search": "", | ||
"install.scan.title": "" | ||
} | ||
}, | ||
"shared": { | ||
"steps": { | ||
"install.mutual.steps.access.subtitle": "", | ||
"install.mutual.steps.access.title": "", | ||
"install.mutual.steps.cache.subtitle": "", | ||
"install.mutual.steps.cache.title": "", | ||
"install.mutual.steps.channels.subtitle": "", | ||
"install.mutual.steps.channels.title": "", | ||
"install.mutual.steps.internet.subtitle": "", | ||
"install.mutual.steps.internet.title": "", | ||
"install.mutual.steps.parental.subtitle": "", | ||
"install.mutual.steps.parental.title": "", | ||
"install.mutual.steps.satellite.subtitle": "", | ||
"install.mutual.steps.satellite.title": "", | ||
"install.mutual.steps.storage.subtitle": "", | ||
"install.mutual.steps.storage.title": "", | ||
"install.mutual.steps.update.subtitle": "", | ||
"install.mutual.steps.update.title": "" | ||
} | ||
}, | ||
"storage": { | ||
"container": { | ||
"install.storage.detect.p1": "", | ||
"install.storage.title": "" | ||
}, | ||
"fail": { | ||
"install.storage.initialize.failed.p1": "" | ||
}, | ||
"fail_footer": { | ||
"install.mutual.nextStep": "" | ||
}, | ||
"found": { | ||
"install.storage.result.found.p1": "", | ||
"install.storage.result.found.p2": "", | ||
"install.storage.result.found.p3": "" | ||
}, | ||
"found_footer": { | ||
"install.mutual.nextStep": "", | ||
"install.storage.initStorage": "" | ||
}, | ||
"initialize": { | ||
"install.storage.initialize.p1": "", | ||
"install.storage.initialize.timeleft": "" | ||
}, | ||
"notfound": { | ||
"install.storage.result.notfound.p1": "", | ||
"install.storage.result.notfound.p2": "" | ||
}, | ||
"notfound_footer": { | ||
"install.mutual.nextStep": "" | ||
}, | ||
"result": { | ||
"install.storage.title": "" | ||
} | ||
}, | ||
"update": { | ||
"container": { | ||
"install.update.new_update": "", | ||
"install.update.restart": "", | ||
"install.update.title": "" | ||
} | ||
}, | ||
"welcome": { | ||
"install.welcome.advanced": "", | ||
"install.welcome.description": "", | ||
"install.welcome.simple": "", | ||
"install.welcome.title": "", | ||
"install.welcome.warning": "" | ||
} | ||
}, | ||
"pvr": { | ||
"play": { | ||
"pvr.play.title": "" | ||
}, | ||
"popup_record_error": { | ||
"pvr.popup_record_error.message": "", | ||
"pvr.popup_record_error.solution": "" | ||
}, | ||
"record": { | ||
"pvr.record.beginning": "", | ||
"pvr.record.diffusion": "", | ||
"pvr.record.end": "", | ||
"pvr.record.protect": "", | ||
"pvr.record.title": "" | ||
}, | ||
"stop": { | ||
"pvr.stop.content": "", | ||
"pvr.stop.title": "" | ||
}, | ||
"storage": { | ||
"collision": { | ||
"pvr.mutual.hdd": "", | ||
"pvr.storage.collision.message1": "", | ||
"pvr.storage.collision.message2": "" | ||
}, | ||
"disconnect": { | ||
"pvr.mutual.hdd": "", | ||
"pvr.storage.disconnect.message": "" | ||
}, | ||
"infos": { | ||
"pvr.storage.infos.available_protected": "", | ||
"pvr.storage.infos.available_storage": "", | ||
"pvr.storage.infos.connected": "", | ||
"pvr.storage.infos.message1": "", | ||
"pvr.storage.infos.message2": "", | ||
"pvr.storage.infos.name": "", | ||
"pvr.storage.infos.status": "", | ||
"pvr.storage.infos.title": "" | ||
}, | ||
"infos_prev": { | ||
"pvr.storage.infos.available_protected": "", | ||
"pvr.storage.infos.available_storage": "", | ||
"pvr.storage.infos.connected": "", | ||
"pvr.storage.infos.name": "", | ||
"pvr.storage.infos.preview": "", | ||
"pvr.storage.infos.status": "" | ||
}, | ||
"init_fail": { | ||
"pvr.mutual.hdd_init": "", | ||
"pvr.storage.init_fail.message": "" | ||
}, | ||
"init_pending": { | ||
"pvr.mutual.hdd_init": "" | ||
}, | ||
"init_required": { | ||
"pvr.mutual.hdd": "", | ||
"pvr.storage.init_required.message1": "", | ||
"pvr.storage.init_required.message2": "" | ||
}, | ||
"init_success": { | ||
"pvr.mutual.hdd_init": "", | ||
"pvr.storage.init_success.message": "" | ||
}, | ||
"init_warning": { | ||
"pvr.mutual.hdd_init": "", | ||
"pvr.storage.init_warning.message": "" | ||
}, | ||
"memory_fail": { | ||
"pvr.mutual.hdd": "", | ||
"pvr.storage.memory_fail.message": "" | ||
}, | ||
"play_warning": { | ||
"pvr.mutual.hdd_disconnect": "", | ||
"pvr.storage.play_warning.message": "" | ||
}, | ||
"popup_connect": { | ||
"pvr.storage.popup_connect.message": "" | ||
}, | ||
"popup_disconnect": { | ||
"pvr.storage.popup_disconnect.message": "" | ||
}, | ||
"reboot_required": { | ||
"pvr.mutual.hdd": "", | ||
"pvr.storage.reboot_required.message": "" | ||
}, | ||
"record_play_warning": { | ||
"pvr.mutual.hdd_disconnect": "", | ||
"pvr.storage.record_play_warning.message": "" | ||
}, | ||
"record_timeshift_warning": { | ||
"pvr.mutual.hdd_disconnect": "", | ||
"pvr.storage.record_timeshift_warning.message": "" | ||
}, | ||
"record_warning": { | ||
"pvr.mutual.hdd_disconnect": "", | ||
"pvr.storage.record_warning.message": "" | ||
}, | ||
"required": { | ||
"pvr.mutual.hdd": "", | ||
"pvr.storage.required.message": "" | ||
}, | ||
"timeshift_warning": { | ||
"pvr.mutual.hdd": "", | ||
"pvr.storage.timeshift_warning.message1": "", | ||
"pvr.storage.timeshift_warning.message2": "" | ||
}, | ||
"unknown": { | ||
"pvr.mutual.hdd": "", | ||
"pvr.storage.unknown.message": "" | ||
}, | ||
"unmount": { | ||
"pvr.mutual.hdd": "", | ||
"pvr.storage.unmount.info": "", | ||
"pvr.storage.unmount.message": "" | ||
} | ||
} | ||
}, | ||
"shared": { | ||
"codes": { | ||
"channel_auth": { | ||
"shared.codes.mutual.parental_title": "", | ||
"shared.codes.parental_auth.error": "", | ||
"shared.codes.parental_auth.insert": "", | ||
"shared.codes.parental_auth.wrong": "" | ||
}, | ||
"parental_auth": { | ||
"shared.codes.mutual.parental_title": "", | ||
"shared.codes.parental_auth.error": "", | ||
"shared.codes.parental_auth.insert": "", | ||
"shared.codes.parental_auth.wrong": "" | ||
}, | ||
"parental_auth_fail": { | ||
"shared.codes.mutual.parental_title": "", | ||
"shared.codes.parental_auth_fail.paragraph1": "", | ||
"shared.codes.parental_auth_fail.paragraph2": "" | ||
} | ||
}, | ||
"errors": { | ||
"card_insertion": { | ||
"shared.errors.card_insertion.image": "", | ||
"shared.errors.card_insertion.message": "", | ||
"shared.errors.card_insertion.title": "" | ||
}, | ||
"connexion": { | ||
"shared.errors.connexion.message": "", | ||
"shared.errors.connexion.title": "" | ||
}, | ||
"csa": { | ||
"shared.errors.csa.hint": "", | ||
"shared.errors.csa.message": "" | ||
}, | ||
"locked_channel": { | ||
"shared.errors.locked_channel.message": "" | ||
}, | ||
"locked_csa": { | ||
"shared.errors.locked_csa.entercode": "", | ||
"shared.errors.locked_csa.message": "" | ||
}, | ||
"locked_program": { | ||
"shared.errors.locked_program.message": "" | ||
}, | ||
"unauthorized_channel": { | ||
"shared.errors.mutual.unauthorized_action": "", | ||
"shared.errors.mutual.unauthorized_more": "", | ||
"shared.errors.unauthorized_channel.message": "" | ||
}, | ||
"unauthorized_program": { | ||
"shared.errors.mutual.unauthorized_action": "", | ||
"shared.errors.mutual.unauthorized_more": "", | ||
"shared.errors.unauthorized_program.message": "" | ||
}, | ||
"update_access": { | ||
"shared.errors.update_access.message": "", | ||
"shared.errors.update_access.title": "" | ||
} | ||
}, | ||
"popup": { | ||
"battery": { | ||
"shared.popup.battery.message": "" | ||
} | ||
} | ||
}, | ||
"ssu": { | ||
"reboot": { | ||
"reboot.message": "", | ||
"reboot.title": "" | ||
} | ||
"tester": { | ||
"message1": "", | ||
"message2": "", | ||
"message3": "", | ||
"message4": "", | ||
"message5": "", | ||
"message6": "" | ||
} | ||
} | ||
} |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
170
1
1
113
77986
230
1