UNPKG

i18n-behavior

Version:

Instant and Modular I18N engine for lit-html and Polymer

15 lines 289 kB
/*! * @license https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md * Copyright (c) 2016, Tetsuya Mori <t2y3141592@gmail.com>. All rights reserved. */ "use strict";function updateProperty(t,e){for(var n in e){var i=n.split(/[.]/);if(1===i.length)t[n]=e[n];else for(var r=t,s=i.shift();s;){if(i.length<1){r[s]=e[n],t.notifyPath(n,e[n],!0);break}r="PolymerDom"===s?Polymer.dom(r):"html"===s?document.querySelector("html"):r[s],s=i.shift()}}}function getProperty(t,e){var n=e.split(/[.]/);if(1===n.length)return t[e];for(var i=t,r=n.shift();r;){if(n.length<1)return"raw"===r||"text"===r?i:"trim"===r?i.trim():"data"===r?(i=i[r],i=i.replace(/^[\s]{1,}/g," ").replace(/[\s]{1,}$/g," ")):i[r];if("PolymerDom"===r)i=Polymer.dom(i);else if("previousTextSibling"===r){do i=i.previousSibling;while(i.nodeType===i.COMMENT_NODE||i.nodeType===i.TEXT_NODE&&i.data.match(/^[\s]*$/))}else if("nextTextSibling"===r){do i=i.nextSibling;while(i.nodeType===i.COMMENT_NODE||i.nodeType===i.TEXT_NODE&&i.data.match(/^[\s]*$/))}else i="effectiveChildNodes"===r?i.getEffectiveChildNodes():"nonWS"===r?Array.prototype.filter.call(i,function(t){return t.nodeType!==t.TEXT_NODE&&t.nodeType!==t.COMMENT_NODE||t.nodeType===t.TEXT_NODE&&!t.data.match(/^[\s]*$/)}):i[r];r=n.shift()}}function deepMap(t,e,n){var i;if("object"==typeof e)for(var r in e)switch(i=e[r],typeof i){case"string":case"number":case"boolean":"object"==typeof t&&(t[r]=n(i,r));break;case"object":"object"==typeof t&&(Array.isArray(i)?(t[r]=t[r]||[],deepMap(t[r],i,n)):(t[r]=t[r]||{},deepMap(t[r],i,n)));break;case"function":case"symbol":case"undefined":"object"==typeof t&&(t[r]=i);break;default:"object"==typeof t&&(t[r]=i)}else"string"==typeof t&&(t=n(e,""));return t}function translate(t,e,n){var i;switch(t){case"":case"en":case null:case void 0:i=n;break;default:!e||e.match(/(textContent|[.]data|[.]text|[.]trim)$/)?(i={},deepMap(i,{text:n},function(n,i){return minifyText("string"!=typeof n||n.match(/^\s*({{[^{}]*}}|\[\[[^\[\]]*\]\])\s*$/)||n.match(/^\s*<[a-zA-Z0-9- ]*>\s*$/)&&!n.match(/^\s*<i18n-format>\s*$/)||n.match(/^[0-9]{1,}$/)||"type"===i?n:e&&e.match(/[.]trim$/)?(t+" "+n).trim():t+" "+n)}),i=i.text):i=n}return i}function minifyText(t){return t&&"string"==typeof t&&(t=t.replace(/[\s]{1,}/g," ")),t}function setupFakeServer(t){isFakeServer&&(t.server=sinon.fakeServer.create(),t.server.autoRespond=!0,t.server.respondImmediately=!0,t.server.respondWith(/\/test\/[-\w]+(\/.*[.]json)$/,function(t,e){fakeServerContents.hasOwnProperty(e)?t.respond(200,{"Content-Type":"application/json"},fakeServerContents[e]):t.respond(404,{},"")}))}function teardownFakeServer(t){isFakeServer&&t.server.restore()}function setupFixture(t,e){var n=t.fixture,i=document.querySelector("#"+n),r=document.querySelectorAll(".running-test"),s=document.querySelector("#test-name"),o=window.location.pathname.split("/");if(!i)throw new Error("Fixture element with id = "+n+" not found");return s&&(s.textContent=(o.length>=2?o[o.length-2]:"")+(o.length>=1?"/"+o[o.length-1].replace(/-test[.]html$/,"")+"/":"")+t.suite),"i18n-dom-bind"===i.is?(i.parentElement.classList.add("running-test"),Array.prototype.forEach.call(r,function(t){t!==i.parentElement&&t.classList.remove("running-test")}),new Promise(function(n,r){i.addEventListener("dom-change",function s(o){if(Polymer.dom(o).rootTarget===i){i.removeEventListener("dom-change",s);try{if(e&&"string"==typeof e.lang&&"en"!==e.lang){i.addEventListener("lang-updated",function h(t){t.target===i&&i.effectiveLang===e.lang&&(i.removeEventListener("lang-updated",h),i.render(),n(i))});for(var a in e)i[a]=e[a];i.params=t}else{for(var a in e)i[a]=e[a];i.params=t,i.render(),n(i)}}catch(l){r(l)}}}),i._children&&i.render()})):(i.classList.add("running-test"),Array.prototype.forEach.call(r,function(t){t!==i&&t.classList.remove("running-test")}),setupFakeServer(i),new Promise(function(t,i){var r=fixture(n,e);r?e&&"string"==typeof e.lang&&"en"!==e.lang&&e.lang!==r.effectiveLang?r.addEventListener("lang-updated",function s(n){n.target===r&&r.effectiveLang===e.lang&&(r.removeEventListener("lang-updated",s),t(r))}):t(r):i(new Error("setupFixture returns null for "+n+" "+JSON.stringify(e,null,2)))}))}function restoreFixture(t){var e=document.querySelector("#"+t);if(!e)throw new Error("Fixture element with id = "+t+" not found");"i18n-dom-bind"===e.is?(e._intervalId&&clearInterval(e._intervalId),Array.prototype.forEach.call(document.querySelectorAll('[is="i18n-dom-bind"]'),function(t){t.observeHtmlLang=!0})):(teardownFakeServer(e),e.restore())}function getLocalDomRoot(t){return"i18n-dom-bind"===t.is?t.parentElement:t?t.root:null}function suitesRunner(t){t.forEach(function(t){suite(t.suite,function(){var e,n,i,r,s=(t.rawValue,t.assign&&t.assign.lang?t.assign.lang:"en",t.event?t.event:"lang-updated"),o=3e5,a=t.timeout?t.timeout<o?o:t.timeout:o;this.timeout(a),(t.setup?setup:suiteSetup)(function(){return setupFixture(t,t.fixtureModel).then(function(n){return e=n,new Promise(function(n,i){t&&(t.event||t.assign&&(t.assign.lang||t.assign["html.lang"]))?(e.addEventListener(s,function r(i){e===Polymer.dom(i).rootTarget&&e.lang===t.lang&&e.effectiveLang===t.effectiveLang?(e.removeEventListener(s,r),n(e)):console.log(t.suite+" skipping uninteresting event "+s+' "'+e.lang+'" "'+t.lang+'" "'+e.effectiveLang+'" "'+t.effectiveLang+'"')}),updateProperty(e,t.assign)):(updateProperty(e,t.assign),n(e))})},function(t){throw new Error(t)})}),test("{lang, effectiveLang, templateDefaultLang, observeHtmlLang"+(t.text?", text":"")+(t.model?", model":"")+(t.localDOM?", local DOM":"")+"} properties are set as {"+(isSuppressingSuiteParams?"":[t.lang,t.effectiveLang,t.templateDefaultLang,t.observeHtmlLang].join(", ")+(t.text?", "+JSON.stringify(t.text,null,2):"")+(t.model?", "+JSON.stringify(t.model,null,2):"")+(!t.setup&&t.localDOM?", "+JSON.stringify(t.localDOM,null,2):""))+"}"+(t.assign&&t.assign.lang?" for "+t.assign.lang:""),function(){if(assert.isString(e.lang,"lang property is a string"),assert.equal(e.lang,t.lang,"lang property is set"),assert.isString(e.effectiveLang,"effectiveLang property is a string"),assert.equal(e.effectiveLang,t.effectiveLang,"effectiveLang property is set"),assert.isString(e.templateDefaultLang,"templateDefaultLang property is a string"),assert.equal(e.templateDefaultLang,t.templateDefaultLang,"templateDefaultLang property is set"),assert.isBoolean(e.observeHtmlLang,"observeHtmlLang property is a Boolean"),assert.equal(e.observeHtmlLang,t.observeHtmlLang,"observeHtmlLang property is set"),t.text){i=deepMap(deepcopy(t.text),t.text,minifyText),r=!0,assert.isObject(e.text,"text property is an object");for(n in i)"meta"!==n&&(r=!1,assert.deepEqual(deepMap(deepcopy(e.text[n]),e.text[n],minifyText),t.rawText?i[n]:translate(t.effectiveLang,null,i[n]),"text."+n+" property is set for "+t.effectiveLang));r&&assert.deepEqual(deepMap(deepcopy(e.text),e.text,minifyText),i,"text property is set")}if(t.model){r=!0,assert.isObject(e.model,"model property is an object");for(n in t.model)r=!1,assert.deepEqual(deepMap(deepcopy(e.model[n]),e.model[n],minifyText),t.rawText?t.model[n]:translate(t.effectiveLang,null,t.model[n]),"model."+n+" property is set for "+t.effectiveLang);r&&assert.deepEqual(e.model,t.model,"model property is set")}!t.setup&&t.localDOM&&t.localDOM.forEach(function(n){var i=Polymer.dom(getLocalDomRoot(e)).querySelectorAll(n.select);assert.ok(i.length>0,n.select+" is defined");for(var r in n)"select"!==r&&(Array.isArray(n[r])?Array.prototype.forEach.call(n[r],function(e,n,s){assert.equal(minifyText(getProperty(i[n],r)),minifyText(t.rawText?e:translate(t.effectiveLang,r,e)),r+" is set as "+minifyText(t.rawText?e:translate(t.effectiveLang,r,e)))}):assert.equal(minifyText(getProperty(i[0],r)),minifyText(t.rawText?n[r]:translate(t.effectiveLang,r,n[r])),r+" is set as "+translate(t.rawText?n[r]:t.effectiveLang,r,n[r])))})}),t.setup&&t.localDOM&&test("local DOM "+(isSuppressingSuiteParams?"{}":JSON.stringify(t.localDOM,null,2))+" is set"+(t.assign&&t.assign.lang?" for "+t.assign.lang:""),function(){t.localDOM.forEach(function(n){var i=Polymer.dom(getLocalDomRoot(e)).querySelectorAll(n.select);assert.ok(i.length>0,n.select+" is defined");for(var r in n)"select"!==r&&(Array.isArray(n[r])?Array.prototype.forEach.call(n[r],function(e,n,s){assert.equal(minifyText(getProperty(i[n],r)),minifyText(t.rawText?e:translate(t.effectiveLang,r,e)),r+" is set as "+minifyText(t.rawText?e:translate(t.effectiveLang,r,e)))}):assert.equal(minifyText(getProperty(i[0],r)),minifyText(t.rawText?n[r]:translate(t.effectiveLang,r,n[r])),r+" is set as "+translate(t.rawText?n[r]:t.effectiveLang,r,n[r])))})}),t.lightDOM&&test("light DOM "+(isSuppressingSuiteParams?"{}":JSON.stringify(t.lightDOM,null,2))+" is set"+(t.assign&&t.assign.lang?" for "+t.assign.lang:""),function(){t.lightDOM.forEach(function(n){var i=Polymer.dom(e).querySelectorAll(n.select);assert.ok(i.length>0,n.select+" is defined");for(var r in n)"select"!==r&&(Array.isArray(n[r])?Array.prototype.forEach.call(n[r],function(e,n,s){assert.equal(getProperty(i[n],r),translate(t.effectiveLang,r,e),r+" is set as "+translate(t.effectiveLang,r,e))}):assert.equal(getProperty(i[0],r),translate(t.effectiveLang,r,n[r]),r+" is set as "+translate(t.effectiveLang,r,n[r])))})}),(t.setup?teardown:suiteTeardown)(function(){restoreFixture(t.fixture)})})})}/** @license Copyright (c) 2016 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt */ function MakePromise(t){function e(t){if("object"!=typeof this||"function"!=typeof t)throw new TypeError;this._state=null,this._value=null,this._deferreds=[],o(t,i.bind(this),r.bind(this))}function n(e){var n=this;return null===this._state?void this._deferreds.push(e):void t(function(){var t=n._state?e.onFulfilled:e.onRejected;if("function"!=typeof t)return void(n._state?e.resolve:e.reject)(n._value);var i;try{i=t(n._value)}catch(r){return void e.reject(r)}e.resolve(i)})}function i(t){try{if(t===this)throw new TypeError;if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if("function"==typeof e)return void o(e.bind(t),i.bind(this),r.bind(this))}this._state=!0,this._value=t,s.call(this)}catch(n){r.call(this,n)}}function r(t){this._state=!1,this._value=t,s.call(this)}function s(){for(var t=0,e=this._deferreds.length;e>t;t++)n.call(this,this._deferreds[t]);this._deferreds=null}function o(t,e,n){var i=!1;try{t(function(t){i||(i=!0,e(t))},function(t){i||(i=!0,n(t))})}catch(r){if(i)return;i=!0,n(r)}}return e.prototype["catch"]=function(t){return this.then(null,t)},e.prototype.then=function(t,i){var r=this;return new e(function(e,s){n.call(r,{onFulfilled:t,onRejected:i,resolve:e,reject:s})})},e.resolve=function(t){return t&&"object"==typeof t&&t.constructor===e?t:new e(function(e){e(t)})},e.reject=function(t){return new e(function(e,n){n(t)})},e}var fakeServerContents={"/commented-simple-text-element/commented-simple-text-element.json":'{\n "meta": {},\n "model": {},\n "text": " outermost text at the beginning ",\n "h1_3": "outermost header 1",\n "text_4": " outermost text in the middle ",\n "span_5": "simple text without id",\n "span_6": "simple text without id 2",\n "label-1": "simple text with id",\n "label-2": "simple text with id 2",\n "div_9:span": "simple text within div",\n "div_9:span_1": "simple text within div 2",\n "div_9:div_2:div": "great grandchild text within div",\n "div_10:text": " simple text as the first element in div ",\n "div_10:span_1": "simple text within div",\n "div_10:text_2": " simple text in the middle of div ",\n "div_10:span_3": "simple text within div 2",\n "div_10:div_4:div": "great grandchild text within div",\n "div_10:text_5": " simple text at the last element in div ",\n "toplevel-div:span": "simple text within div",\n "toplevel-div:span_1": "simple text within div 2",\n "third-level-div": "great grandchild text within div",\n "second-level-div:div_1": "great grandchild text within div without id",\n "div_12:ul:li": "line item without id 1",\n "div_12:ul:li_1": "line item without id 2",\n "div_12:ul:li_2": "line item without id 3",\n "line-items:li": "line item with id 1",\n "line-items:li_1": "line item with id 2",\n "line-items:li_2": "line item with id 3",\n "p_13": [\n "A paragraph with {1} is converted to {2}.",\n "parameters",\n "<i18n-format>"\n ],\n "paragraph": [\n "A paragraph with {1} is converted to {2}.",\n "id",\n "<i18n-format>"\n ],\n "text_15": " outermost text at the end "\n}',"/commented-simple-text-element/locales/commented-simple-text-element.fr.json":'{\n "model": {},\n "text": "fr outermost text at the beginning ",\n "h1_3": "fr outermost header 1",\n "text_4": "fr outermost text in the middle ",\n "span_5": "fr simple text without id",\n "span_6": "fr simple text without id 2",\n "label-1": "fr simple text with id",\n "label-2": "fr simple text with id 2",\n "div_9:span": "fr simple text within div",\n "div_9:span_1": "fr simple text within div 2",\n "div_9:div_2:div": "fr great grandchild text within div",\n "div_10:text": "fr simple text as the first element in div ",\n "div_10:span_1": "fr simple text within div",\n "div_10:text_2": "fr simple text in the middle of div ",\n "div_10:span_3": "fr simple text within div 2",\n "div_10:div_4:div": "fr great grandchild text within div",\n "div_10:text_5": "fr simple text at the last element in div ",\n "toplevel-div:span": "fr simple text within div",\n "toplevel-div:span_1": "fr simple text within div 2",\n "third-level-div": "fr great grandchild text within div",\n "second-level-div:div_1": "fr great grandchild text within div without id",\n "div_12:ul:li": "fr line item without id 1",\n "div_12:ul:li_1": "fr line item without id 2",\n "div_12:ul:li_2": "fr line item without id 3",\n "line-items:li": "fr line item with id 1",\n "line-items:li_1": "fr line item with id 2",\n "line-items:li_2": "fr line item with id 3",\n "p_13": [\n "fr A paragraph with {1} is converted to {2}.",\n "fr parameters",\n "fr <i18n-format>"\n ],\n "paragraph": [\n "fr A paragraph with {1} is converted to {2}.",\n "fr id",\n "fr <i18n-format>"\n ],\n "text_15": "fr outermost text at the end "\n}\n',"/compound-binding-dom-bind.json":'{\n "meta": {},\n "model": {},\n "text": [\n " outermost text at the beginning with compound {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "h1_3": [\n "outermost header 1 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "text_4": [\n " outermost text in the middle with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "span_5": [\n "simple text without id with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "span_6": [\n "simple text without id 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "label-1": [\n "simple text with id and {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "label-2": [\n "simple text with id and {1} and {2} variables 2",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_9:span": [\n "simple text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_9:span_1": [\n "simple text within div with {1} and {2} variables 2",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_9:div_2:div": [\n "great grandchild text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:text": [\n " simple text as the first element in div with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:span_1": [\n "simple text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:text_2": [\n " simple text in the middle of div with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:span_3": [\n "simple text within div with {1} and {2} variables 2",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:div_4:div": [\n "great grandchild text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:text_5": [\n " simple text at the last element in div with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "toplevel-div:span": [\n "simple text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "toplevel-div:span_1": [\n "simple text within div 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "third-level-div": [\n "great grandchild text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "second-level-div:div_1": [\n "great grandchild text within div without id with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_12:ul:li": [\n "line item without id 1 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_12:ul:li_1": [\n "line item without id 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_12:ul:li_2": [\n "line item without id 3 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "line-items:li": [\n "line item with id 1 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "line-items:li_1": [\n "line item with id 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "line-items:li_2": [\n "line item with id 3 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "p_13": [\n "A paragraph with {1} is converted to {2}.",\n "{{param1}}",\n "{{param2}}"\n ],\n "paragraph": [\n "A paragraph with {1}, {2}, and {3} is converted to {4}.",\n "id",\n "{{param1}}",\n "{{param2}}",\n "<i18n-format>"\n ],\n "text_15": [\n " outermost text at the end with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ]\n}',"/compound-binding-element/compound-binding-element.json":'{\n "meta": {},\n "model": {},\n "text": [\n " outermost text at the beginning with compound {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "h1_3": [\n "outermost header 1 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "text_4": [\n " outermost text in the middle with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "span_5": [\n "simple text without id with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "span_6": [\n "simple text without id 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "label-1": [\n "simple text with id and {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "label-2": [\n "simple text with id and {1} and {2} variables 2",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_9:span": [\n "simple text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_9:span_1": [\n "simple text within div with {1} and {2} variables 2",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_9:div_2:div": [\n "great grandchild text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:text": [\n " simple text as the first element in div with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:span_1": [\n "simple text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:text_2": [\n " simple text in the middle of div with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:span_3": [\n "simple text within div with {1} and {2} variables 2",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:div_4:div": [\n "great grandchild text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:text_5": [\n " simple text at the last element in div with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "toplevel-div:span": [\n "simple text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "toplevel-div:span_1": [\n "simple text within div 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "third-level-div": [\n "great grandchild text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "second-level-div:div_1": [\n "great grandchild text within div without id with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_12:ul:li": [\n "line item without id 1 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_12:ul:li_1": [\n "line item without id 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_12:ul:li_2": [\n "line item without id 3 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "line-items:li": [\n "line item with id 1 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "line-items:li_1": [\n "line item with id 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "line-items:li_2": [\n "line item with id 3 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "p_13": [\n "A paragraph with {1} is converted to {2}.",\n "{{param1}}",\n "{{param2}}"\n ],\n "paragraph": [\n "A paragraph with {1}, {2}, and {3} is converted to {4}.",\n "id",\n "{{param1}}",\n "{{param2}}",\n "<i18n-format>"\n ],\n "text_15": [\n " outermost text at the end with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ]\n}',"/compound-binding-element/locales/compound-binding-element.fr.json":'{\n "model": {},\n "text": [\n "fr outermost text at the beginning with compound {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "h1_3": [\n "fr outermost header 1 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "text_4": [\n "fr outermost text in the middle with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "span_5": [\n "fr simple text without id with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "span_6": [\n "fr simple text without id 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "label-1": [\n "fr simple text with id and {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "label-2": [\n "fr simple text with id and {1} and {2} variables 2",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_9:span": [\n "fr simple text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_9:span_1": [\n "fr simple text within div with {1} and {2} variables 2",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_9:div_2:div": [\n "fr great grandchild text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:text": [\n "fr simple text as the first element in div with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:span_1": [\n "fr simple text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:text_2": [\n "fr simple text in the middle of div with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:span_3": [\n "fr simple text within div with {1} and {2} variables 2",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:div_4:div": [\n "fr great grandchild text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:text_5": [\n "fr simple text at the last element in div with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "toplevel-div:span": [\n "fr simple text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "toplevel-div:span_1": [\n "fr simple text within div 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "third-level-div": [\n "fr great grandchild text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "second-level-div:div_1": [\n "fr great grandchild text within div without id with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_12:ul:li": [\n "fr line item without id 1 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_12:ul:li_1": [\n "fr line item without id 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_12:ul:li_2": [\n "fr line item without id 3 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "line-items:li": [\n "fr line item with id 1 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "line-items:li_1": [\n "fr line item with id 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "line-items:li_2": [\n "fr line item with id 3 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "p_13": [\n "fr A paragraph with {1} is converted to {2}.",\n "{{param1}}",\n "{{param2}}"\n ],\n "paragraph": [\n "fr A paragraph with {1}, {2}, and {3} is converted to {4}.",\n "fr id",\n "{{param1}}",\n "{{param2}}",\n "fr <i18n-format>"\n ],\n "text_15": [\n "fr outermost text at the end with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ]\n}\n',"/edge-case-dom-bind.json":'{\n "meta": {},\n "model": {},\n "text": [\n " name = {1} ",\n "{{text.name}}"\n ],\n "i18n-number_1": "1",\n "i18n-format_2": [\n "{{text.format}}",\n "1"\n ],\n "i18n-format_3": [\n "format",\n ""\n ],\n "p_8": [\n "hello {1}{2} {3} world",\n "<br>",\n "<span>",\n "<span>"\n ],\n "p_9": [\n "hello{1}world",\n "<br>"\n ],\n "text_10": " hello ",\n "text_14": " world "\n}',"/edge-case/advanced-binding-element.json":'{\n "meta": {},\n "model": {\n "aria-attributes": {\n "title": "tooltip text",\n "aria-label": "aria label text",\n "aria-valuetext": "aria value text"\n }\n },\n "annotated-format": [\n "{{tr(status,text.statusMessageFormats)}}",\n "{{parameter}}",\n "string parameter"\n ],\n "span_5": [\n "{1} {2}",\n "{{text.defaultValue}}",\n "{{text.defaultValue}}"\n ],\n "statusMessages": {\n "ok": "healthy status",\n "busy": "busy status",\n "error": "error status",\n "default": "unknown status"\n },\n "defaultValue": "default value",\n "statusMessageFormats": {\n "ok": "healthy status",\n "busy": "busy status with {2}",\n "error": "error status with {1} and {2}",\n "default": "unknown status"\n },\n "nodefault": {\n "ok": "ok status"\n }\n}',"/edge-case/complex-compound-binding-element.json":'{\n "model": {},\n "item-update2:text": [\n "updated: {1}, by: ",\n "{{text.updated}}"\n ],\n "item-update2:text_2": " xxx ",\n "item-update2:template_3:span:b": "IF CONTENT",\n "item-update2:b_4": "abc",\n "item-update2:template_5:text": "IF CONTENT 2",\n "item-update2:text_6": " hello ",\n "item-update": [\n "updated: {1}, by: \\n {2}\\n xxx\\n {3}\\n {4}\\n {5}\\n hello\\n \\n {6}\\n {7} ",\n "{{text.updated}}",\n " {{item.name}} ",\n "IF CONTENT",\n "abc",\n "IF CONTENT 2",\n "<template>",\n "{{text.updated}}"\n ],\n "item-update3:text": [\n "updated: {1}, by: ",\n "{{text.updated}}"\n ],\n "item-update3:text_2": " xxx ",\n "item-update3:template_3:b": "IF",\n "item-update3:template_3:b_1": "CONTENT",\n "item-update3:b_4": "abc",\n "item-update3:template_5:text": "IF CONTENT 2",\n "item-update3:text_6": " hello ",\n "item-update4:text": [\n "updated: {1}, by: ",\n "{{text.updated}}"\n ],\n "item-update4:template_1:text": [\n " {1} = {2} ",\n "{{item.name}}",\n "{{text.updated}}"\n ],\n "item-update4:text_2": " xxx ",\n "item-update4:template_3:b": "IF CONTENT",\n "item-update4:b_4": "abc",\n "item-update4:template_5:text": "IF CONTENT 2",\n "item-update4:text_6": " hello ",\n "paragraph": [\n "A paragraph with \\n {1}\\n is converted to \\n {2}. ",\n "{{item}} ",\n "<i18n-format>"\n ],\n "paragraph2:text": "A paragraph with deep ",\n "paragraph2:text_2": " is ",\n "paragraph2:b_3": "not",\n "paragraph2:text_4": " converted to ",\n "paragraph2:code_5": "<i18n-format>",\n "paragraph2:text_6": ". ",\n "authors": [\n {\n "name": "Joe"\n },\n {\n "name": "Alice"\n }\n ],\n "updated": "Jan 1st, 2016",\n "parameters": [\n "parameter 1",\n "parameter 2"\n ]\n}',"/edge-case/empty-element.json":"{}","/edge-case/locales/advanced-binding-element.fr.json":'{\n "meta": {},\n "model": {\n "aria-attributes": {\n "title": "fr tooltip text",\n "aria-label": "fr aria label text",\n "aria-valuetext": "fr aria value text"\n }\n },\n "annotated-format": [\n "{{tr(status,text.statusMessageFormats)}}",\n "{{parameter}}",\n "fr string parameter"\n ],\n "span_5": [\n "fr {1} {2}",\n "{{text.defaultValue}}",\n "{{text.defaultValue}}"\n ],\n "statusMessages": {\n "ok": "fr healthy status",\n "busy": "fr busy status",\n "error": "fr error status",\n "default": "fr unknown status"\n },\n "defaultValue": "fr default value",\n "statusMessageFormats": {\n "ok": "fr healthy status",\n "busy": "fr busy status with {2}",\n "error": "fr error status with {1} and {2}",\n "default": "fr unknown status"\n },\n "nodefault": {\n "ok": "fr ok status"\n }\n}',"/edge-case/locales/complex-compound-binding-element.fr.json":'{\n "meta": {},\n "model": {},\n "item-update2:text": [\n "fr updated: {1}, by: ",\n "{{text.updated}}"\n ],\n "item-update2:text_2": "fr xxx ",\n "item-update2:template_3:span:b": "fr IF CONTENT",\n "item-update2:b_4": "fr abc",\n "item-update2:template_5:text": "fr IF CONTENT 2",\n "item-update2:text_6": "fr hello ",\n "item-update": [\n "fr updated: {1}, by: \\n {2}\\n xxx\\n {3}\\n {4}\\n {5}\\n hello\\n \\n {6}\\n {7} ",\n "{{text.updated}}",\n " {{item.name}} ",\n "fr IF CONTENT",\n "fr abc",\n "fr IF CONTENT 2",\n "<template>",\n "{{text.updated}}"\n ],\n "item-update3:text": [\n "fr updated: {1}, by: ",\n "{{text.updated}}"\n ],\n "item-update3:text_2": "fr xxx ",\n "item-update3:template_3:b": "fr IF",\n "item-update3:template_3:b_1": "fr CONTENT",\n "item-update3:b_4": "fr abc",\n "item-update3:template_5:text": "fr IF CONTENT 2",\n "item-update3:text_6": "fr hello ",\n "item-update4:text": [\n "fr updated: {1}, by: ",\n "{{text.updated}}"\n ],\n "item-update4:template_1:text": [\n "fr {1} = {2} ",\n "{{item.name}}",\n "{{text.updated}}"\n ],\n "item-update4:text_2": "fr xxx ",\n "item-update4:template_3:b": "fr IF CONTENT",\n "item-update4:b_4": "fr abc",\n "item-update4:template_5:text": "fr IF CONTENT 2",\n "item-update4:text_6": "fr hello ",\n "paragraph": [\n "fr A paragraph with \\n {1}\\n is converted to \\n {2}. ",\n "{{item}} ",\n "fr <i18n-format>"\n ],\n "paragraph2:text": "fr A paragraph with deep ",\n "paragraph2:text_2": "fr is ",\n "paragraph2:b_3": "fr not",\n "paragraph2:text_4": "fr converted to ",\n "paragraph2:code_5": "fr <i18n-format>",\n "paragraph2:text_6": "fr . ",\n "authors": [\n {\n "name": "fr Joe"\n },\n {\n "name": "fr Alice"\n }\n ],\n "updated": "fr Jan 1st, 2016",\n "parameters": [\n "fr parameter 1",\n "fr parameter 2"\n ]\n}',"/edge-case/locales/empty-element.fr.json":"{}","/fallback-text-element/fallback-text-element.json":'{\n "meta": {},\n "model": {},\n "text": " outermost text at the beginning ",\n "h1_3": "outermost header 1",\n "text_4": " outermost text in the middle ",\n "span_5": "simple text without id",\n "span_6": "simple text without id 2",\n "label-1": "simple text with id",\n "label-2": "simple text with id 2",\n "div_9:span": "simple text within div",\n "div_9:span_1": "simple text within div 2",\n "div_9:div_2:div": "great grandchild text within div",\n "div_10:text": " simple text as the first element in div ",\n "div_10:span_1": "simple text within div",\n "div_10:text_2": " simple text in the middle of div ",\n "div_10:span_3": "simple text within div 2",\n "div_10:div_4:div": "great grandchild text within div",\n "div_10:text_5": " simple text at the last element in div ",\n "toplevel-div:span": "simple text within div",\n "toplevel-div:span_1": "simple text within div 2",\n "third-level-div": "great grandchild text within div",\n "second-level-div:div_1": "great grandchild text within div without id",\n "div_12:ul:li": "line item without id 1",\n "div_12:ul:li_1": "line item without id 2",\n "div_12:ul:li_2": "line item without id 3",\n "line-items:li": "line item with id 1",\n "line-items:li_1": "line item with id 2",\n "line-items:li_2": "line item with id 3",\n "p_13": [\n "A paragraph with {1} is converted to {2}.",\n "parameters",\n "<i18n-format>"\n ],\n "paragraph": [\n "A paragraph with {1} is converted to {2}.",\n "id",\n "<i18n-format>"\n ],\n "text_15": " outermost text at the end "\n}',"/fallback-text-element/locales/fallback-text-element.fr-CA.json":'{\n "model": {},\n "text": "fr-CA outermost text at the beginning ",\n "h1_3": "fr-CA outermost header 1",\n "text_4": "fr-CA outermost text in the middle ",\n "span_5": "fr-CA simple text without id",\n "span_6": "fr-CA simple text without id 2",\n "label-1": "fr-CA simple text with id",\n "label-2": "fr-CA simple text with id 2",\n "div_10:span_1": "fr-CA simple text within div",\n "toplevel-div:span": "fr-CA simple text within div",\n "toplevel-div:span_1": "fr-CA simple text within div 2",\n "third-level-div": "fr-CA great grandchild text within div",\n "second-level-div:div_1": "fr-CA great grandchild text within div without id",\n "p_13": [\n "fr-CA A paragraph with {1} is converted to {2}.",\n "fr-CA parameters",\n "fr-CA <i18n-format>"\n ],\n "paragraph": [\n "fr-CA A paragraph with {1} is converted to {2}.",\n "fr-CA id",\n "fr-CA <i18n-format>"\n ],\n "text_15": "fr-CA outermost text at the end "\n}\n',"/fallback-text-element/locales/fallback-text-element.fr.json":'{\n "model": {},\n "text": "fr outermost text at the beginning ",\n "h1_3": "fr outermost header 1",\n "text_4": "fr outermost text in the middle ",\n "span_5": "fr simple text without id",\n "span_6": "fr simple text without id 2",\n "label-1": "fr simple text with id",\n "label-2": "fr simple text with id 2",\n "toplevel-div:span": "fr simple text within div",\n "toplevel-div:span_1": "fr simple text within div 2",\n "third-level-div": "fr great grandchild text within div",\n "second-level-div:div_1": "fr great grandchild text within div without id",\n "div_12:ul:li": "fr line item without id 1",\n "div_12:ul:li_1": "fr line item without id 2",\n "div_12:ul:li_2": "fr line item without id 3",\n "line-items:li": "fr line item with id 1",\n "line-items:li_1": "fr line item with id 2",\n "line-items:li_2": "fr line item with id 3",\n "p_13": [\n "fr A paragraph with {1} is converted to {2}.",\n "fr parameters",\n "fr <i18n-format>"\n ],\n "paragraph": [\n "fr A paragraph with {1} is converted to {2}.",\n "fr id",\n "fr <i18n-format>"\n ],\n "text_15": "fr outermost text at the end "\n}\n',"/locales/compound-binding-dom-bind.fr.json":'{\n "model": {},\n "text": [\n "fr outermost text at the beginning with compound {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "h1_3": [\n "fr outermost header 1 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "text_4": [\n "fr outermost text in the middle with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "span_5": [\n "fr simple text without id with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "span_6": [\n "fr simple text without id 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "label-1": [\n "fr simple text with id and {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "label-2": [\n "fr simple text with id and {1} and {2} variables 2",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_9:span": [\n "fr simple text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_9:span_1": [\n "fr simple text within div with {1} and {2} variables 2",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_9:div_2:div": [\n "fr great grandchild text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:text": [\n "fr simple text as the first element in div with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:span_1": [\n "fr simple text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:text_2": [\n "fr simple text in the middle of div with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:span_3": [\n "fr simple text within div with {1} and {2} variables 2",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:div_4:div": [\n "fr great grandchild text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_10:text_5": [\n "fr simple text at the last element in div with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ],\n "toplevel-div:span": [\n "fr simple text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "toplevel-div:span_1": [\n "fr simple text within div 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "third-level-div": [\n "fr great grandchild text within div with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "second-level-div:div_1": [\n "fr great grandchild text within div without id with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_12:ul:li": [\n "fr line item without id 1 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_12:ul:li_1": [\n "fr line item without id 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "div_12:ul:li_2": [\n "fr line item without id 3 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "line-items:li": [\n "fr line item with id 1 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "line-items:li_1": [\n "fr line item with id 2 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "line-items:li_2": [\n "fr line item with id 3 with {1} and {2} variables",\n "{{param1}}",\n "{{param2}}"\n ],\n "p_13": [\n "fr A paragraph with {1} is converted to {2}.",\n "{{param1}}",\n "{{param2}}"\n ],\n "paragraph": [\n "fr A paragraph with {1}, {2}, and {3} is converted to {4}.",\n "fr id",\n "{{param1}}",\n "{{param2}}",\n "fr <i18n-format>"\n ],\n "text_15": [\n "fr outermost text at the end with {1} and {2} variables ",\n "{{param1}}",\n "{{param2}}"\n ]\n}\n',"/locales/simple-attribute-dom-bind.fr.json":'{\n "model": {\n "standard-input": {\n "placeholder": "fr standard HTML5 attribute"\n },\n "outer-div:input_2": {\n "placeholder": "fr standard HTML5 attribute without id"\n },\n "paper-input-element": {\n "label": "fr paper-input label",\n "error-message": "fr paper-input error message",\n "placeholder": "fr paper-input placeholder"\n },\n "outer-div:paper-input_4": {\n "label": "fr paper-input label without id",\n "error-message": "fr paper-input error message without id",\n "placeholder": "fr paper-input placeholder without id"\n },\n "pie-chart": {\n "options": {\n "title": "fr Distribution of days in 2001H1"\n },\n "cols": [\n {\n "label": "fr Month",\n "type": "string"\n },\n {\n "label": "fr Days",\n "type": "number"\n }\n ],\n "rows": [\n [\n "fr Jan",\n 31\n ],\n [\n "fr Feb",\n 28\n ],\n [\n "fr Mar",\n 31\n ],\n [\n "fr Apr",\n 30\n ],\n [\n "fr May",\n 31\n ],\n [\n "fr Jun",\n 30\n ]\n ]\n },\n "column-chart": {\n "options": {\n "title": "fr Inventory"\n },\n "data": [\n [\n "fr Year",\n "fr Things",\n "fr Stuff"\n ],\n [\n "2004",\n 1000,\n 400\n ],\n [\n "2005",\n 1170,\n 460\n ],\n [\n "2006",\n 660,\n 1120\n ],\n [\n "2007",\n 1030,\n 540\n ]\n ]\n },\n "custom-attr": {\n "custom-text-attr1": "fr custom text attribute 1",\n "custom-text-attr2": "fr custom text attribute 2",\n "custom-text-attr3": "fr custom text attribute 3"\n },\n "selective-attr": {\n "custom-text-attr4": [\n "fr {1} custom-text-attr4 attribute with param {2} and param {3} {4}",\n "{{text.ordinary-div}}",\n "{{text.ordinary-div}}",\n "[[text.ordinary-div]]",\n "{{text.ordinary-div}}"\n ],\n "custom-text-attr5": [\n "[[text.ordinary-div]]",\n "fr custom-text-attr5 attribute with param ",\n "{{or(\'\',text.ordinary-div)}}",\n "fr and param ",\n "[[text.ordinary-div]]"\n ],\n "i18n-target": [\n "fr i18n-target attribute with param {1} and param {2}",\n "{{text.ordinary-div}}",\n "[[text.ordinary-div]]"\n ],\n "i18n-target2": [\n "fr i18n-target2 attribute with param ",\n "{{or(\'\',text.ordinary-div)}}",\n "fr and param ",\n "[[text.ordinary-div]]"\n ]\n },\n "selective-attr2": {\n "i18n-target": "fr i18n-target attribute 2"\n },\n "selective-attr3": {\n "i18n-target6": "fr i18n-target6 attribute 2"\n },\n "selective-attr4": {\n "i18n-target6": "fr i18n-target6 attribute 3"\n },\n "json-data-id": {\n "attr1": "fr this attr1 is extracted",\n "i18n-target-attr": "fr this attribute is also extracted"\n },\n "template_2:json-data_1": {\n "attr1": "fr this attr1 without id is extracted",\n "i18n-target-attr": "fr this attribute without id is also extracted"\n }\n },\n "ordinary-div": "fr text 1"\n}\n', "/locales/simple-text-dom-bind.fr.json":'{\n "model": {},\n "text": "fr outermost text at the beginning ",\n "h1_3": "fr outermost header 1",\n "text_4": "fr outermost text in the middle ",\n "span_5": "fr simple text without id",\n "span_6": "fr simple text without id 2",\n "label-1": "fr simple text with id",\n "label-2": "fr simple text with id 2",\n "div_9:span": "fr simple text within div",\n "div_9:span_1": "fr simple text within div 2",\n "div_9:div_2:div": "fr great grandchild text within div",\n "div_10:text": "fr simple text as the first element in div ",\n "div_10:span_1": "fr simple text within div",\n "div_10:text_2": "fr simple text in the middle of div ",\n "div_10:span_3": "fr simple text within div 2",\n "div_10:div_4:div": "fr great grandchild text within div",\n "div_10:text_5": "fr simple text at the last element in div ",\n "toplevel-div:span": "fr simple text within div",\n "toplevel-div:span_1": "fr simple text within div 2",\n "third-level-div": "fr great grandchild text within div",\n "second-level-div:div_1": "fr great grandchild text within div without id",\n "div_12:ul:li": "fr line item without id 1",\n "div_12:ul:li_1": "fr line item without id 2",\n "div_12:ul:li_2": "fr line item without id 3",\n "line-items:li": "fr line item with id 1",\n "line-items:li_1": "fr line item with id 2",\n "line-items:li_2": "fr line item with id 3",\n "p_13": [\n "fr A paragraph with {1} is converted to {2}.",\n "fr parameters",\n "fr <i18n-format>"\n ],\n "paragraph": [\n "fr A paragraph with {1} is converted to {2}.",\n "fr id",\n "fr <i18n-format>"\n ],\n "text_15": "fr outermost text at the end "\n}\n',"/multiple-case/item-element.json":'{\n "meta": {},\n "model": {},\n "label": "A"\n}',"/multiple-case/locales/item-element.fr.json":'{\n "meta": {},\n "model": {},\n "label": "fr A"\n}',"/multiple-case/locales/multiple-element.fr.json":'{\n "meta": {},\n "model": {}\n}',"/multiple-case/multiple-element.json":'{\n "meta": {},\n "model": {}\n}',"/plural-gender-element/locales/plural-gender-element.fr.json":'{\n "model": {},\n "compound-format-text": [\n {\n "0": "fr You ({3}) gave no gifts.",\n "1": {\n "male": "fr You ({3}) gave him ({4}) {5}.",\n "female": "fr You ({3}) gave her ({4}) {5}.",\n "other": "fr You ({3}) gave them ({4}) {5}."\n },\n "one": {\n "male": "fr You ({3}) gave him ({4}) and one other person {5}.",\n "female": "fr You ({3}) gave her ({4}) and one other person {5}.",\n "other": "fr You ({3}) gave them ({4}) and one other person {5}."\n },\n "other": "fr You ({3}) gave them ({4}) and {1} other people gifts."\n },\n "{{recipients.length - 1}}",\n "{{recipients.0.gender}}",\n "{{sender.name}}",\n "{{recipients.0.name}}",\n "fr a gift"\n ]\n}\n',"/plural-gender-element/plural-gender-element.json":'{\n "meta": {},\n "model": {},\n "compound-format-text": [\n {\n "0": "You ({3}) gave no gifts.",\n "1": {\n "male": "You ({3}) gave him ({4}) {5}.",\n "female": "You ({3}) gave her ({4}) {5}.",\n "other": "You ({3}) gave them ({4}) {5}."\n },\n "one": {\n "male": "You ({3}) gave him ({4}) and one other person {5}.",\n "female": "You ({3}) gave her ({4}) and one other person {5}.",\n "other": "You ({3}) gave them ({4}) and one other person {5}."\n },\n "other": "You ({3}) gave them ({4}) and {1} other people gifts."\n },\n "{{recipients.length - 1}}",\n "{{recipients.0.gender}}",\n "{{sender.name}}",\n "{{recipients.0.name}}",\n "a gift"\n ]\n}',"/preference/preference-element.json":'{\n "meta": {},\n "model": {}\n}',"/simple-attribute-dom-bind.json":'{\n "meta": {},\n "model": {\n "standard-input": {\n "placeholder": "standard HTML5 attribute"\n },\n "outer-div:input_2": {\n "placeholder": "standard HTML5 attribute without id"\n },\n "paper-input-element": {\n "label": "paper-input label",\n "error-message": "paper-input error message",\n "placeholder": "paper-input placeholder"\n },\n "outer-div:paper-input_4": {\n "label": "paper-input label without id",\n "error-message": "paper-input error message without id",\n "placeholder": "paper-input placeholder without id"\n },\n "pie-chart": {\n "options": {\n "title": "Distribution of days in 2001H1"\n },\n "cols": [\n {\n "label": "Month",\n "type": "string"\n },\n {\n "label": "Days",\n "type": "number"\n }\n ],\n "rows": [\n [\n "Jan",\n 31\n ],\n [\n "Feb",\n 28\n ],\n [\n "Mar",\n 31\n ],\n [\n "Apr",\n 30\n ],\n [\n "May",\n 31\n ],\n [\n "Jun",\n 30\n ]\n ]\n },\n "column-chart": {\n "options": {\n "title": "Inventory"\n },\n "data": [\n [\n "Year",\n "Things",\n "Stuff"\n ],\n [\n "2004",\n 1000,\n 400\n ],\n [\n "2005",\n 1170,\n 460\n ],\n [\n "2006",\n 660,\n 1120\n ],\n [\n "2007",\n 1030,\n 540\n ]\n ]\n },\n "custom-attr": {\n "custom-text-attr1": "custom text attribute 1",\n "custom-text-attr2": "custom text attribute 2",\n "custom-text-attr3": "custom text attribute 3"\n },\n "selective-attr": {\n "custom-text-attr4": [\n "{1} custom-text-attr4 attribute with param {2} and param {3} {4}",\n "{{text.ordinary-div}}",\n "{{text.ordinary-div}}",\n "[[text.ordinary-div]]",\n "{{text.ordinary-div}}"\n ],\n "custom-text-attr5": [\n "[[text.ordinary-div]]",\n " custom-text-attr5 attribute with param ",\n "{{or(\'\',text.ordinary-div)}}",\n " and param ",\n "[[text.ordinary-div]]"\n ],\n "i18n-target": [\n "i18n-target attribute with param {1} and param {2}",\n "{{text.ordinary-div}}",\n "[[text.ordinary-div]]"\n ],\n